Configure uma cadeia de ferramentas de CD para o Infrastructure as Code

Este tutorial é a parte 3 de uma série de três tutoriais em que você aprende as melhores práticas do IBM Cloud® DevSecOps usando uma implementação de referência completa que está disponível como um serviço e é alimentada pelo IBM Cloud® Continuous Delivery. Na parte 3 desta série de tutoriais, você usa o modelo de toolchain para implantação contínua (CD) com práticas recomendadas relacionadas à segurança e conformidade em DevSecOps.

Antes de Iniciar

Antes de começar a parte 3 desta série de tutoriais, certifique-se de que você concluiu os seguintes pré-requisitos:

  1. Conclua a Parte 1: Configure os pré-requisitos.
  2. Conclua a Parte 2: Configure uma cadeia de ferramentas de CI para Infraestrutura como Código(Terraform).
  3. Assista ao vídeo Getting started with DevSecOps in IBM Cloud- Part 2.

CD - Implemente um aplicativo seguro com as práticas do DevSecOps

A cadeia de ferramentas de CD do DevSecOps contém apenas um pipeline para implantação contínua. Ela implementa as melhores práticas a seguir:

  • automação do Gerenciamento de mudanças para ajudar desenvolvedores, aprovadores e auditores a rastrear implementações da perspectiva de conformidade.
  • Cria um resumo de evidências a partir das evidências coletadas no pipeline de CI.
  • Cria uma solicitação de mudança no repositório de gerenciamento de mudanças baseado em Git Repos and Issue Tracking e adiciona evidências de implementação a ele.
  • Usa o repositório de inventário para promover artefatos criados para ambientes de implantação como staging e prod.
  • Verifica o CR e faz a aprovação automática se todas as verificações forem aprovadas.
  • Se o CR for aprovado ou emergencial, a cadeia de ferramentas implementará a imagem do inventário para a produção.

Visão geral da instalação guiada para a cadeia de ferramentas de CD

Qualquer um dos métodos neste tutorial leva você para a experiência de instalação guiada. Você é guiado pelo processo de configuração da cadeia de ferramentas e são apresentadas as opções de configuração recomendadas necessárias para criar a cadeia de ferramentas.

Um indicador de progresso mostra as etapas para concluir a configuração. Você pode usar o indicador de progresso para navegar para uma etapa anterior. As opções de configuração para a etapa atual são exibidas na área principal da página.

DevSecOps Página de boas-vindas da cadeia de ferramentas do Continuous Deployment Figura 1.
DevSecOps Página de boas-vindas da cadeia de ferramentas do Continuous Deployment

Para avançar para a próxima etapa, clique em Continuar. Será possível avançar para a próxima etapa apenas quando a configuração para a etapa atual for completa e válida. É possível navegar até a etapa anterior clicando em Voltar.

Algumas etapas incluem a opção Alternar para configuração avançada. Por padrão, essas etapas apresentam a configuração mínima necessária. No entanto, os usuários avançados que precisam de um controle mais refinado podem clicar no botão Alternar para configuração avançada para revelar todas as opções da integração subjacente.

DevSecOps Alternância de configuração avançada Figura 2.
DevSecOps Alternância de configuração avançada

Quando todas as etapas forem concluídas com êxito, você criará a cadeia de ferramentas clicando em Create (Criar ) na etapa Summary (Resumo ).

Sempre é possível voltar para etapas anteriores no instalador guiado. O instalador da cadeia de ferramentas retém todas as definições de configuração das etapas sucessivas.

Inicie a configuração da cadeia de ferramentas de CD

Inicie a configuração da cadeia de ferramentas de CD usando uma das opções a seguir:

  • Clique em Create toolchain.

    Criar cadeia de ferramentas

  • No console IBM Cloud, clique no ícone Menu Menu e selecione DevOps. Na página Cadeias de ferramentas, clique em Criar cadeia de ferramentas. Na página Criar uma cadeia de ferramentas, clique em CD-Develop with DevSecOps practices.

Configure o nome e a região da cadeia de ferramentas do CD

Revise as informações padrão para as configurações da cadeia de ferramentas. O nome da cadeia de ferramentas as identifica em IBM Cloud. Certifique-se de que o nome da cadeia de ferramentas seja exclusivo dentro de suas cadeias de ferramentas para a mesma região e grupo de recursos no IBM Cloud.

Escolha a cadeia de ferramentas de CI associada no menu suspenso para copiar parte da configuração de CI para ajudar na configuração dessa cadeia de ferramentas de CD.

DevSecOps cadeia de ferramentas de CI associada Figura 3.
DevSecOps cadeia de ferramentas de CI associada

Aviso: Essa ação pode substituir alguns dos valores que você já inseriu.

Configurar integrações de ferramentas de CD

Se você já tiver vinculado a uma cadeia de ferramentas de CI existente na etapa de Boas-vindas, os nomes dos repositórios relacionados a aplicativos usados nessa cadeia de ferramentas serão preenchidos previamente. Revise as URLs do repositório e, em seguida, continue para os próximos passos.

Repositórios relacionados ao aplicativo

Se você quiser configurar sua cadeia de ferramentas de CD do zero, configure esses repositórios durante a criação da cadeia de ferramentas de CI e, em seguida, use-os ou vincule-os aqui.

Para obter o respectivo URL, acesse o pipeline de CI e selecione o respectivo cartão de ferramenta. Clique com o botão direito do mouse no cartão de ferramenta e selecione Copiar endereço do link.

  • Inventário: O repositório de inventário registra detalhes de artefatos que são criados pelos pipelines de CI e CD. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory
  • Problemas: O repositório de problemas registra os problemas encontrados enquanto o pipeline de CI está em execução. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
  • Evidência: toda evidência de conformidade bruta que pertence ao aplicativo é coletada aqui. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.

Atualmente, o conjunto de ferramentas suporta apenas ligações a repositórios Git Repos and Issue Tracking hospedados em IBM.

Inventário

Repositório URL: URL do repositório de inventário que está configurado em sua cadeia de ferramentas de CI, conforme capturado na etapa anterior.

Problemas

Repositório URL: URL do repositório de problemas que está configurado em sua cadeia de ferramentas de CI, conforme capturado na etapa anterior.

Configuração do pipeline

O repositório de configuração de pipeline contém arquivos YAML e scripts que são necessários para implementação, testes e outras tarefas customizadas.

Para este tutorial, o repositório de configuração do pipeline é o mesmo que o definido para o DevSecOps CI para Infraestrutura como Código ( IaC ). Selecione Usar repositório de configuração de implantação existente e selecione o repositório que é usado para a configuração do pipeline da cadeia de ferramentas de CI.

Para obter mais informações sobre os repositórios do Git, consulte Configuração do Git Repos and Issue Tracking. Para obter mais informações sobre scripts personalizáveis, consulte Scripts personalizados.

Segredos

Várias ferramentas nesse conjunto de ferramentas e, possivelmente, em seus scripts personalizáveis, exigem segredos para acessar recursos privilegiados. Uma chave de API do IBM Cloud é um exemplo de tal segredo. Armazene esses segredos com segurança em uma ferramenta de gerenciamento de segredos recomendada pela IBM, como IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager, ou HashiCorp Vault. A ferramenta de gerenciamento de segredos pode ser integrada à cadeia de ferramentas para que você possa facilmente fazer referência aos segredos em seu pipeline Tekton.

Este tutorial usa o site IBM Cloud® Secrets Manager como cofre de segredos.

Armazenamento de evidência

O armário de evidências armazena evidências de todas as tarefas que o pipeline executa. Essa evidência é coletada pelo pipeline durante a execução do pipeline.

Selecione o bucket Cloud Object Storage (COS) configurado para sua cadeia de ferramentas de integração contínua (CI). Certifique-se de que o mesmo bucket COS seja usado nas cadeias de ferramentas de Integração Contínua (CI), Continuous Delivery (CD) e Conformidade Contínua (CC).

É uma prática recomendada usar um bucket Cloud Object Storage como um armário de evidências para armazenar todas as evidências e artefatos coletados durante a execução do pipeline.

Para obter mais informações sobre o armazenamento de evidências, consulte Evidência.

Evidência

Repositório URL: URL do repositório do armário de evidências que está configurado em sua cadeia de ferramentas de CI, conforme capturado na etapa anterior.

Nuvem Object Storage balde

Para usar esse recurso, você deve ter uma instância do Cloud Object Storage e um bucket. Clique em Usar buckets do Cloud Object Storage como um armazenamento de evidências para criar uma instância do Cloud Object Storage. Para obter mais informações sobre como configurar um bucket que pode atuar como um armazenamento de evidências de conformidade, consulte Configurando o Cloud Object Storage para armazenamento de evidências.

  • Os campos de instância do Cloud Object Storage, nome do Bucket e ponto de extremidade do Cloud Object Storage são preenchidos automaticamente.
  • Digite a chave da API do ID do serviço
    • Preferencialmente: Uma chave existente pode ser importada de um cofre de segredos clicando no ícone da chave.
    • Uma chave existente pode ser copiada e colada.

O campo endpoint é opcional. Selecione ou forneça o ponto final durante a configuração da cadeia de ferramentas ou durante a execução do pipeline.

Destino de implementação

Para o caso de uso DevSecOps para Terraform, escolha a opção de implantação personalizada.

Alvo personalizado

Essa opção requer a chave da API IBM Cloud que é usada nos scripts de implementação do pipeline. Os scripts de implantação fornecidos usam o Schematics para fazer upload do artefato de configuração do Terraform para o espaço de trabalho Schematics e usam os comandos Schematics CLI plan e apply para entregar a configuração do Terraform em IBM Cloud.

Chave de API da IBM Cloud

A chave da API interage com a ferramenta IBM Cloud CLI em várias tarefas:

  • Preferencial: Importar uma chave existente de um cofre de segredos clicando no ícone da chave.
  • Copiar e colar uma chave existente.
  • Crie uma chave clicando em New +.

Salve a chave de API recém-gerada em um cofre de segredos.

Gerenciamento de solicitação de mudança

Use um repositório do IBM Cloudhospedado Git Repos and Issue Tracking para gerenciar solicitações de mudança. Para obter mais informações, consulte Automação de gerenciamento de mudanças.

DevOps cadeia de ferramentas de insights

Vincule uma instância existente do DevOps insights de outra cadeia de ferramentas a esse pipeline para que todos os registros de compilação, implantação e teste dos pipelines da cadeia de ferramentas de CI e CD sejam coletados no mesmo local.

A cadeia de ferramentas de CD pode publicar os registros de implantação em uma instância existente do DevOps insights. Para ativar esse recurso, forneça a ID da cadeia de ferramentas que contém a instância existente do DevOps Insights selecionando-a no menu suspenso DevOps insights toolchain ID.

Ferramentas opcionais

Slack

Configure a ferramenta Slack para receber notificações sobre seus eventos do pipeline de PR/CI:

  • Webhook do Slack
  • Preferencialmente: Um webhook existente pode ser importado de um cofre de segredos clicando no ícone de chave.
  • Copie e cole um webhook existente.
  • Canal do Slack: publique uma mensagem em um Slack existente.
  • Nome da equipe do Slack: a frase antes de . slack.com em nossa equipe URL. Por exemplo, se a sua equipe URL for https://team.slack.com, o nome da equipe será team.
  • Notificações automatizadas do Slack: Personalize sua seleção escolhendo os eventos para os quais você deseja receber notificações.

Você pode adicionar a ferramenta Slack após a criação da cadeia de ferramentas.

Depois de criar sua cadeia de ferramentas, alterne o envio de notificações com a propriedade de ambiente slack-notifications em seu pipeline de CD (0 = desativado, 1 = ativado)

Crie a cadeia de ferramentas de CD

Na página Summary (Resumo ), clique em Create (Criar ) e aguarde até que a cadeia de ferramentas seja criada.

Configure as integrações individuais da cadeia de ferramentas depois que o pipeline for criado.

DevSecOps CD Toolchain Created Figura 4.
DevSecOps Cadeia de ferramentas de CD criada

Explore a cadeia de ferramentas de CD

Agora que a cadeia de ferramentas de CD foi criada, clique no cartão cd-pipeline para abrir e executar o Pipeline de promoção.

Execute o pipeline de promoção

Certifique-se de que o pipeline de CI foi executado com êxito antes de executar o pipeline de promoção.

O Pipeline de Promoção cria uma Solicitação Pull com o conteúdo do inventário na ramificação do Ambiente de Origem do Inventário (por exemplo: principal) visando à ramificação do Ambiente de Destino do Inventário (por exemplo: preparação ou produção).

  • No painel do cd-pipeline, clique em Executar pipeline e selecione o Acionador de promoção manual. Clique em Run (Executar ) para acionar o pipeline.
  • Aguarde a conclusão da execução do Pipeline de promoção e verifique o registro de execução.
  • Depois que o pipeline de promoção for concluído com êxito, o registro da tarefa promote fornecerá um link para o pull request no repositório de inventário. O nome do pull request tem o formato promote <Inventory Source Environment> to <Inventory Target Environment>.
  1. Abra o pull request em seu navegador com o link fornecido no registro. Preencha os detalhes nas seções a seguir:

    • Prioridade: (obrigatório) Uma das seguintes opções: Crítica, Alta, Moderada, Baixa, Planejamento.
    • Change Request assignee (Responsável pela solicitação de alteração ): (obrigatório) ID de e-mail do responsável.
    • Descrição adicional: Descrição das alterações no aplicativo.
    • Objetivo: Objetivo das alterações feitas no aplicativo.
    • Explicação do impacto: Impacto da alteração no comportamento ou no ambiente do aplicativo.
    • Plano de Backout: Steps para recuar se houver uma falha de implementação.
  2. Preencha os campos na solicitação de pull e clique em salvar.

  3. Adicione o rótulo EMERGENCY ao seu PR se alguma verificação de conformidade no CI falhar e você quiser continuar com a implementação

  4. Mescle a solicitação de pull a partir de Git Repos and Issue Tracking.

Os detalhes do pull request são usados pelo pipeline de CD para criar uma solicitação de alteração no repositório Change Request Management durante a execução do pipeline de CD.

Configurar o pipeline de CD

variáveis do terraform

Para este tutorial, especifique o nome da instância de proteção de chave a ser criada no ambiente de produção.

Para fazer isso, selecione Environment Properties (Propriedades do ambiente ) no cd-pipeline e clique em Add (Adicionar ).

Configuração do pipeline de CD
Figura 5. Configuração do pipeline de CD

Adicione uma propriedade do tipo Text Value e nomeie-a como TF_VAR_key_protect_instance. Defina um valor significativo que indique a entrega ao ambiente de produção, como key-protect-production-202210191453. O valor dessa propriedade de ambiente é injetado como o valor da variável de configuração key_protect_instance terraform.

Você também deve configurar o provedor IBM Cloud para o Terraform com o ibmcloud_api_key apropriado que se autentica com o IBM Cloud, conforme descrito em Configurando o plug-in do provedor IBM Cloud

Adicione uma propriedade do tipo Secure Value e nomeie-a como TF_VAR_ibmcloud_api_key. Defina o valor como a chave de API a ser usada para a criação de recursos do IBM Cloud.

A amostra usada neste tutorial espera um resource_group para criar a instância KeyProtect. O nome padrão de resource_group é Default. Se isso não for apropriado para sua conta, substitua a variável padrão resource_group no arquivo variables.tf ou especifique o valor da variável resource_group a ser usado definindo a propriedade de ambiente TF_VAR_resource_group como o nome do grupo de recursos apropriado.

Ramificação de configuração do pipeline

A ramificação do repositório de configuração do pipeline é definida como master nas propriedades do ambiente do CD Pipeline por padrão. Altere a ramificação para main para este tutorial.

Para fazer isso, selecione Environment Properties (Propriedades do ambiente ) no cd-pipeline e clique em edit para alterar o valor para main

CD Ramo de configuração do pipeline
Figura 6. CD Filial de configuração do pipeline

Execute o pipeline de entrega contínua

Inicie um pipeline de CD de uma das seguintes maneiras:

  • Preferencial: acionar o pipeline de CD manualmente.
  • Opcional: automaticamente após cada ação Merge no Repositório de Inventário. Um acionador Git Repos and Issue Tracking é configurado para acionar o CD Pipeline automático, mas está desativado por padrão.

Você também pode acionar o pipeline de CD manualmente a qualquer momento, mas se não houver alterações desde a última implantação bem-sucedida, o pipeline de CD será interrompido antecipadamente porque não há nada para implantar. Você pode adicionar e usar force-redeploy variável para reerun o CD sem alterações de código.

Uma execução bem-sucedida do pipeline de CD é semelhante a isto:

DevSecOps Pipeline de CD bem-sucedido Figura 7.
DevSecOps Sucesso no pipeline de CDs

Após uma execução bem-sucedida do pipeline de CD, você poderá encontrar o serviço de instância KeyProtect na lista de recursos.

KeyProtect instância de serviço criada Figura 8.
KeyProtect instância de serviço criada