Com o Cloud Deploy, pode implementar num destino configurado para representar vários destinos, e a sua aplicação é implementada nesses destinos em paralelo (em simultâneo). O alvo que identifica como uma fase no seu pipeline é denominado alvo múltiplo, e os alvos que compõem o alvo múltiplo são denominados alvos secundários.
Pode usar a implementação paralela com qualquer tipo de destino suportado pelo Cloud Deploy.
Porquê a implementação em paralelo
Pode usar a implementação paralela, por exemplo, para implementar a sua aplicação em vários destinos de produção. Neste caso, não tem de implementar em cada destino sucessivamente, porque não existe progressão (por exemplo, de desenvolvimento para teste para produção).
Esta implementação paralela pode fazer parte de uma progressão normal da pipeline de fornecimento:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]
.
Recursos do Cloud Deploy usados para implementação paralela
A implementação paralela usa os seguintes recursos especializados do Cloud Deploy:
vários alvos
Um alvo múltiplo é um alvo configurado com a propriedade
multiTarget
, no nível superior da configuração YAML do alvo e, em vez de fazer referência ao cluster ou serviço de tempo de execução, faz referência a um ou mais outros alvos, usandomultiTarget.targetIds
.Segmentações secundárias
Um alvo secundário é qualquer alvo referenciado por um alvo múltiplo como
multiTarget.targetIds
.Implementações de controladores
Uma implementação de controlador é uma implementação que corresponde ao destino múltiplo.
Consulte as Limitações para mais informações sobre o que pode e não pode fazer com uma implementação de controlador.
-
Consulte as Limitações para mais informações sobre o que pode e não pode fazer com uma implementação parcial.
Configure a implementação em paralelo
A configuração da implementação paralela consiste em definir um alvo múltiplo e o número de alvos secundários de que precisa (até ao limite). As definições dos alvos são as mesmas que para todos os alvos, exceto para o seguinte:
- Os vários destinos incluem a propriedade
multiTarget
. - Os alvos secundários não incluem a propriedade
multiTarget
, mas são referenciados a partir do alvo múltiplo através da propriedademultiTarget.targetIds
. - Pode configurar a segmentação múltipla para aprovação, mas não as segmentações secundárias, que não podem incluir
requireApproval:true
.
Os vários alvos e os alvos secundários podem incluir configurações do ambiente de execução personalizadas. Se um alvo secundário não especificar um ambiente de execução, herda o ambiente definido na definição de vários alvos ou o ambiente predefinido. Consulte o artigo Ambientes de execução e implementação paralela para mais detalhes.
Configure a campanha com vários alvos
Um alvo múltiplo é um único alvo identificado como uma fase no seu pipeline de entrega, mas que aponta para um ou mais alvos secundários.
A configuração com vários destinos inclui a propriedade multiTarget
. Um
multi-alvo não pode ter as propriedades gke
, run
nem anthosCluster
.
A configuração de um alvo múltiplo é a mesma, independentemente do tempo de execução para o qual está a fazer a implementação.
No YAML do pipeline de entrega ou num ficheiro 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 deste objetivo com vários alvos, 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 secundários para os quais esta implementação com vários destinos é feita. Cada nome corresponde à propriedade
name
na definição do alvo secundário.
A presença da propriedade multiTarget.targetIds
torna este alvo um alvo múltiplo.
Configure os alvos secundários
Para cada alvo identificado como secundário na sua configuração com vários alvos, configure outro alvo como alvo secundário:
No YAML do pipeline de entrega ou num ficheiro YAML separado, crie a definição básica do 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 deste alvo infantil. O nome corresponde a um membro na lista de alvos na propriedade
multiTarget.targetIds
na definição de vários alvos.O valor da propriedade
gke.cluster
é o nome do recurso do cluster ao qual este destino se refere, incluindo o ID do projeto, a região e o nome do cluster.
Este alvo está configurado da mesma forma que um alvo do GKE padrão.
O único aspeto que faz com que este seja um alvo secundário é o facto de ser referenciado pela propriedade multiTarget.targetIds
no alvo 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 deste alvo infantil. O nome corresponde a um membro na lista de alvos na propriedade
multiTarget.targetIds
na definição de vários alvos.O valor da propriedade
run.location
é o nome do recurso do serviço do Cloud Run ao qual este destino se refere, incluindo o ID do projeto e a região.
Este destino é configurado da mesma forma que um destino padrão do Cloud Run. O único aspeto que faz com que este seja um alvo secundário é o facto de ser referenciado pela propriedade multiTarget.targetIds
no alvo 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 deste alvo infantil. O nome corresponde a um membro na lista de alvos na propriedade
multiTarget.targetIds
na definição de vários alvos.MEMBERSHIP_NAME é o nome que escolheu quando registou o cluster de utilizadores do GKE Enterprise numa 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 deste alvo infantil. O nome corresponde a um membro na lista de alvos na propriedade
multiTarget.targetIds
na definição de vários alvos.CUSTOM_TARGET_TYPE_NAME é o nome do tipo de alvo personalizado usado por este alvo.
Transmita parâmetros de implementação para segmentações
Pode distinguir entre segmentações secundárias incluindo parâmetros no seu 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 etiquetas nos alvos correspondentes.
Por exemplo, pode querer um número diferente de réplicas para cada destino secundário. Para tal, incluiria os parâmetros e os valores na progressão do pipeline de entrega, juntamente com etiquetas nos alvos secundários para corresponder a cada par parâmetro-valor.
Saiba mais acerca dos parâmetros de implementação.
Crie o lançamento
Com vários alvos e alvos secundários configurados, crie o pipeline de fornecimento e os recursos de segmentação e, em seguida, crie uma versão, como habitualmente.
O ciclo de vida do pipeline de implementação é o mesmo que com qualquer pipeline e alvos do Cloud Deploy, exceto que, quando chega à fase com o alvo múltiplo, o Cloud Deploy cria uma implementação de controlo para o alvo múltiplo e uma implementação secundária para implementar a aplicação em cada alvo secundário.
As mensagens do Pub/Sub em resposta às operações do Cloud Deploy distinguem entre implementações do controlador e implementações secundárias.
Limitações
Um grupo de alvos múltiplos não pode ter mais de 100 alvos secundários.
Todos os alvos secundários de um único alvo múltiplo têm de ter o mesmo tempo de execução do alvo (por exemplo, todos GKE ou todos GKE Enterprise).
Num pipeline de entrega, um alvo secundário só pode ter um alvo múltiplo principal.
Um multi-alvo não pode não ter filhos e não pode referenciar-se a si próprio nem a outro multi-alvo como alvos filhos.
Não pode usar uma segmentação secundária mais do que uma vez num único pipeline de entrega, mas pode reutilizá-la num pipeline diferente.
Se os alvos secundários forem alvos personalizados, têm de fazer referência ao mesmo
CustomTargetType
.Os pools predefinidos têm limites de concorrência, mas os pools privados não.
Quando implementa numa implementação de vários destinos, todas as implementações secundárias são implementadas ao mesmo tempo, até ao limite de concorrência do Cloud Build. Se tiver mais segmentações secundárias do que esse limite, os trabalhos de implementação de algumas segmentações não são executados até que outros terminem, o que significa que o Cloud Deploy não é implementado em todas as segmentações secundárias ao mesmo tempo, neste caso.
Além disso, se os alvos incluírem tarefas de verificação, é possível que uma ou mais dessas tarefas de verificação sejam iniciadas antes de a aplicação ter sido implementada em todos os alvos secundários.
Se precisar de implementar em simultâneo em mais destinos do que o limite especificado na documentação do Cloud Build, tem duas opções:
Peça um aumento do número de compilações simultâneas que pode executar.
Configure um grupo privado e configure os seus alvos para usar esse grupo.
Ambientes de execução e implementação paralela
Cada destino pode ser configurado para usar um ambiente de execução não predefinido.
Se o multi-alvo tiver um ambiente de execução não predefinido, todos os alvos secundários que usam o ambiente de execução predefinido herdam o ambiente não predefinido do multi-alvo
Se o objetivo múltiplo usar o ambiente de execução predefinido, qualquer objetivo secundário configurado com um ambiente de execução não predefinido usa esse ambiente não predefinido.
Estas regras facilitam a propagação de ambientes de execução para segmentações secundárias a partir de uma segmentação múltipla, para que não tenha de definir nem alterar o ambiente de execução para cada segmentação secundária, ao mesmo tempo que lhe permite personalizar o ambiente de execução para uma ou mais segmentações secundárias, se precisar de o fazer.
Consulte o artigo Usar ambientes de execução do Cloud Deploy para mais informações sobre os ambientes de execução no Cloud Deploy.
Reverta uma implementação paralela
Se precisar de reverter uma implementação de vários destinos paralelos, reverta o destino múltiplo, conforme descrito em Reverta um destino.
Aprovações para implementação paralela
Tal como acontece com todos os alvos, pode configurar a implementação paralela para exigir aprovações. No entanto, com a implementação paralela, só pode configurar a aprovação no multi-alvo. A aprovação ou a rejeição afeta todos os alvos secundários em conjunto.
Veja a implementação paralela na Google Cloud consola
Pode ver detalhes dos alvos múltiplos, dos alvos secundários, da implementação e das implementações secundárias na Google Cloud consola.
Quando vê a lista de alvos para um determinado pipeline de fornecimento, nos detalhes do pipeline de fornecimento, o alvo múltiplo é apresentado, mas os alvos secundários não. No entanto, quando vê os detalhes do lançamento, pode ver a implementação do controlador e as implementações secundárias. Também pode ver as implementações do controlador e do filho listadas no separador Implementações na página de detalhes do pipeline de entrega.
No inspetor de lançamentos, pode ver e comparar os manifestos renderizados para implementações secundárias.
Use a implementação paralela com uma estratégia de implementação
Pode implementar em paralelo quando usa uma estratégia de implementação canária. Consulte o artigo Use a implementação paralela com uma estratégia de implementação canary para mais informações.
O que se segue?
Experimente o início rápido: implemente uma app em vários destinos em simultâneo.
Saiba mais sobre a utilização de parâmetros de implementação.
Consulte o esquema de configuração do destino.
Reveja o artigo Arquitetura do serviço Cloud Deploy.