Pipeline de CI/CD para desenvolver e entregar apps em contêiner

Last reviewed 2022-11-18 UTC

Neste documento, descrevemos um conjunto integrado de ferramentas do Google Cloud para configurar um sistema de desenvolvimento, integração contínua (CI) e entrega contínua (CD) que pode ser usado para desenvolver e implantar aplicativos no Google Kubernetes Engine (GKE). Este documento de arquitetura de referência é destinado a operadores e desenvolvedores de software. Ele pressupõe que você esteja familiarizado com a execução de comandos gcloud no Google Cloud e com a implantação de contêineres de aplicativos no GKE.

Arquitetura

O diagrama a seguir mostra os recursos usados nessa arquitetura:

Sistema de desenvolvimento e implantação com o Cloud Code, o Cloud Build, o Artifact Registry, o Cloud Deploy e o GKE

Essa arquitetura inclui os seguintes componentes:

  1. O Cloud Code como um espaço de trabalho de desenvolvimento. Como parte desse espaço de trabalho, você verá alterações no cluster de desenvolvimento, que é executado no minikube. Execute o Cloud Code e o cluster do minikube no Cloud Shell. O Cloud Shell é um ambiente de desenvolvimento on-line acessível pelo navegador. Ele tem recursos de computação, memória, um ambiente de desenvolvimento integrado (IDE) e também o Cloud Code instalado.
  2. O Cloud Build para criar e testar o aplicativo, isto é, a parte de "CI" do pipeline.

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

    • O Cloud Build monitora as alterações no repositório de origem, usando um gatilho do Cloud Build.
    • Quando uma alteração é confirmada na ramificação principal, o gatilho do Cloud Build faz o seguinte:
      • Recria o contêiner do aplicativo.
      • Coloca os artefatos do build em um bucket do Cloud Storage.
      • Coloca o contêiner do aplicativo no Artifact Registry.
      • Executa testes no contêiner.
      • Chama o Cloud Deploy para implantar o contêiner no ambiente de preparo. Neste exemplo, o ambiente de preparo é um cluster do Google Kubernetes Engine.
    • Se o build e os testes forem bem-sucedidos, você vai poder usar o Cloud Deploy para promover o contêiner do preparo para a produção.
  3. O Cloud Deploy para gerenciar a implantação. Isto é, a parte de "CD" do pipeline. Nessa parte do pipeline, o Cloud Deploy faz o seguinte:

    • Registra um pipeline de entrega e os destinos. Os destinos representam os clusters de preparo e de produção.
    • Cria um bucket do Cloud Storage, armazenando a origem da renderização do Skaffold e os manifestos renderizados nesse bucket.
    • Gera uma nova versão para cada alteração no código-fonte.
    • Implanta o aplicativo no ambiente de produção. Nesta implantação na produção, um operador (ou outra pessoa designada) aprova manualmente a implantação. Nesta arquitetura, o ambiente de produção é um cluster do Google Kubernetes Engine.

Nesta arquitetura, a configuração é compartilhada entre os ambientes de desenvolvimento, preparação e produção usando o Skaffold, uma ferramenta de linha de comando que facilita o desenvolvimento contínuo para aplicativos nativos do Kubernetes.

O Google Cloud armazena o código-fonte do aplicativo no GitHub.

Nesta arquitetura, usamos produtos do Google Cloud na maioria dos componentes do sistema, com o Skaffold permitindo a integração do sistema. Como o Skaffold é de código aberto, é possível usar esses princípios para criar um sistema semelhante combinando componentes internos, de terceiros e do Google Cloud. A modularidade desta solução significa que pode ser adotada de maneira incremental como parte do pipeline de desenvolvimento e implantação.

Casos de uso

Veja os principais recursos deste sistema integrado:

  • Desenvolva e implante com mais rapidez.

    O loop de desenvolvimento é eficiente porque é possível validar alterações no espaço de trabalho do desenvolvedor. A implantação é rápida porque o sistema de CI/CD automatizado e o aumento de paridade entre os ambientes permitem detectar mais problemas ao implantar alterações na produção.

  • Aproveite o aumento de paridade entre desenvolvimento, preparo e produção.

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

  • Reutilize configurações em vários ambientes.

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

  • Aplique a governança no início do fluxo de trabalho.

    Este sistema aplica testes de validação para governança tanto na produção como no sistema de CI e no ambiente de desenvolvimento. A aplicação da governança no ambiente de desenvolvimento permite encontrar e corrigir os problemas antes.

  • Deixe que as ferramentas opinativas gerenciem a entrega de software.

    A entrega contínua é totalmente gerenciada, separando os estágios do pipeline de CD dos detalhes de renderização e implantação.

Implantação

Para implantar essa arquitetura, consulte Desenvolver e implantar aplicativos em contêineres usando um pipeline de CI/CD.

A seguir