Com 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 que você identifica como uma etapa no pipeline é chamado de destino múltiplo, e os destinos que o destino múltiplo compreende 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 a implantação paralela
É possível usar a implantação paralela, por exemplo, para implantar seu aplicativo em várias finalidades de produção. Nesse caso, não é necessário implantar em cada destino em sucessão, porque não há progressão (por exemplo, do desenvolvimento para o ambiente de pré-produção e para 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:
vários destinos
Um destino múltiplo é um destino configurado com a propriedade
multiTarget
, no 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 outros destinos usandomultiTarget.targetIds
.Destinos filhos
Um destino filho é qualquer destino referenciado por um destino múltiplo como
multiTarget.targetIds
. A criança 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 de controlador é um lançamento que corresponde ao multidestino.
Consulte Limitações para mais informações sobre o que você pode e o que não pode fazer com um lançamento de controlador.
-
Consulte Limitações para mais informações sobre o que você pode e não pode fazer com um lançamento para crianças.
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:
- Os vários destinos incluem a propriedade
multiTarget
. - Os destinos filhos não incluem a propriedade
multiTarget
, mas são referenciados pelo destino múltiplo usando a propriedademultiTarget.targetIds
. - É possível configurar o multidestino 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 do ambiente de execução personalizadas. Se um destino filho não especificar um ambiente de execução, ele herda 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 uma fase 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
alvo múltiplo não pode ter as propriedades gke
, run
ou anthosCluster
.
A configuração para vários destinos é a mesma, independentemente do ambiente de execução para o qual 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 propriedade
stages.targetId
da definição do pipeline de entrega.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn são os nomes dos destinos filhos para os quais esse destino múltiplo é implantado. Cada nome corresponde à propriedade
name
na definição de destino filha.
A presença da propriedade multiTarget.targetIds
faz com que esse destino seja
multidestino.
Configurar os destinos filhos
Para cada destino identificado como filho na 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 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 dessa segmentação filha. 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 essa meta se refere, incluindo o ID do projeto, a região e o nome do cluster.
Essa meta é configurada da mesma forma que uma meta padrão do GKE.
A única coisa que faz com que esse seja 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 filha. 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 essa meta 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 com que esse seja 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...
CHILD_TARGET1 é o nome dessa segmentação filha. O nome corresponde a um membro na lista de destinos na propriedade
multiTarget.targetIds
na definição de vários destinos.MEMBERSHIP_NAME é o nome que você escolheu ao registrar o cluster de usuários do GKE Enterprise em uma frota.
Essa meta é configurada da mesma forma que uma meta padrão do GKE Enterprise. A única coisa que faz com que esse seja um destino filho é que ele é referenciado
pela propriedade multiTarget.targetIds
no destino múltiplo.
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 envio, junto com os rótulos nas metas filhas para corresponder a cada par de parâmetro e valor.
Saiba mais sobre os parâmetros de implantação.
Criar a versão
Com destinos múltiplos e filhos 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 é o mesmo de qualquer pipeline e destino do Cloud Deploy, exceto que, quando ele chega ao estágio com vários destinos, o Cloud Deploy cria um lançamento de 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 a operações do Cloud Deploy diferenciam os lançamentos do controlador e filho.
Limitações
Um destino múltiplo não pode ter mais de 100 destinos filhos.
Todos os destinos filhos de um único destino múltiplo precisam ter o mesmo tempo de execução de destino (por exemplo, todos os GKE ou todos os GKE Enterprise).
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 se referenciar 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á-lo em um pipeline diferente.
Os pools padrão têm limites de simultaneidade, mas os pools particulares não têm.
Quando você implanta em vários destinos, 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. Isso significa que o Cloud Deploy não será implantado em todos os destinos filhos ao mesmo tempo, neste caso.
Além disso, se as metas 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 todas as metas filhas.
Se você precisar implantar simultaneamente para mais destinos do que o limite especificado na documentação do Cloud Build, terá duas opções:
Solicite um aumento do número de builds simultâneos que você pode executar.
Configure um pool particular e configure os 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 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 herdarão o ambiente 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 usará esse ambiente.
Essas regras facilitam a propagação de ambientes de execução para destinos filhos de um destino múltiplo, para que você não precise definir ou mudar o ambiente de execução de cada destino filho, além de permitir que você personalize 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 os 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. No entanto, com a implantação paralela, só é possível configurar a aprovação no multidestino. A aprovação ou rejeição afeta todas as segmentações filhas juntas.
Conferir a implantação paralela no console do Google Cloud
É possível conferir detalhes de vários destinos, destinos filhos, o lançamento do controlador e lançamentos filhos no console do Google Cloud.
Quando você acessa a lista de destinos de um determinado pipeline de entrega, nos detalhes do pipeline, o destino múltiplo é listado, mas os destinos filhos não são. No entanto, ao conferir os detalhes da versão, você pode ver 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ão, é possível conferir 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 quando você usa uma estratégia de implantação de 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: implantar 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 do destino.
Leia o artigo Arquitetura de serviço do Cloud Deploy.