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:
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.
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.
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:
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.
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.
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
promotefornecerá um link para o pull request no repositório de inventário. O nome do pull request tem o formatopromote <Inventory Source Environment> to <Inventory Target Environment>.
-
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.
-
Preencha os campos na solicitação de pull e clique em salvar.
-
Adicione o rótulo
EMERGENCYao seu PR se alguma verificação de conformidade no CI falhar e você quiser continuar com a implementação -
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 ).
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
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
Mergeno 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:
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.
