Pipeline de CI/CD para desenvolver e fornecer apps contentorizadas

Last reviewed 2022-11-18 UTC

Este documento descreve um conjunto integrado de Google Cloud ferramentas para configurar um sistema de desenvolvimento, para integração contínua (CI) e para entrega contínua (CD) que pode usar para desenvolver e implementar aplicações no Google Kubernetes Engine (GKE). Este documento de arquitetura de referência destina-se a programadores de software e operadores. Parte do princípio de que está familiarizado com a execução de comandos gcloud no Google Cloud e com a implementação de contentores de aplicações no GKE.

Arquitetura

O diagrama seguinte mostra os recursos usados nesta arquitetura:

Desenvolva e implemente o sistema com o Cloud Code, o Cloud Build, o Artifact Registry, o Cloud Deploy e o GKE

Esta arquitetura inclui os seguintes componentes:

  1. Cloud Code como um espaço de trabalho de desenvolvimento. Como parte deste espaço de trabalho, pode ver alterações no cluster de desenvolvimento, que é executado no minikube. Executa o Cloud Code e o cluster minikube no Cloud Shell. O Cloud Shell é um ambiente de programação online acessível a partir do seu navegador. Tem recursos de computação, memória, um ambiente de programação integrado (IDE) e o Cloud Code instalado.
  2. Cloud Build para criar e testar a aplicação: a parte "CI" do pipeline

    Esta parte do pipeline inclui as seguintes ações:

    • O Cloud Build monitoriza as alterações ao repositório de origem, usando um acionador do Cloud Build.
    • Quando uma alteração é confirmada no ramo principal, o acionador do Cloud Build faz o seguinte:
      • Reconstrói o contentor da aplicação.
      • Coloca artefactos de compilação num contentor do Cloud Storage.
      • Coloca o contentor da aplicação no Artifact Registry.
      • Executa testes no contentor.
      • Chama o Cloud Deploy para implementar o contentor no ambiente de preparação. Neste exemplo, o ambiente de preparação é um cluster do Google Kubernetes Engine.
    • Se a compilação e os testes forem bem-sucedidos, pode usar o Cloud Deploy para promover o contentor do teste para a produção.
  3. Cloud Deploy para gerir a implementação, ou seja, a parte "CD" do pipeline. Nesta parte do pipeline, o Cloud Deploy faz o seguinte:

    • Regista um pipeline de fornecimento e segmentações. Os destinos representam os clusters de preparação e produção.
    • Cria um contentor do Cloud Storage e armazena a origem de renderização do Skaffold e os manifestos renderizados nesse contentor.
    • Gera um novo lançamento para cada alteração do código fonte.
    • Implementa a aplicação no ambiente de produção. Para esta implementação em produção, um operador (ou outra pessoa designada) aprova manualmente a implementação. Nesta arquitetura, o ambiente de produção é um cluster do Google Kubernetes Engine.

Nesta arquitetura, a configuração é partilhada entre os ambientes de desenvolvimento, preparação e produção através do Skaffold, uma ferramenta de linha de comandos que facilita o desenvolvimento contínuo para aplicações nativas do Kubernetes.

Google Cloud Armazena o código fonte da aplicação no GitHub.

Esta arquitetura usa produtos Google para a maioria dos componentes do sistema, com o Skaffold a permitir a integração do sistema. Google Cloud Uma vez que o Skaffold é de código aberto, pode usar estes princípios para criar um sistema semelhante usando uma combinação de componentes Google Cloudinternos e de terceiros. A modularidade desta solução significa que pode adotá-la de forma incremental como parte do seu pipeline de desenvolvimento e implementação.

Exemplos de utilização

Seguem-se as principais funcionalidades deste sistema integrado:

  • Desenvolva e implemente mais rapidamente.

    O ciclo de desenvolvimento é eficiente porque pode validar as alterações no espaço de trabalho do programador. A implementação é rápida porque o sistema de CI/CD automatizado e a maior paridade entre os ambientes permitem-lhe detetar mais problemas quando implementa alterações na produção.

  • Tire partido da maior paridade entre o desenvolvimento, o teste e a produção.

    Os componentes deste sistema usam um conjunto comum de Google Cloud ferramentas.

  • Reutilize as configurações nos diferentes ambientes.

    Esta reutilização é feita com o Skaffold, que permite um formato de configuração comum para os diferentes ambientes. Também permite que os programadores e os operadores atualizem e usem a mesma configuração.

  • Aplique a governação no início do fluxo de trabalho.

    Este sistema aplica testes de validação para a governação na produção e no sistema de IC e ambiente de desenvolvimento. A aplicação da governação no ambiente de desenvolvimento permite encontrar e corrigir problemas mais cedo.

  • Deixe que as ferramentas com opiniões geram o fornecimento de software.

    A entrega contínua é totalmente gerida, separando as fases do pipeline de DC dos detalhes da renderização e implementação.

Implementação

Para implementar esta arquitetura, consulte o artigo Desenvolva e implemente apps contentorizadas através de um pipeline de CI/CD.

O que se segue?