Visão geral do Cloud Deploy

O Cloud Deploy é um serviço gerenciado que automatiza a entrega de seus aplicativos para uma série de ambientes de destino em uma sequência de promoção definida. Quando você quiser implantar seu aplicativo atualizado, será necessário criar uma versão, cujo lifecycle é 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.

  • Também, 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

Veja 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.

    Também é necessária uma configuração para o Skaffold, que o Cloud Deploy precisa para executar 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 o pipeline com o serviço 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. Para essa primeira chamada de criação de 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 ela 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 pronto para implantar seu 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 da versão é descrito em mais detalhes em Arquitetura de serviço do Cloud Deploy.

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

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 que é 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 oferece suporte à reversão do aplicativo implantado em qualquer destino. Uma reversão no Cloud Deploy consiste em acionar um lançamento na última versão implantada com sucesso. 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. Também é possível 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.

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

Se você usasse principalmente ferramentas do Google Cloud, seu fluxo da origem à 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 fazer parte do seu fluxo de desenvolvimento local. Mas você pode aproveitar isso para o 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 a imagem ou as imagens de contêiner do Artifact Registry, que permite armazenar artefatos e dependências de maneira centralizada.

  5. Configure o pipeline de entrega no Cloud Deploy para implantar a imagem do contêiner 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. Gerencie seu aplicativo no GKE, no Cloud Run ou no 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 no local.

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

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

A seguir