Implantar em vários destinos ao mesmo tempo

Usando o Cloud Deploy, é possível implantar em um destino configurado para representar vários destinos, e o aplicativo é implantado nesses destinos em paralelo (simultaneamente). O destino identificado como um estágio no pipeline é chamado de destino múltiplo, e os destinos que compõem esse destino múltiplo são chamados de destinos filhos.

É possível usar a implantação paralela com qualquer tipo de destino compatível com o Cloud Deploy.

Por que usar a implantação paralela

É possível usar a implantação paralela, por exemplo, para implantar o aplicativo em vários destinos de produção. Nesse caso, não é necessário implantar em cada destino em sucessão, porque não há progressão (por exemplo, de desenvolvimento para preparação e produção).

Essa implantação paralela pode fazer parte de uma progressão normal do pipeline de entrega: progression:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

Recursos do Cloud Deploy usados para implantação paralela

A implantação paralela usa os seguintes recursos especializados do Cloud Deploy:

  • Destinos múltiplos

    Um destino múltiplo é um destino configurado com a propriedade multiTarget, no nível superior do YAML de configuração do destino. Em vez de referenciar o cluster ou serviço de execução, ele referencia um ou mais outros destinos, usando multiTarget.targetIds.

  • Destinos filhos

    Um destino filho é qualquer destino referenciado por um destino múltiplo como multiTarget.targetIds.

  • Lançamentos do controlador

    Um lançamento do controlador é um lançamento que corresponde ao destino múltiplo.

    Consulte Limitações para mais informações sobre o que é possível e o que não é possível fazer com um lançamento do controlador.

  • Lançamentos filhos

    Consulte Limitações para mais informações sobre o que é possível e o que não é possível fazer com um lançamento filho.

Configurar a implantação paralela

A configuração da implantação paralela consiste em definir um destino múltiplo e o número de destinos filhos necessários (até o limite). As definições de destino são as mesmas para todos os destinos, exceto para o seguinte:

  • Os destinos múltiplos incluem a propriedade multiTarget.
  • Os destinos filhos não incluem a propriedade multiTarget, mas são referenciados pelo destino múltiplo usando a propriedade multiTarget.targetIds.
  • É possível configurar o destino múltiplo para aprovação, mas não os destinos filhos, que não podem incluir requireApproval:true.

Os destinos múltiplos e filhos podem incluir configurações de ambiente de execução personalizadas. Se um destino filho não especificar um ambiente de execução, ele vai herdar o definido na definição de destino múltiplo ou o padrão. Consulte Ambientes de execução e implantação paralela para mais detalhes.

Configurar o destino múltiplo

Um destino múltiplo é um único destino identificado como um estágio no pipeline de entrega, mas que aponta para um ou mais destinos filhos.

A configuração de destino múltiplo inclui a propriedade multiTarget. Um destino múltiplo não pode ter as propriedades gke, run ou anthosCluster. A configuração de um destino múltiplo é a mesma, independentemente do ambiente de execução em que você está implantando.

No YAML do pipeline de entrega ou em um arquivo YAML separado, crie a definição de destino básica, incluindo multiTarget:

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
 targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]

Neste YAML...

  • TARGET_NAME é o nome desse destino múltiplo, que é usado na definição do pipeline de entrega, stages.targetId propriedade.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn são os nomes dos destinos filhos em que esse destino múltiplo é implantado. Cada nome corresponde à propriedade name na definição de destino filho.

A presença da propriedade multiTarget.targetIds torna esse destino um destino múltiplo.

Configurar os destinos filhos

Para cada destino identificado como filho na configuração de destino múltiplo, configure outro destino como um destino filho:

No YAML do pipeline de entrega ou em um arquivo YAML separado, crie a definição de destino básica:

GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
 cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME

Neste YAML...

  • CHILD_TARGET1 é o nome desse destino filho. O nome corresponde a um membro na lista de destinos na propriedade multiTarget.targetIds na definição de destino múltiplo.

  • O valor da propriedade gke.cluster é o nome do recurso do cluster a que esse destino se refere, incluindo o ID do projeto, a região e o nome do cluster.

Esse destino é configurado da mesma forma que um destino padrão do GKE. A única coisa que o torna um destino filho é que ele é referenciado pela propriedade multiTarget.targetIds no destino múltiplo.

Cloud Run

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
 location: projects/PROJECT_ID/locations/REGION

Neste YAML...

  • CHILD_TARGET1 é o nome desse destino filho. O nome corresponde a um membro na lista de destinos na propriedade multiTarget.targetIds na definição de destino múltiplo.

  • O valor da propriedade run.location é o nome do recurso do serviço do Cloud Run a que esse destino se refere, incluindo o ID do projeto e a região.

Esse destino é configurado da mesma forma que um destino padrão do Cloud Run. A única coisa que o torna um destino filho é que ele é referenciado pela propriedade multiTarget.targetIds no destino múltiplo.

Clusters anexados do GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
 membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME

Neste YAML...

Destino personalizado

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
  customTargetType: CUSTOM_TARGET_TYPE_NAME

Neste YAML...

Transmitir parâmetros de implantação para destinos

É possível diferenciar os destinos filhos incluindo parâmetros no manifesto e valores na definição do pipeline de entrega. Esses valores podem ser aplicados separadamente aos manifestos separados, com base na correspondência de rótulos nos destinos correspondentes.

Por exemplo, talvez você queira um número diferente de réplicas para cada destino filho. Para fazer isso, inclua os parâmetros e valores na progressão do pipeline de entrega, juntamente com rótulos nos destinos filhos para corresponder a cada par de parâmetro-valor.

Saiba mais sobre os parâmetros de implantação.

Criar a versão

Com um destino múltiplo e destinos filhos configurados, crie o pipeline de entrega e os recursos de destino, e, em seguida, crie uma versão, como de costume.

O ciclo de vida do pipeline de entrega é o mesmo que com qualquer pipeline e destino do Cloud Deploy, exceto que, quando ele chega ao estágio com o destino múltiplo, o Cloud Deploy cria um lançamento do controlador para o destino múltiplo e um lançamento filho para implantar o aplicativo em cada destino filho.

As mensagens do Pub/Sub em resposta às operações do Cloud Deploy distinguem entre lançamentos do controlador e lançamentos filhos.

Limitações

  • Um destino múltiplo pode ter no máximo 100 destinos filhos.

  • Todos os destinos filhos de um único destino múltiplo precisam ter o mesmo ambiente de execução de destino (por exemplo, todos do GKE ou todos do Cloud Run).

  • Em um pipeline de entrega, um destino filho pode ter apenas um destino múltiplo pai.

  • Um destino múltiplo não pode ser sem filhos e não pode referenciar a si mesmo ou outro destino múltiplo como destinos filhos.

  • Não é possível usar um destino filho mais de uma vez em um único pipeline de entrega, mas é possível reutilizá-los em pipelines diferentes.

  • Se os destinos filhos forem destinos personalizados, eles precisarão referenciar o mesmo CustomTargetType.

  • Os pools padrão têm limites de simultaneidade, mas os pools particulares não.

    Ao implantar em um destino múltiplo, todos os lançamentos filhos são implantados ao mesmo tempo, até o limite de simultaneidade do Cloud Build. Se você tiver mais destinos filhos do que esse limite, os jobs de implantação de alguns destinos não serão executados até que outros terminem, o que significa que o Cloud Deploy não será implantado em todos os destinos filhos ao mesmo tempo, nesse caso.

    Além disso, se os destinos incluírem jobs de verificação, é possível que um ou mais desses jobs de verificação sejam iniciados antes que o aplicativo seja implantado em todos os destinos filhos.

    Se você precisar implantar simultaneamente em mais destinos do que o limite especificado na documentação do Cloud Build, você terá duas opções:

Ambientes de execução e implantação paralela

Cada destino pode ser configurado para usar um ambiente de execução não padrão.

  • Se o destino múltiplo tiver um ambiente de execução não padrão, todos os destinos filhos que usam o ambiente de execução padrão vão herdar o não padrão do destino múltiplo.

  • Se o destino múltiplo usar o ambiente de execução padrão, qualquer destino filho configurado com um ambiente de execução não padrão vai usar esse ambiente não padrão.

Essas regras facilitam a propagação de ambientes de execução para destinos filhos de um destino múltiplo. Assim, não é necessário definir ou alterar o ambiente de execução para cada destino filho, mas ainda é possível personalizar o ambiente de execução para um ou mais destinos filhos, se necessário.

Consulte Como usar ambientes de execução do Cloud Deploy para mais informações sobre ambientes de execução no Cloud Deploy.

Reverter uma implantação paralela

Se você precisar reverter uma implantação de vários destinos paralelos, reverta o destino múltiplo, conforme descrito em Reverter um destino.

Aprovações para implantação paralela

Como acontece com qualquer destino, é possível configurar a implantação paralela para exigir aprovações. No entanto, com a implantação paralela, só é possível configurar a aprovação no destino múltiplo. A aprovação ou rejeição afeta todos os destinos filhos juntos.

Ver a implantação paralela no Google Cloud console

É possível conferir detalhes do destino múltiplo, dos destinos filhos, do controlador lançamento e dos lançamentos filhos no Google Cloud console.

Ao visualizar a lista de destinos de um determinado pipeline de entrega, nos detalhes do pipeline de entrega, o destino múltiplo é listado, mas os destinos filhos não. No entanto, ao visualizar os detalhes da versão, é possível conferir o lançamento do controlador e os lançamentos filhos. Também é possível conferir os lançamentos do controlador e filhos listados na guia Lançamentos na página de detalhes do pipeline de entrega.

No inspetor de versões, é possível visualizar e comparar manifestos renderizados para lançamentos filhos.

Usar a implantação paralela com uma estratégia de implantação

É possível implantar em paralelo ao usar uma estratégia de implantação canário. Consulte Usar a implantação paralela com uma estratégia de implantação canário para mais informações.

A seguir