Configuração dos pipelines de implantação contínua da Tekton com DevSecOps

Com este tutorial, você pode configurar um pipeline de implantação contínua (CD) e um conjunto de ferramentas que seguem as práticas recomendadas de conformidade.

Antes de Iniciar

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

O serviço Continuous Delivery fornece modelos que o orientam na configuração da cadeia de ferramentas e criam processos em uma ordem lógica. Um indicador de progresso mostra as etapas para concluir a configuração. Siga as etapas para acessar o modelo da cadeia de ferramentas de CI.

  1. No console IBM Cloud, clique no ícone Menu Ícone do menu > Automação da plataforma > Cadeias de ferramentas.
  2. Na página Cadeias de ferramentas, clique em Criar cadeia de ferramentas.
  3. Clique no bloco CD-Develop with DevSecOps practices.

Definir as configurações da cadeia de ferramentas de CI

A página Bem-vindos resume a finalidade da cadeia de ferramentas, juntamente com indicadores para a documentação e materiais relacionados.

  1. Clique em Iniciar.

  2. Digite um Nome da cadeia de ferramentas em sua cadeia de ferramentas para a mesma região e grupo de recursos no 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.

  3. Selecione uma região na lista suspensa.

    A região da cadeia de ferramentas pode ser diferente da região de cluster e registro.

  4. Selecione um grupo de recursos na lista suspensa.

  5. 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. Você sempre pode clicar em Voltar para visualizar as etapas anteriores do instalador guiado. O instalador da cadeia de ferramentas retém todas as definições de configuração das etapas sucessivas.

    Algumas etapas incluem um botão de alternância Alternar para configuração avançada. Por padrão, essas etapas apresentam a configuração mínima. 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 as opções da integração subjacente.

Configurar as integrações da ferramenta de CD

A integração de ferramentas de CD abrange a configuração das várias integrações de ferramentas e serviços que a cadeia de ferramentas de CD usa. Se você usar o modelo de cadeia de ferramentas de pipeline de CI para configurar seu processo de CI, consulte sua cadeia de ferramentas de CI e copie os nomes dos repositórios usados nessa cadeia de ferramentas.

Repositórios relacionados ao aplicativo

Se você quiser configurar sua cadeia de ferramentas de CI do zero, configure esses repositórios durante a criação da cadeia de ferramentas de CI.

Inventário
As informações de implantação são rastreadas usando esse repositório. Para cada execução bem-sucedida do pipeline de CI, o pipeline de CD cria uma nova ramificação nomeada como o número CR criado e mescla com o mestre após a conclusão da implantação. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory.
Problemas
Armazena os problemas sobre incidentes que ocorrem durante o processo de compilação e implantação. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
Evidência
Coleta todas as evidências brutas de conformidade que pertencem ao aplicativo. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.
Cadeia de ferramentas
As definições de pipeline do tekton, como pipelines, acionadores e ouvintes, são armazenadas nesse repositório. Por exemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain.

Depois de capturar os nomes dos repositórios da cadeia de ferramentas de CI, prossiga com Guided Setup para iniciar a criação da cadeia de ferramentas de CD. Durante o processo de configuração, para cada repositório, você pode fornecer o endereço URL a um repositório IBM hospedado Git Repos and Issue Tracking existente. Atualmente, a cadeia de ferramentas suporta a criação apenas de repositórios Git Repos and Issue Tracking. As versões futuras oferecem suporte para a criação de repositórios com GitHub, GitHub Enterprise (GHE) e outros provedores de SCM.

Inventário

O repositório de inventários registra detalhes de artefatos que são construídos pelas cadeias de ferramentas de CI. O comportamento padrão da cadeia de ferramentas é Usar inventário existente para vincular um repositório de inventário existente à cadeia de ferramentas. No momento, a cadeia de ferramentas oferece suporte à vinculação somente aos repositórios Git Repos and Issue Tracking existentes. Para obter mais informações, consulte Repositórios relacionados a aplicativos.

  1. Você pode aceitar a configuração padrão fornecida no modelo.
  2. Clique em Continuar.

Problemas

O repositório de problemas registra os problemas encontrados enquanto o pipeline de CI está em execução.

  1. Você pode aceitar a configuração padrão fornecida no modelo.
  2. Clique em Continuar

Configuração do pipeline

O repositório de configuração do pipeline contém arquivos YAML e scripts necessários para implantação, teste e outras tarefas personalizadas. Para obter mais informações sobre Git, consulte Configurando seus Git Repos and Issue Tracking. Para obter mais informações sobre scripts personalizáveis, consulte Scripts personalizados.

  1. Aceite as configurações padrão de Provedor de origem e Criar um novo repositório de configuração de implantação.

    A cadeia de ferramentas clona a amostra hello-compliance-deployment na sua organização Git. Para obter mais informações sobre repositórios Git, consulte Configurando seu Git Repos and Issue Tracking. Para obter mais informações sobre scripts personalizáveis, consulte Scripts personalizados.

  2. Digite um nome para o novo repositório.

  3. Clique em Continuar.

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 de forma segura em uma ferramenta de gerenciamento de segredos, 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 consultar facilmente os segredos no pipeline do Tekton.

Você pode usar o método de AppRole método de autenticação para ler valores secretos.

  1. Este tutorial usa IBM Cloud® Secrets Manager como o cofre para segredos. Os campos Região, Grupo de recursos e Nome do serviço são preenchidos automaticamente com base nas opções disponíveis. Clique nos indicadores suspensos para ver as outras opções.
  2. Digite seu Secrets Manager nome da instância.
  3. Selecione o tipo de autorização na lista suspensa.
  4. Clique em Continuar.

Armazenamento de evidência

O armário de evidências armazena todas as evidências e artefatos gerados pelo pipeline de CI do DevSecOps.

  1. Selecione um repositório de armário de evidências existente.
  2. Selecione o Repositório URL que foi criado quando você configurou a cadeia de ferramentas de integração contínua (CI). Para obter mais informações sobre o armazenamento de evidências, consulte Evidência.
  3. Alterne o controle deslizante do compartimento IBM Cloud Object Storage para armazenar todas as evidências no compartimento IBM Cloud Object Storage.
  4. Clique em Continuar.

Nuvem Object Storage Bucket

Você deve ter uma instância do IBM Cloud Object Storage e um bucket para servir como um armazenamento de evidências de conformidade.

  1. Os campos Cloud Object Storage instance, Bucket name e Cloud Object Storage endpoint são preenchidos automaticamente.
  2. Digite sua chave da API de 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.
  3. Clique em Continuar.

O campo endpoint é opcional. Recomenda-se selecionar ou fornecer o ponto de extremidade durante a configuração da cadeia de ferramentas ou durante a execução do pipeline.

Implementar

Configure o destino do inventário e o cluster Kubernetes onde o aplicativo está implantado:

  1. O padrão Nome do aplicativo é hello-compliance-app.

  2. Digite sua chave de API IBM Cloud. A chave da API é usada para interagir com a ferramenta IBM Cloud CLI em várias tarefas.

    • 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.
    • Uma nova chave pode ser criada a partir daqui, clicando em New +.

    A chave de API recém-gerada pode ser salva imediatamente em um cofre de segredos.

  3. Se a chave da API for válida e tiver acesso suficiente, o Container Registry, Container Registry namespace, Dev cluster region, Resource group, Cluster name, Cluster namespace são preenchidos automaticamente. Você pode alterar qualquer um desses campos para que correspondam à sua configuração.

  4. Clique em Continuar.

Chave de API da IBM Cloud

A chave de API é usada para interagir com a ferramenta ibmcloud CLI em várias tarefas.

  • Uma chave de API existente pode ser importada de uma instância de provedor de segredos existente criada como pré-requisitos (recomendado)
  • Uma chave existente pode ser copiada e colada (não recomendado)
  • Uma nova chave pode ser criada clicando em New +. Gere um api-key se você não tiver um. A chave de API recém-gerada pode ser imediatamente salva em uma instância de proteção de chaves existente.

Quando o campo API Key é preenchido, os campos relacionados ao registro e ao cluster são preenchidos automaticamente.

Ramificações de origem e destino do inventário

  1. Aceite a opção Cluster único (implantação baseada em push) para implantar seu aplicativo em destinos como Instância de servidor virtual ou personalizar o processo de implantação, use a opção Custom.
  2. Clique em Continuar para exibir a página do cluster.
  3. Insira o campo IBM Cloud API Key para interagir com a ferramenta CLI em várias tarefas. Observação Uma chave existente pode ser importada de um cofre de segredos clicando no ícone da chave.
  4. Verifique seus campos Região do cluster, Grupo de recursos, Nome do cluster e Namespace do cluster campos em que o cluster de destino é criado.
  5. Clique em Continuar.

Gerenciamento de solicitação de mudança

  1. Selecione o repositório IBM Cloud hospedado Git Repos and Issue Tracking para gerenciar as solicitações de alteração. Para obter mais informações, consulte Automatizando o gerenciamento de mudanças.
  2. Clique em Continuar.

DevOps Insights cadeia de ferramentas

Vincule uma instância existente de DevOps Insights de outra cadeia de ferramentas a esse pipeline, de modo que todos os registros de compilação, implantação e teste dos pipelines de cadeia de ferramentas de CI e CD possam ser coletados no mesmo local.

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

  1. Forneça sua DevOps Insights IBM Cloud chave de API.
  2. Aceitar a configuração padrão.
  3. Verifique sua Região, Grupo de recursos, DevOps Insights ID da cadeia de ferramentas, e DevOps Insights ambiente de destino campos em que seu ambiente de destino é criado.
  4. Clique em Continuar.

Ferramentas opcionais

Slack

Configure o Slack para receber notificações sobre suas solicitações pull ou eventos de pipeline de CI. Você também pode adicionar a ferramenta Slack após a criação da cadeia de ferramentas.

  1. Digite seu webhook do Slack. Para obter mais informações, consulte Slack webhook.
  2. Insira seu canal de folga para postar a mensagem.
  3. Digite o nome da equipe de reserva. Por exemplo, se a sua equipe URL https://team.slack.com, o nome da equipe é team.
  4. Escolher os eventos para os quais você deseja receber notificações para Notificações automatizadas do Slack.
  5. Clique em Continuar.

Trabalhador privado

A integração da ferramenta de trabalhador privado do pipeline de entrega se conecta a um ou mais trabalhadores privados que podem executar cargas de trabalho do pipeline de entrega isoladamente. Para obter mais informações, consulte Trabalhando com trabalhadores privados.

  1. Digite um Nome para o trabalhador privado do pipeline de entrega.
  2. Digite sua chave da API de 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.
  3. Clique em Continuar.

Crie a cadeia de ferramentas de CD

  1. Na página Resumo, clique em Criar.
  2. Aguarde a criação da cadeia de ferramentas para visualizar a página de resumo, conforme mostrado na captura de tela. Isso pode levar alguns minutos.

Cadeia de ferramentas de CDDevSecOps criada
' Cadeia de ferramentas de CD do DevSecOps criada

É possível configurar as integrações individuais da cadeia de ferramentas após a criação do pipeline.

Explore a cadeia de ferramentas de CD

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.

  1. Clique em cd-pipeline.

  2. Clique em Run para o pipeline Manual Promotion Trigger.

  3. Clique em Run (Executar ) para acionar o pipeline.

  4. Clique no pipeline Manual Promotion Trigger > #1promotion-pipelinerun. Aguarde a conclusão da execução do pipeline de promoção e verifique o registro de execução.

    O pipeline de promoção cria uma pull request com o conteúdo do inventário no ambiente de origem do inventário, como a ramificação master, direcionada à ramificação do ambiente de destino do inventário, como staging ou production.

  5. Depois que o pipeline de promoção for concluído com êxito, o registro de tarefas promote fornecerá um link para a pull request no repositório do inventário. O nome do pull request tem o formato promote <inventory source environment> to <inventory target environment>, por exemplo, promote master to prod

  6. Abra o pull request em seu navegador com o link fornecido no registro. Preencha os detalhes nas seções a seguir:

    • Prioridade: (obrigatório) Definido como Critical, High, Moderate, Low ou Planning.
    • Change Request assignee: (obrigatório) Email-ID do cessionário.
    • Descrição adicional: Descrição sobre as alterações no aplicativo.
    • Finalidade/objetivo: finalidade das alterações feitas no aplicativo.
    • Explicação do impacto: Impacto da alteração no comportamento ou no ambiente do aplicativo.
    • Plano de retrocesso: etapas para retroceder se houver uma falha na implementação.
  7. Preencha os campos na solicitação de pull e clique em salvar.

  8. Adicione o rótulo EMERGENCY ao seu pull request se alguma verificação de conformidade no CI falhar e você quiser continuar com a implantação

  9. Faça o merge do pull request de Git Repos and Issue Tracking.

Os detalhes da pull request são usados durante o pipeline de CD que é executado para criar e atualizar o repositório de solicitações de alteração.

Execute o pipeline de entrega contínua

Executar pipeline de promoção

  1. Certifique-se de que o pipeline de CI foi executado com êxito antes de executar o Promotion Pipeline.

  2. O pipeline de promoção cria um Pull Request com o conteúdo do inventário no ambiente de origem do inventário. Por exemplo, master ramo que tem como alvo o ramo do ambiente de destino do inventário, por exemplo, staging ou prod. Uma ramificação intermediária para o PR é criada, a qual pode ser descartada após a mesclagem do PR.

    Executando o pipeline de promoção
    ' Executando o pipeline de promoção

  3. Depois que o Promotion Pipeline for concluído com êxito, a tarefa promote fornecerá um link para o Pull Request mencionado anteriormente no repositório do inventário. O nome da pull request está no seguinte formato:

    promote <Inventory Source Environment> to <Inventory Target Environment>
    
  4. Abra a Pull Request em seu navegador com o link fornecido no log. Preencha as seções da seguinte forma:

    • Prioridade: (obrigatório) um de Crítico, Alto, Moderado, Baixo, Planejamento
    • Designado da solicitação de mudança: (obrigatório) email-id do designado
    • Descrição adicional: descrição sobre as mudanças no aplicativo
    • Propósito: propósito das mudanças que são feitas no aplicativo
    • Explicação do impacto: impacto da mudança no comportamento ou no ambiente do aplicativo
    • Plano de backout: Etapas para fazer backout se a implementação falhar
  5. Conclua os campos na Pull Request e salve.

  6. Mesclar o Pull Request do Git Repos and Issue Tracking.

Os detalhes do site Pull Request são usados pelo pipeline de CD para criar uma solicitação de alteração no repositório de gerenciamento de solicitações de alteração durante a execução do pipeline de CD.

Execute o pipeline de entrega contínua

Você pode acionar um pipeline de CD de forma manual ou automática. Você 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, pois não há nada para implantar. Um Git Repos and Issue Tracking acionador é configurado para acionar o pipeline automático de CD, mas é desativado por padrão e pode ser ativado após a primeira promotion.You pode adicionar e usar force-redeploy variável para executar novamente o CD sem alterações no código. Veja a captura de tela bem-sucedida do pipeline de CD do DevSecOps.

Promoção do manual do pipeline de CD doDevSecOps
Promoção do manual do pipeline de CD do DevSecOps

Promoção automática do pipeline de CD doDevSecOps
Promoção automática do pipeline de CD do DevSecOps

Também é possível acionar o CD Pipeline manualmente a qualquer momento, mas se não houver mudanças desde a última implementação bem-sucedida, o CD Pipeline não implementará nada novo.

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

Pipeline de CDDevSecOps bem-sucedido
' Pipeline de CD do DevSecOps bem-sucedido

Fluxo das tarefas no Pipeline de CD:

Tarefas de CDDevSecOps
Tarefas de CD do DevSecOps

Após uma execução bem-sucedida do pipeline de CD, você pode encontrar o aplicativo de amostra que está sendo executado no namespace prod. A URL do app pode ser localizada sob a subetapa run stage da etapa prod deployment da execução do Pipeline de CD. Use essa URL para verificar se o app está em execução.

aplicativo DevSecOps executando
Aplicativo DevSecOps executando