Implantar em vários destinos ao mesmo tempo

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Com o Google 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 que você identifica como um estágio em seu pipeline é chamado de multidestino, e os destinos compostos por 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 Google Cloud Deploy, incluindo o Google Kubernetes Engine, o Cloud Run e o Anthos.

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 é preciso fazer a implantação em cada destino em sequência, 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 de pipeline de entrega:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

Recursos do Google Cloud Deploy usados para implantação paralela

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

  • várias segmentações

    Um destino múltiplo é configurado com a propriedade multiTarget, no nível superior do YAML de configuração de destino. Em vez de se referir ao 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, Anthos ou Cloud Run.

  • Lançamentos do controlador

    Um lançamento do controlador é um lançamento que corresponde ao multidestino.

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

  • Lançamentos filhos

    Consulte Limitações para mais informações sobre o que é possível 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 dos destinos são iguais às de todos os destinos, exceto o seguinte:

  • As várias segmentações incluem a propriedade multiTarget.
  • Os destinos filhos não incluem a propriedade multiTarget, mas são referenciados no multidestino usando a propriedade multiTarget.targetIds.
  • É possível configurar a aprovação da multissegmentação, mas não as metas filhas, que não podem incluir requireApproval:true.

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

Configurar a multissegmentação

Vários destinos são destinos únicos identificados como um estágio no pipeline de entrega, mas apontando para um ou mais destinos filhos.

A configuração de vários destinos inclui a propriedade multiTarget. Uma multisegmentação não pode ter as propriedades gke, run ou anthosCluster. A configuração de vários destinos é a mesma, independentemente do ambiente de execução em que você está fazendo a implantação.

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 do destino múltiplo, usado na definição do pipeline de entrega stages.targetId.

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

A presença da propriedade multiTarget.targetIds torna esse destino um multidestino.

Configurar os destinos filhos

Para cada destino identificado como filho na configuração de vários destinos, configure outro destino como 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 do 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. A única coisa que torna isso um destino filho é que ele seja referenciado pela propriedade multiTarget.targetIds no multidestino.

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 do 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 o 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 torna isso um destino filho é que ele é referenciado pela propriedade multiTarget.targetIds no multidestino.

Anthos

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 Anthos. A única coisa que torna isso um destino filho é que ele é referenciado pela propriedade multiTarget.targetIds no multidestino.

Criar a versão

Com um destino filho e 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 ao de qualquer pipeline e destino do Google Cloud Deploy. A diferença é que, quando chega ao estágio com multidestino, o Google Cloud Deploy cria uma implementação controladora para multidestino e um lançamento filho para implantar o aplicativo em cada destino filho.

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

Limitações

  • Uma segmentação múltipla não pode ter mais de 50 segmentações filhas.

  • Em um pipeline de entrega, um destino filho pode ter apenas um de vários destinos pai.

  • Uma multisegmentação não pode ser filha e não pode se referir a ela ou a outra várias segmentações como filhas.

  • 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 terminem, o que significa que o Google Cloud Deploy não implanta para todos os destinos filhos ao mesmo tempo.

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

    Se for preciso 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 a multidestino tiver um ambiente de execução não padrão, todos os destinos filhos que usam o ambiente de execução padrão herdarão o não padrão da multidestino.

  • Se o multidestino usar o ambiente de execução padrão, qualquer destino filho configurado com um ambiente de execução não padrão usará o 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, você não precisa definir ou alterar o ambiente de execução para cada destino filho, além de permitir que você personalize o ambiente de execução para um ou mais destinos filhos, se precisar fazer isso.

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

Como reverter uma implantação paralela

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

Aprovações para implantação paralela

Como nos destinos, é 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 no multidestino. A aprovação ou rejeição afeta todos os destinos filhos juntos.

Como visualizar a implantação paralela no console do Google Cloud

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

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

No Inspetor de versão, é possível ver e diferenciar manifestos renderizados para lançamentos filhos.

A seguir