Editar

Compartilhar via


Pipeline de CI/CD do Gridwich

Microsoft Entra ID
Grade de Eventos do Azure
Funções do Azure
Cofre de Chave do Azure
Azure Pipelines

Gridwich requer vários recursos dentro e fora do Azure para conversar uns com os outros com segurança. Esse requisito apresenta desafios de integração contínua e entrega contínua (CI/CD) com permissões do Microsoft Entra, gates, criação de recursos, ordem de operação e implantação de funções de longa execução. Os seguintes princípios orientadores tratam desses desafios:

  • Um artefato de compilação afeta todos os ambientes no mesmo pipeline.
  • Ambientes não fechados são descartáveis.
  • O Terraform cria ambientes idempotentes de maneira declarativa.
  • O Terraform não lança software.
  • A criação de infraestrutura e a versão de software são estágios distintos no pipeline.
  • O pipeline de CI/CD não atribui permissões do Microsoft Entra.
  • O pipeline considera tudo como código.
  • O pipeline usa componentes reutilizáveis com foco na modularidade.

As considerações a seguir referem-se aos princípios anteriores.

Artefato único, vários ambientes

O pipeline de Gridwich é dimensionado para vários ambientes, mas há apenas um artefato, que o pipeline promove de um ambiente para o outro.

Versão de software e criação de infraestrutura

No Gridwich, a versão de software e a implantação de infraestrutura são duas responsabilidades separadas. Um pipeline lida com ambas as responsabilidades em várias fases usando o seguinte padrão geral:

Compilações > de software Implantação de infraestrutura Versão de software Configuração > de software Implantação de > > script personalizado

O princípio orientador de que a infraestrutura e a versão de software são duas responsabilidades distintas dificultam a implantação de assinaturas da Grade de Eventos. Quando o Azure cria uma assinatura de webhook da Grade de Eventos, ele envia um evento de validação para verificar se o ponto de extremidade de registro aceita eventos da Grade de Eventos. Para passar nessa verificação de validação, a função do Azure deve ser liberada e entrar em execução antes que o Terraform crie os recursos de assinatura da Grade de Eventos.

Para resolver esse problema, há dois trabalhos do Terraform no pipeline de CI/CD:

Diagram showing the Terraform sandwich jobs.

  • O Terraform 1 cria todos os recursos, exceto as assinaturas da Grade de Eventos do Azure.
  • O Terraform 2 cria as assinaturas da Grade de Eventos depois que o software está em execução.

Como o Terraform atualmente não tem a capacidade de excluir um módulo específico, o trabalho Terraform 1 deve direcionar explicitamente para todos os módulos, exceto às assinaturas da Grade de Eventos. Esse requisito tem o potencial de ser propenso a erros e um problema atual do GitHub no Terraform controla esse problema.

Scripts pós-implantação

O pipeline de CI/CD não faz operações que precisam de privilégios elevados, mas usa modelos de script de administrador para gerar um conjunto de scripts de administrador como artefatos de pipeline. Um administrador com privilégios elevados deve executar esses scripts de administrador sempre que um novo ambiente do Gridwich for criado. Para obter mais informações, confira Executar scripts de administrador do Azure.

O Terraform e as versões de software não podem concluir determinadas operações do Gridwich, incluindo:

  • Copiar certificados para o Azure Key Vault
  • Habilitar análise no Armazenamento do Azure

O script da CLI do Azure azcli-last-steps-template.yml fornece essas últimas etapas.

Tudo como código e reutilização de código

Uma vantagem da prática "tudo como código" é a reutilização de componentes.

  • Para o Terraform, o Gridwich depende muito de módulos do Terraform para aprimorar a modularidade e a capacidade de reutilização.
  • Para o YAML do Azure Pipelines, o Gridwich usa modelos de pipeline.

Próximas etapas