Implantar em vários destinos ao mesmo tempo

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

É possível usar a implantação paralela com qualquer tipo de destino compatível com o Cloud Deploy, incluindo o Google Kubernetes Engine, o Cloud Run e o GKE Enterprise.

Por que fazer 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, você não precisa fazer a implantação em cada destino sucessivamente porque não há progressão (por exemplo, do desenvolvimento para o preparo e a produção).

E essa implantação paralela pode fazer parte de uma progressão normal do pipeline de entrega:
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 de destino, e, em vez de referenciar o cluster ou serviço de ambiente de execução, ele referencia um ou mais destinos, usando multiTarget.targetIds.

  • Destinos filhos

    Um destino filho é qualquer destino referenciado por um destino múltiplo como multiTarget.targetIds. O filho também precisa referenciar um tipo de destino compatível (Google Kubernetes Engine, GKE Enterprise ou Cloud Run.

  • Lançamentos do controlador

    Um lançamento do controlador corresponde ao destino de vários destinos.

    Consulte Limitações para mais informações sobre o que é possível ou não fazer com a implementação de um controlador.

  • Lançamentos filhos

    Consulte Limitações para ver mais informações sobre o que pode ou não fazer com um lançamento filho.

Configurar 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 são iguais para todos os destinos, exceto para:

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

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

Configurar os destinos múltiplos

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 vários destinos 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, seja qual for o 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 básica de destino, 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, na propriedade stages.targetId.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn são os nomes dos destinos filhos em que esses destinos múltiplos são implantados. Cada nome corresponde à propriedade name na definição do destino filho.

A presença da propriedade multiTarget.targetIds torna esse destino um destino de vários destinos.

Configurar os destinos filhos

Para cada destino identificado como filho na configuração de vários destinos, defina outro destino como filho:

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

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 vários destinos.

  • O valor da propriedade gke.cluster é o nome do recurso do cluster a que este 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. O único elemento que torna esse 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 vários destinos.

  • 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. O único elemento que torna isso um destino filho é que ele é referenciado pela propriedade multiTarget.targetIds no destino múltiplo.

GKE Enterprise

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

Esse destino é configurado da mesma forma que um destino padrão do GKE Enterprise. O único elemento que torna isso um destino filho é que ele é referenciado pela propriedade multiTarget.targetIds no destino múltiplo.

Criar a versão

Com destinos filhos e de vários destinos configurados, crie o pipeline de entrega e os recursos de destino e, em seguida, crie uma versão normalmente.

O ciclo de vida do pipeline de entrega é igual a qualquer pipeline e destinos do Cloud Deploy, exceto que, quando chega ao estágio com vários destinos, o Cloud Deploy cria uma distribuição de controlador para os destinos múltiplos 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 de controlador e lançamentos filhos.

Limitações

  • Uma segmentação múltipla não pode ter mais de 50 destinos filhos.

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

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

  • Um destino múltiplo não pode ter filhos nem se referir a si mesmo ou a outro destino filho.

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

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

    Quando você implanta 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 sejam concluídos, o que significa que o Cloud Deploy não é 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 deles 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, há duas opções:

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

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

  • Se os destinos múltiplos tiverem um ambiente de execução que não seja padrão, todos os destinos filhos que usam o ambiente de execução padrão herdarão o não padrão do destino de vários destinos

  • Se os destinos múltiplos usarem o ambiente de execução padrão, qualquer destino filho configurado com um ambiente de execução não padrão usará esse ambiente não padrão.

Essas regras facilitam a propagação de ambientes de execução para destinos filhos de vários destinos. Assim, você não precisa definir ou alterar o ambiente de execução para cada destino filho e, ao mesmo tempo, personalizar o ambiente de execução para um ou mais destinos filhos, se necessário.

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

Reverter uma implantação paralela

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

Aprovações para implantação paralela

Como em qualquer destino, é possível configurar a implantação paralela para exigir aprovações. Com a implantação paralela, no entanto, só é possível configurar a aprovação nos destinos múltiplos. A aprovação ou rejeição afeta todas as segmentações filhas juntas.

Confira a implantação paralela no console do Google Cloud

É possível ver detalhes dos destinos filhos e de vários destinos, a distribuição do controlador e os lançamentos filhos no console do Google Cloud.

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

No Release Inspector, é possível conferir e diferenciar manifestos renderizados para lançamentos filhos.

Transmitir parâmetros de implantação para os destinos

É possível diferenciar entre 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 isso, inclua os parâmetros e valores na progresso do pipeline de entrega, além de rótulos nos destinos filhos a serem correspondidos para cada par de parâmetro/valor.

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

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

É possível implantar em paralelo quando estiver usando 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