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 que você identifica como uma etapa no pipeline é chamado de destino múltiplo, e os destinos que ele inclui 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 sucessivamente, porque não há progressão (por exemplo, de desenvolvimento para teste para produção).
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:
vários destinos
Um destino múltiplo é configurado com a propriedade
multiTargetno nível superior do YAML de configuração de destino. Em vez de referenciar o cluster ou serviço de execução, ele referencia um ou mais destinos usandomultiTarget.targetIds.Destinos filhos
Um destino filho é qualquer destino referenciado por um destino múltiplo como
multiTarget.targetIds.Lançamentos de controladores
Um lançamento do controlador é um lançamento que corresponde ao multiobjetivo.
Consulte Limitações para mais informações sobre o que você pode e não pode fazer com um lançamento do controlador.
-
Consulte Limitações para mais informações sobre o que você pode e não pode fazer com um lançamento secundário.
Configurar a implantação paralela
Para configurar a implantação paralela, defina 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:
- Os múltiplos destinos incluem a propriedade
multiTarget. - Os destinos filhos não incluem a propriedade
multiTarget, mas são referenciados da segmentação múltipla usando a propriedademultiTarget.targetIds. - É possível configurar o multi-segmento para aprovação, mas não os segmentos filhos, 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 vai 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 a segmentação múltipla
Um destino múltiplo é um único destino identificado como uma etapa 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
multi-target não pode ter as propriedades gke, run ou anthosCluster.
A configuração para um multi-target é a mesma, não importa para qual ambiente de execução você está fazendo a implantação.
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, propriedade
stages.targetId.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn são os nomes dos destinos filhos em que esse destino múltiplo é implantado. Cada nome corresponde à propriedade
namena definição de destino secundário.
A presença da propriedade multiTarget.targetIds faz com que esse destino seja um
destino múltiplo.
Configurar os destinos filhos
Para cada destino identificado como filho na sua configuração de vários destinos, configure 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 dessa segmentação infantil. O nome corresponde a um membro na lista de destinos na propriedade
multiTarget.targetIdsna definição de vários destinos.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 faz dele 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 dessa segmentação infantil. O nome corresponde a um membro na lista de destinos na propriedade
multiTarget.targetIdsna 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.
Essa meta é configurada da mesma forma que uma meta padrão do Cloud Run. A única coisa que faz dele 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...
CHILD_TARGET1 é o nome dessa segmentação infantil. O nome corresponde a um membro na lista de destinos na propriedade
multiTarget.targetIdsna definição de vários destinos.MEMBERSHIP_NAME é o nome escolhido quando você registrou o cluster em uma frota.
Segmentação personalizada
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
customTargetType: CUSTOM_TARGET_TYPE_NAME
Neste YAML...
CHILD_TARGET1 é o nome dessa segmentação infantil. O nome corresponde a um membro na lista de destinos na propriedade
multiTarget.targetIdsna definição de vários destinos.CUSTOM_TARGET_TYPE_NAME é o nome do tipo de segmentação personalizada usado por essa segmentação.
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, você pode querer um número diferente de réplicas para cada destino secundário. Para isso, inclua os parâmetros e valores na progressão do pipeline de entrega, além de rótulos nos destinos filhos para corresponder a cada par 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 de qualquer pipeline e destino do Cloud Deploy, exceto que, quando chega ao estágio com vários destinos, o Cloud Deploy cria um lançamento do controlador para vários destinos 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 rollouts do controlador e rollouts 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 tempo de execução de destino (todos do GKE ou todos do Cloud Run, por exemplo).
Em um pipeline de entrega, um destino filho pode ter apenas um destino múltiplo principal.
Um destino múltiplo não pode ser sem filhos nem fazer referência a si mesmo ou a 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 secundários forem Destinos personalizados, eles precisam fazer referência ao 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 rollouts 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. Isso significa que o Cloud Deploy não implanta 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, terá duas opções:
Solicite um aumento no número de compilações simultâneas que podem ser executadas.
Configure um pool particular e configure seus destinos para usar esse pool.
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 os destinos múltiplos tiverem 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 ambiente não padrão dos destinos múltiplos.
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 usará esse ambiente.
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 mudar o ambiente de execução de cada destino filho, mas ainda pode personalizar o ambiente de execução de 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 em qualquer destino, é possível configurar a implantação paralela para exigir aprovações. Com a implantação paralela, só é possível configurar a aprovação no multi-destino. A aprovação ou rejeição afeta todos os destinos filhos juntos.
Ver a implantação paralela no console do Google Cloud
É possível conferir detalhes sobre o lançamento de vários destinos, destinos filhos, o controlador e os lançamentos filhos no console Google Cloud .
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 na guia Lançamentos da página de detalhes do pipeline de entrega.
No Inspetor de versão, é possível ver e diferenciar manifestos renderizados para lançamentos secundários.
Usar a implantação paralela com uma estratégia de implantação
É possível fazer implantações paralelas 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
Confira o guia de início rápido: implante um app em vários destinos ao mesmo tempo.
Saiba mais sobre como usar parâmetros de implantação.
Consulte o esquema de configuração de destino.
Leia o artigo Arquitetura de serviço do Cloud Deploy.