Arquitetura do serviço Google Cloud Deploy

Neste documento, descrevemos as relações entre o Google Cloud Deploy e os sistemas externos com que ele trabalha para implantar seus aplicativos. Esses sistemas são outros serviços do Google Cloud e ferramentas de terceiros.

A visualização de alto nível

O diagrama a seguir mostra as relações entre o Google Cloud Deploy e os sistemas separados de que ele depende.

Relacionamentos entre os componentes do Cloud Deploy

Conforme mostrado neste diagrama, o Google Cloud Deploy interage com os seguintes sistemas:

  • Seu sistema de CI

    O Google Cloud Deploy é compatível com a maioria das ferramentas de CI, desde que uma saída do seu processo de CI possa ser uma chamada para o Google Cloud Deploy API ou osCLI criar uma versão.

  • Cloud Build

    O Google Cloud Deploy chama o Cloud Build para renderizar os manifestos e implantar no ambiente de execução de destino.

  • Skaffold

    O Google Cloud Deploy usa o Skaffold por meio do Cloud Build para renderizar e implantar seus manifestos, implantando assim seu aplicativo.

  • Cloud Storage

    O Google Cloud Deploy armazena manifestos de origem e renderizados em um bucket do Cloud Storage.

  • Pacote de operações do Google Cloud e Registros de auditoria do Cloud.

    O pacote de operações do Google Cloud coleta e disponibiliza dados de geração de registros para o Google Cloud Deploy.

    Consulte também Registro de auditoria.

  • Pub/Sub

    O Google Cloud Deploy publica mensagens em vários tópicos do Pub/Sub. Use esse serviço para fazer a integração com fluxo de trabalho externo, testes e outros sistemas relacionados.

    Consulte Como se inscrever para receber notificações do Google Cloud Deploy para mais informações.

  • Tempo de execução de destino

    O Google Cloud Deploy usa o skaffold apply por meio do Cloud Build para implantar seus aplicativos no ambiente de execução de destino (GKE).

Como eles funcionam juntos para entregar sua versão

Nesta seção, descrevemos como o Google Cloud Deploy interage com os componentes listados neste documento para automatizar a entrega do seu aplicativo como uma versão.

  1. Seu sistema de CI invoca um pipeline de entrega do Google Cloud Deploy.

    Seu processo de CI chama o Google Cloud Deploy usando a CLI ou a API para criar uma nova versão, transmitindo os artefatos de compilação ou as referências às imagens.

    Para mais informações sobre como integrar seu sistema de CI, consulte Como integrar o Google Cloud Deploy a outros sistemas.

  2. Quando uma nova versão é criada, o Google Cloud Deploy faz o seguinte:

    1. Armazena uma instância do pipeline de entrega como parte da versão.

      Esta instância de pipeline permanece inalterada nesta versão, mesmo que a configuração do pipeline de entrega seja alterada. Consulte Instâncias de pipeline por versão para mais informações.

      Além disso, a versão do Skaffold é armazenada como parte da versão.

    2. Chama o Cloud Build, que recebe a origem de renderização do Skaffold do Cloud Storage.

      O Google Cloud Deploy armazena a origem da renderização no bucket padrão ou alternativo do Cloud Storage.

    3. Chamar skaffold diagnose (usando a versão do Skaffold armazenada após a criação da versão) para gerar um único manifesto efetivo.

    4. Chama skaffold render para renderizar o manifesto usando as imagens ou os artefatos de compilação fornecidos.

      O Google Cloud Deploy substitui nomes de imagens em spec.templates.spec.containers.image pelos caminhos de imagens completos (incluindo resumos ou tags) fornecidos no comando gcloud deploy releases create ou em um arquivo de artefatos de versão referenciado por esse comando.

      O Google Cloud Deploy armazena o manifesto renderizado no bucket padrão ou alternativo do Cloud Storage.

      O Google Cloud Deploy realiza essas ações usando o ambiente de execução padrão ou alternativo.

    5. Quando o Google Cloud Deploy é invocado a partir da CLI para criar uma versão, ele cria e implanta automaticamente um lançamento para o primeiro destino, chamando skaffold apply.

      O processo de implantação na primeira meta é o mesmo das promoções, conforme descrito na próxima etapa.

  3. Na hora de promover a versão para o próximo destino, o Cloud Build recupera o manifesto específico do destino do Cloud Storage. Em seguida, o Cloud Build invoca skaffold apply para aplicar o manifesto renderizado ao ambiente de execução de destino especificado.

    Se o destino exigir a aprovação, será possível aprová-la ou rejeitá-la por meio da CLI ou usando o console.

    Além disso, o Google Cloud Deploy gera uma mensagem do Pub/Sub, que você pode assinar para iniciar automaticamente um fluxo de trabalho de aprovação.

    O Google Cloud Deploy usa a versão Skaffold e a instância do pipeline associada a esta versão e executa essa etapa no ambiente de execução padrão ou personalizado.

    Esse processo ocorre não só para promoções, mas também para reversões e reimplantações.

  4. Em todas as operações do Google Cloud Deploy, o serviço publica notificações em vários tópicos do Pub/Sub (por exemplo, quando um lançamento requer aprovação).

    Esta e outras integrações são descritas mais detalhadamente em Como integrar o Google Cloud Deploy a sistemas externos.

  5. Durante a operação do Google Cloud Deploy, o serviço grava registros de plataforma e de auditoria no Pacote de operações do Google Cloud e nos registros de auditoria do Cloud.

Em todas essas etapas, o controle de fluxo e o acesso a recursos são restritos usando o gerenciamento de identidade e acesso.

A seguir