Visão geral do Cloud Deploy

O Cloud Deploy é um serviço gerenciado que automatiza a entrega de aplicativos para uma série de ambientes de destino em uma sequência de promoções definida. Quando você quiser implantar seu aplicativo atualizado, será necessário criar uma versão, cujo ciclo de vida é gerenciado por um pipeline de entrega.

Como funciona um pipeline do Cloud Deploy

O pipeline de entrega do Cloud Deploy contém as seguintes informações:

  • Um nome que você usa ao se referir ao pipeline de entrega e uma descrição.

  • A sequência de promoção, que descreve a ordem de implantação dos destinos configurados.

  • Opcionalmente, rótulos e anotações.

  • Opcionalmente, as próprias definições de destino.

Os destinos podem ser definidos no mesmo arquivo de configuração do pipeline de entrega ou em um ou mais arquivos separados. Vários pipelines de entrega podem usar os mesmos destinos, mas um determinado destino pode ser usado apenas uma vez em um determinado pipeline de entrega.

O processo de entrega do Cloud Deploy

Confira a seguir uma descrição do que acontece em um cenário simples de entrega contínua do Cloud Deploy.

  1. O pipeline de entrega é definido em um arquivo de configuração YAML.

    Esse arquivo de configuração define a sequência de promoção na qual implantar seu aplicativo em uma série de destinos.

    Você também precisa de uma configuração do Skaffold, que o Cloud Deploy precisa para realizar operações de renderização e implantação.

  2. Defina os destinos no arquivo de configuração do pipeline ou em um arquivo ou arquivos separados.

  3. Você registra seu pipeline com o serviço do Cloud Deploy.

    Agora que conhece o aplicativo, o serviço gerencia a implantação para os destinos de acordo com a sequência de promoção definida.

  4. A saída do processo de CI inclui uma chamada para o Cloud Deploy para iniciar o pipeline de entrega.

    Essa chamada cria um recurso release, que representa o manifesto renderizado para cada destino, cada um dos quais é gerado usando a origem de renderização fornecida, skaffold.yaml e as referências a imagens de contêiner específicas a serem implantadas. Nessa primeira chamada para criar uma versão, o Cloud Deploy cria automaticamente um recurso rollout, que associa a versão ao primeiro ambiente de destino. Com base nesse lançamento, seu aplicativo será implantado no primeiro destino.

    É possível usar qualquer ferramenta de CI, desde que gere uma ou mais imagens de contêiner para fornecer ao pipeline de entrega do Cloud Deploy.

    Além disso, a chamada para criar uma versão e invocar um pipeline de entrega não precisa ser proveniente da ferramenta de CI. Ele pode vir de um script ou de qualquer sistema que responda à conclusão do processo de CI.

  5. Quando estiver tudo pronto para implantar o aplicativo no próximo destino, chame o Cloud Deploy para promovê-lo.

    Em cada caso, a chamada para invocar a promoção faz com que o Cloud Deploy crie um novo lançamento.

  6. A promoção continua em todas as segmentações da sequência de promoções, sendo a última da prod (ou qualquer nome usado na meta final para colocar o aplicativo em produção).

    O processo de criação e promoção de versão é descrito em mais detalhes na arquitetura de serviço do Cloud Deploy.

Durante a execução do pipeline, o Cloud Deploy coleta métricas e detalhes de auditoria.

Promoção

Para promover uma versão, você precisa implantá-la no próximo destino na sequência de promoção definida no pipeline. A primeira chamada para o Cloud Deploy cria um release e, em seguida, um recurso rollout usado para implantar no primeiro destino na sequência de promoção. Cada chamada subsequente para promover a versão resulta em um lançamento para a próxima meta.

Aprovações

Você pode especificar que uma aprovação é necessária para promover qualquer destino. Por exemplo, talvez você queira exigir a aprovação de uma promoção em um destino de produção. Para exigir aprovação de um destino, defina a property requireApproval na definição de destino.

Quando um destino requer aprovação, o Cloud Deploy gera uma mensagem do Pub/Sub que pode ser consumida por um sistema integrado. Por exemplo, um sistema de tíquetes pode se inscrever na mensagem para iniciar um fluxo de trabalho de aprovação.

Consulte Exigir aprovação para mais informações sobre promoções e como gerenciar a aprovação delas.

Notificações

O Cloud Deploy fornece notificações do Pub/Sub para os seguintes eventos:

  • Renderização: início, sucesso e falha
  • Implantação: início, sucesso e falha
  • Aprovação necessária
  • Aprovação aprovada
  • Aprovação rejeitada

O Cloud Deploy usa um tópico do Pub/Sub para enviar essas notificações.

Consulte Como usar as notificações do Cloud Deploy para mais detalhes.

Reversões

O Cloud Deploy é compatível com a reversão do aplicativo implantado em qualquer destino. Uma reversão no Cloud Deploy consiste em acionar uma implementação na última versão implantada. O novo lançamento usa os mesmos parâmetros usados nessa implantação bem-sucedida.

Consulte Como reverter uma implantação para mais detalhes.

Sobre o Skaffold e o Cloud Deploy

O Cloud Deploy usa o Skaffold para renderização, implantação e verificação. Com o Skaffold, você também pode conectar facilmente seu loop de desenvolvimento local a um pipeline de entrega contínua do Cloud Deploy.

Para saber mais sobre como o Cloud Deploy se integra ao Skaffold, consulte a visão geral do Skaffold.

Cloud Deploy com outras ferramentas do Google Cloud

O Cloud Deploy é compatível com quase todas as ferramentas upstream em um pipeline de CI/CD. Ou seja, é possível usar qualquer ambiente de desenvolvimento e repositório de código-fonte, qualquer sistema de integração contínua (CI) e qualquer repositório de artefatos.

downstream, o Cloud Deploy implanta no Google Kubernetes Engine, Cloud Run e GKE Enterprise.

Se você usasse principalmente ferramentas do Google Cloud, seu fluxo de origem para produção seria assim:

  1. Use o Cloud Code para criar a origem do aplicativo.

    O Cloud Code estende vários ambientes de desenvolvimento integrado conhecidos (VS Code, IntelliJ, Cloud Shell) para facilitar a criação de aplicativos para implantação e execução no Google Cloud.

  2. Use o Skaffold para gerenciar seu loop de desenvolvimento local.

    O Cloud Deploy usa o Skaffold, por meio do Cloud Build, para renderizar e implantar seus manifestos. Essa integração significa que você precisa manter um arquivo skaffold.yaml, mas não significa que precisa tornar o Skaffold parte do fluxo de desenvolvimento local. Mas você pode aproveitá-lo no desenvolvimento contínuo.

  3. Crie o aplicativo usando o Cloud Build.

    O Cloud Build permite configurar um pipeline de CI que possa ser acionado a partir de uma confirmação no seu repositório de código-fonte. A saída do Cloud Build será artefatos, incluindo imagens de contêiner implantáveis. É possível adicionar uma chamada ao Cloud Deploy para criar uma versão e invocar o pipeline de entrega.

  4. Armazene seus artefatos no Artifact Registry.

    O Cloud Deploy recupera as imagens do contêiner do Artifact Registry, que permite armazenar de maneira centralizada artefatos e dependências.

  5. Configure o pipeline de entrega no Cloud Deploy para usar a imagem do contêiner e implantá-la em uma progressão de n destinos.

    Cada um dos destinos identificados no pipeline de entrega representa um cluster do GKE, do Cloud Run ou do GKE em que o aplicativo é implantado.

  6. Gerenciar seu aplicativo no GKE, Cloud Run ou GKE Enterprise.

    O GKE é o ambiente gerenciado do Google Cloud para executar aplicativos em contêineres no Kubernetes.

    Com o Cloud Run, é possível executar contêineres em um ambiente sem servidor.

    O GKE Enterprise oferece uma experiência consistente de desenvolvimento e operações para ambientes na nuvem e locais.

  7. Monitore o desempenho do seu aplicativo usando a Google Cloud Observability.

    O Google Cloud Observability oferece monitoramento e geração de registros integrados para seu aplicativo.

A seguir