Implemente em várias segmentações em simultâneo

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, usando multiTarget.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.

  • Implementações para crianças

    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 propriedade multiTarget.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…

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…

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:

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?