Configurando pipelines de integração contínua do Tekton com DevSecOps
Com este tutorial, você pode configurar o pipeline de integração contínua (CI) do Tekton e criar sua cadeia de ferramentas com conformidade.
Antes de Iniciar
-
Crie um cluster Kubernetes no site IBM Cloud® Kubernetes Service para implementar seu aplicativo (*).
-
Instale a IBM Cloud CLI em seu sistema operacional para interagir com os recursos IBM Cloud.
-
Crie uma chave de assinatura de artefato com a codificação adequada para assinar os artefatos do docker do seu aplicativo.
-
Crie segredos de cadeia de ferramentas para acessar diferentes integrações e protegê-las.
-
Configure o IBM Cloud® Object Storage como o repositório de evidências de conformidade para armazenar de forma duradoura as evidências das execuções do pipeline.
-
Valide suas IBM Cloud® Identity and Access Management permissões(IAM) que são atribuídas às integrações correspondentes.
(*) Kubernetes cluster: necessário somente durante a configuração - pode ser alterado após a criação do Toolchain. Não é obrigatório criar um cluster dedicado, especialmente se estiver usando um destino de implementação diferente (como CodeEngine ). Você pode inserir uma chave de API IBM Cloud que seja capaz de acessar qualquer cluster.
O pipeline de CI usa o serviço de assinatura de código GaraSign para assinar artefatos de compilação que exigem registro e integração. GaraSign usa a rede interna IBM. O acesso a essa rede está disponível em IBM trabalhadores compartilhados que têm acesso à rede. IBM podem ser usados trabalhadores compartilhados com acesso à rede interna do 9.X.
- Assista ao vídeo a seguir:
Inicie a configuração da cadeia de ferramentas de CI
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.
- No console IBM Cloud, clique no ícone Menu
do menu > Automação da plataforma > Cadeias de ferramentas.
- Na página Cadeias de ferramentas, clique em Criar cadeia de ferramentas.
- Confira o conceito de “Infraestrutura como Código ”.
- Clique no bloco CI - Desenvolva infraestrutura segura como código com práticas de DevSecOps.
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.
-
Clique em Iniciar.
-
Digite um Nome da cadeia de ferramentas em sua cadeia de ferramentas para a mesma região e grupo de recursos no IBM Cloud.
-
Selecione uma região na lista suspensa.
-
Selecione um grupo de recursos na lista suspensa.
-
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ê pode clicar em “Voltar” a qualquer momento para ver 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. Essas etapas apresentam, por padrão, a configuração mínima. No entanto, usuários avançados que precisam de um controle mais detalhado podem clicar no botão “Alternar para configuração avançada ” para exibir as opções da integração subjacente.
Configurar integrações de ferramentas de CI
Revise as configurações padrão e forneça as configurações definidas pelo usuário sempre que necessário para configurar a integração da ferramenta de CI. Configure vários repositórios durante a instalação. Você pode clonar os repositórios de amostra ou usar o seu próprio repositório, mas a cadeia de ferramentas suporta a vinculação apenas aos repositórios Git Repos and Issue Tracking existentes.
Aplicativo
Revise as informações padrão para as configurações da cadeia de ferramentas:
- Você pode aceitar a configuração padrão que é fornecida no modelo.
- Clique em Continuar
Inventário
O repositório de inventários registra detalhes de artefatos que são construídos pelas cadeias de ferramentas de CI.
- Você pode aceitar a configuração padrão que é fornecida no modelo.
- Clique em Continuar.
Problemas
O repositório de problemas registra os problemas encontrados enquanto o pipeline de CI está em execução.
- Você pode aceitar a configuração padrão que é fornecida no modelo.
- 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.
- 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.
- Digite seu Secrets Manager nome da instância.
- Selecione o tipo de autorização na lista suspensa.
- Clique em Continuar.
Armazenamento de evidência
O repositório de evidências armazena todas as evidências e artefatos que são gerados pelo pipeline de CI do DevSecOps.
- Alterne o controle deslizante do compartimento IBM Cloud Object Storage para armazenar todas as evidências no compartimento IBM Cloud Object Storage que pode ser configurado na próxima página.
- Aceitar as configurações padrão.
- Clique em Continuar.
Nuvem Object Storage Bucket
Você deve ter a instância IBM Cloud Object Storage e um bucket para atuar como um armário de evidências de conformidade.
- Os campos Cloud Object Storage instance, Bucket name e Cloud Object Storage endpoint são preenchidos automaticamente.
- 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.
- É possível copiar e colar uma chave já existente.
- 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 do Kubernetes onde a aplicação está implantada:
-
O endereço padrão do Nome do aplicativo é
hello-compliance-app. -
Digite sua chave de API do IBM Cloud. A chave da API é usada para interagir com a ferramenta CLI do IBM Cloud em várias tarefas.
- Preferencialmente: Uma chave existente pode ser importada de um cofre de segredos clicando no ícone da chave.
- É possível copiar e colar uma chave já existente.
- É possível criar uma nova chave a partir daqui clicando no botão Novo +.
A chave de API recém-gerada pode ser salva imediatamente em um cofre de segredos.
-
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 se adequar à sua configuração.
-
Clique em Continuar.
Assinatura de artefato
Os artefatos são criados pela cadeia de ferramentas, registrados no inventário e devem ser assinados antes de serem implantados na produção. O pipeline usa Skopeo como a ferramenta padrão para fornecer o recurso de assinatura de artefatos. É possível usar uma chave GPG existente ou criar um novo Par de chaves GPG.
- Digite a GnuPG chave privada. Como alternativa, você pode criar uma nova chave GPG clicando em NEW. Para obter mais informações, consulte Geração de uma chave GPG.
- Clique em Continuar.
DevOps Insights
O IBM Cloud DevOps Insights está incluído na cadeia de ferramentas. Visualize os resultados dos testes de pipeline para cada compilação, de cada implantação e ambiente.
- Aceitar a configuração padrão.
- 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.
- Insira seu webhook do Slack. Para obter mais informações, consulte Slack webhook.
- Insira seu canal de folga para postar a mensagem.
- Digite o nome da equipe de reserva. Por exemplo, se o nome da sua equipe for URL
https://team.slack.com, o nome da equipe éteam. - Escolher os eventos para os quais você deseja receber notificações para Notificações automatizadas do Slack.
- Clique em Continuar.
Cadeia de ferramentas DevOps Insights comum
DevOps Insights pode ser incluída opcionalmente na cadeia de ferramentas criada e, após cada verificação de conformidade, as evidências são publicadas. A cadeia de ferramentas pode utilizar uma instância existente do DevOps Insights para publicar os registros de implantação no Insights. Você pode vincular uma integração d DevOps Insights e a partir de outra cadeia de ferramentas, informando o ID da integração.
- Aceite a Cadeia de ferramentas atual.
- Clique em Continuar.
É possível copiar o ID da Cadeia de Ferramentas na URL de sua cadeia de ferramentas. O arquivo URL de uma cadeia de ferramentas segue este padrão: https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south.
Se o endereço URL for: https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south, então o ID da cadeia de ferramentas é: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. Inclua apenas o ID, não o endereço completo URL.
Você também pode definir um ambiente de destino para as interações do DevOps Insights. Esse parâmetro é opcional e é usado em vez do ambiente de destino do inventário.
DevOps Insights
Você pode criar uma instância de DevOps Insights para ser usada na cadeia de ferramentas. Se nenhuma configuração for necessária, o pipeline de CI usará automaticamente a instância do Insights que está incluída na cadeia de ferramentas.
trabalhador privado do Delivery Pipeline
Os artefatos criados pela cadeia de ferramentas e registrados no inventário devem ser assinados usando GaraSign,, um serviço de assinatura de código desenvolvido pela Garantir, antes que as imagens possam ser implantadas na produção. Para ativar a assinatura de artefatos GaraSign, você deve ter um trabalhador privado TaaS e um certificado de assinatura CISO IBM.
A integração da ferramenta de Delivery Pipeline trabalhador privado se conecta a um ou mais trabalhadores privados que podem executar cargas de trabalho de pipeline de entrega isoladamente.
SonarQube
Configure o SonarQube como a ferramenta de análise de código estático para a cadeia de ferramentas. O SonarQube fornece uma visão geral do funcionamento geral e da qualidade do seu código-fonte e destaca os problemas encontrados no novo código. Os analisadores de código estático detectam erros complexos, como referências a ponteiros nulos, erros lógicos e vazamentos de recursos em várias linguagens de programação.
- Aceite a configuração padrão.
- Clique em Continuar.
Crie a cadeia de ferramentas de CI
- Na página Resumo, clique em Criar.
- Aguarde a criação da cadeia de ferramentas. Isso pode levar alguns minutos.
Explore a cadeia de ferramentas de CI
Agora que a cadeia de ferramentas de CD foi criada com dois pipelines, conforme mostrado na captura de tela. Clique no bloco ci-pipeline para abrir e executar o pipeline de promoção.
Executar o pipeline PR-CI
Para iniciar o ci-pr pipeline, você precisa criar uma solicitação de mesclagem no repositório do seu aplicativo.
-
Na página da cadeia de ferramentas de CI, clique no bloco
pr pipeline. Por padrão, ele é criado com o nomecompliance-app-<timestamp>. -
Crie uma ramificação a partir da ramificação principal.
-
Atualize o código no aplicativo ou adicione um arquivo leia-me e salve as alterações.
-
Enviar solicitação de mesclagem.
-
Na página da cadeia de ferramentas de CI, clique no bloco “pr-pipeline ”. Verifique se o
ci-pr pipelineé acionado pela criação da solicitação de mesclagem. -
Aguarde até que a execução do
ci-pr pipelineseja concluída. A solicitação de mesclagem correspondente que está em seu repositório de aplicativos está no estadoPendingaté que todos os estágios do pipeline de PR sejam concluídos com êxito. -
Depois que a execução do pipeline de PR for bem-sucedida, clique no pipeline para explorar várias etapas que foram concluídas e para visualizar a página. Para editar e reenviar a solicitação de mesclagem, siga a etapa 3 até a etapa 7.
Pipeline de RP de DevSecOps bem-sucedido
Fluxo simplificado de tarefas no pipeline
No fluxo de tarefas do pipeline de DevSecOps PR, as tarefas utilitárias são omitidas. Por exemplo, a atualização da verificação de status no GitHub, busca de credenciais e assim por diante. No mundo do DevSecOps, shift left é uma prática que previne e encontra problemas como defeitos e vulnerabilidades de segurança. O Shift left também realiza verificações de conformidade no início do processo de entrega do software, conforme mostrado na figura.
- Verificações que podem ser executadas no código/repositório e não precisam ser construídas. O artefato deve ser executado o mais cedo possível para evitar que o código fora de conformidade seja mesclado ao ramo mestre do repositório. As evidências não são coletadas do pipeline de RP. O objetivo do pipeline é mudar as verificações de conformidade, o mais à esquerda possível.
- Todas as verificações são feitas quando um pipeline é executado. Mesmo que uma verificação anterior falhe, o fluxo de trabalho segue para a próxima. Para verificar se houve alguma falha na sua execução, você precisa conferir a etapa final do seu pipeline, que conta com um avaliador de pipeline.
- Se você estiver tentando mesclar uma correção de emergência e quiser ignorar as verificações de conformidade. Adicione um rótulo à sua solicitação de mesclagem para indicar a correção. É necessário fornecer a mesma etiqueta ao executar o pipeline do CD.
Execução do pipeline de solicitações pull
Você pode iniciar o pipeline de CI de uma das seguintes maneiras:
- Automaticamente: após um pipeline de PR bem-sucedido, aprovando e mesclando o PR na ramificação principal.
- Manualmente: Para acionar o pipeline de CI manualmente, selecione o cartão do pipeline de entrega, clique em “Executar pipeline ” e selecione “Acionamento manual ”.
Neste tutorial, o pipeline de CI foi acionado depois que você mesclou as alterações de código no ramo master do repositório da sua aplicação.
- Na página da cadeia de ferramentas de CI, clique no bloco “ci-pipeline ”.
- Clique em Run no nome do seu pipeline. Observe que um pipeline está sendo executado. Aguarde até que a execução do pipeline seja concluída.
- Depois que a execução do pipeline de CI for bem-sucedida, clique no pipeline para explorar as etapas concluídas e visualizar a página, conforme mostrado na captura de tela.
Execução do pipeline de integração contínua
Neste documento, o pipeline de CI foi acionado após você ter mesclado suas alterações de código no ramo master do repositório da sua aplicação.
- Na página da cadeia de ferramentas de CI, clique no bloco “ci-pipeline ”.
- Observação: um pipeline-run está em execução. Aguarde o pipeline-run concluir.
Após a execução bem-sucedida do pipeline de CI, você pode clicar nas tarefas do pipeline para explorar as etapas concluídas.
Fluxo simplificado de tarefas no pipeline
No fluxo de tarefas do pipeline de CI do DevSecOps, as tarefas utilitárias são omitidas. Por exemplo, a atualização da verificação de status no GitHub, busca de credenciais e assim por diante. As tarefas em cores verdes são evidências de saída.
As evidências são coletadas de todas as verificações de conformidade no pipeline de CI e enviadas para o repositório de evidências que foi fornecido durante a configuração da cadeia de ferramentas. As evidências da CI estão disponíveis em
raw/ci/<pipeline-run-id>/*.json.
As evidências são publicadas na instância do DevOps Insights dentro da cadeia de ferramentas. Você pode navegar clicando no cartão de ferramenta DevOps Insights na cadeia de ferramentas. É possível revisar a evidência coletada na página Painel de qualidade.
Para verificar se houve alguma falha na execução do seu pipeline, você deve conferir a etapa final do pipeline, que conta com um avaliador de pipeline.
Visualizando o aplicativo em execução
Após a execução bem-sucedida do pipeline de CI, o aplicativo de exemplo é implantado no seu cluster do Kubernetes e está em execução no namespace dev.
O aplicativo URL pode ser encontrado no final do log, na etapa run stage da tarefa deploy-dev da execução do pipeline de CI. Use o comando URL para verificar se o aplicativo está em execução.
Configure o pipeline
Para adicionar uma propriedade de texto commit-id.
- Clique em Incluir propriedade.
- Selecione Propriedade de texto.
Se você acionar o pipeline manualmente sem commit-id, o pipeline usará o ID do commit mais recente da ramificação principal do seu aplicativo.
Exemplo
Para adicionar os parâmetros do acionador.
- Clique em Executar pipeline.
- Selecione " Acionamento manual ".
- Clique em ** Executar **.