Sequenciar o lançamento de upgrades de cluster com etapas personalizadas

Neste documento, mostramos como gerenciar upgrades de cluster do Google Kubernetes Engine (GKE) que usam sequenciamento de lançamento com etapas personalizadas. Você cria uma sequência de lançamento usando grupos de clusters organizados em frotas e, opcionalmente, subconjuntos de clusters dessas frotas. É possível escolher quanto tempo de teste de permanência você quer quando os upgrades de cluster forem concluídos em um grupo (máximo de 30 dias). É possível incluir clusters do Autopilot e padrão. Para mais informações sobre como esse recurso funciona, consulte Sobre o sequenciamento de lançamento com etapas personalizadas.

Se você gerencia rollouts em várias frotas, recomendamos usar um projeto dedicado para hospedar o objeto RolloutSequence. Esse projeto atua como o principal e coordenador dos lançamentos na sequência. Normalmente, esse projeto não faz parte da sequência. Ou seja, ele não contém frotas nem clusters que fazem parte da sequência.

Antes de começar

Funções exigidas

Para criar um projeto, é preciso ter o papel de criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.

Para criar ou modificar uma sequência de implantação, você precisa ter o papel do IAM de editor da frota (roles/gkehub.editor) em cada projeto host da frota na sequência de implantação e no projeto host da sequência de implantação, mesmo que esses projetos estejam em várias organizações. Essa função fornece as seguintes permissões:

  • gkehub.rolloutsequences.create
  • gkehub.rolloutsequences.get
  • gkehub.rolloutsequences.list
  • gkehub.rolloutsequences.update
  • gkehub.rolloutsequences.delete
  • gkehub.fleet.update

Com essas permissões, é possível criar, acessar e modificar um objeto RolloutSequence e usar frotas na sequência de lançamento.

Para registrar ou cancelar o registro de clusters em uma frota, você precisa de todas as permissões a seguir:

É possível criar sequências de lançamento usando frotas hospedadas em projetos em uma ou mais organizações, se você tiver as permissões necessárias para esses projetos.

Para mais informações sobre os papéis do IAM com privilégio mínimo necessários para diferentes tarefas, consulte Receber sugestões de papéis predefinidos com a assistência do Gemini.

Configurar uma sequência de lançamento

Para criar uma sequência de lançamento, os clusters precisam ser organizados em grupos de frotas. Também é possível criar etapas granulares que podem segmentar subconjuntos específicos de clusters em uma frota usando rótulos do Kubernetes. Para orientações sobre como organizar os clusters, consulte o exemplo do banco comunitário. Depois de organizar os clusters em grupos e, opcionalmente, rotulá-los, crie uma sequência de lançamento definindo a lista ordenada de estágios e o tempo de permanência de cada grupo.

Organizar clusters em frotas

Em uma sequência de lançamento, recomendamos registrar todos os clusters no mesmo canal de lançamento. Se os clusters não estiverem registrados no mesmo canal, o GKE vai selecionar uma versão do canal mais conservador na sequência. Por exemplo, se os clusters estiverem registrados nos canais Stable e Regular, o GKE vai escolher a versão do Canal estável. Também recomendamos que todos os clusters executem a mesma versão secundária para que sejam qualificados para a mesma versão de destino do upgrade automático.

Se você já tiver organizado os clusters em frotas, pule as etapas a seguir e continue para a seção Criar subconjuntos de clusters.

  1. Agrupe os clusters em frotas. É possível organizar os clusters por ambientes de implantação, como teste, preparo e Production (recomendado).
  2. Registre cada cluster com uma frota com base no agrupamento escolhido.

Criar subconjuntos de clusters (opcional)

Para que uma etapa na sua sequência de lançamento tenha como destino clusters específicos, é preciso rotular esses clusters.

Por exemplo, para testar uma nova versão em um pequeno subconjunto de clusters antes de um lançamento completo, aplique um rótulo canary a esses clusters. Para adicionar o rótulo canary com o valor true a um cluster usando a Google Cloud CLI, execute o seguinte comando:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --update-labels=canary=true

Substitua:

A flag --update-labels=canary=true instrui o GKE a aplicar o rótulo canary ao cluster .

Para mais informações sobre como adicionar um rótulo a um cluster, consulte Adicionar ou atualizar rótulos para clusters atuais.

Criar uma sequência de lançamento com etapas personalizadas

Uma sequência de lançamento com estágios personalizados define a ordem dos upgrades declarando os estágios. Com a CLI gcloud, você usa um arquivo YAML e, com o Terraform, adiciona um bloco de recursos à configuração. Ao executar as etapas descritas nesta seção, você cria um RolloutSequence.

Para garantir que a sequência capture todos os clusters, cada frota precisa incluir uma etapa de captura geral (uma etapa sem um seletor de rótulo). Esse estágio geral captura todos os clusters restantes que o GKE não selecionou nos estágios anteriores. Se você atribuir um único cluster a várias etapas em um RolloutSequence, para resolver conflitos, o GKE vai atribuir o cluster apenas à etapa mais antiga.

Os exemplos de configuração a seguir criam três estágios:

  • O primeiro estágio tem como alvo todos os clusters na frota dev. Depois que o upgrade é concluído, há um tempo de imersão de 7 dias (7d).
  • A segunda etapa segmenta clusters na frota prod que têm o rótulo canary=true. Depois que o upgrade for concluído, haverá um tempo de imersão de 7 dias (7d).
  • A terceira etapa tem como alvo os clusters restantes na frota prod. Após a conclusão do upgrade, há um tempo de imersão de 7 dias (7d).

gcloud

  1. Salve o seguinte manifesto como rollout-sequence.yaml:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 7d
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
      label-selector: resource.labels.canary=='true'
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
    

    Observe o seguinte:

    • stage: inclui uma ou mais frotas ou um subconjunto de clusters dentro dessas frotas. Os clusters em estágios anteriores precisam ser totalmente atualizados e testados antes que a sequência avance para a próxima etapa. No entanto, se um cluster não tiver concluído o upgrade 30 dias após o início do processo, o GKE vai iniciar o período de imersão.
    • fleet-projects: uma lista de frotas para selecionar clusters para esta etapa. Uma frota é identificada pelo projeto em que ela está hospedada. Esse projeto pode ser diferente daquele em que os clusters estão, se a frota tiver assinaturas de vários projetos. O formato para especificar um projeto de frota é projects/PROJECT_ID.
    • label-selector (opcional): seleciona um subconjunto de clusters das frotas especificadas. Esse campo usa a sintaxe da Common Expression Language (CEL) e precisa começar com resource.labels.
    • soak-duration: o tempo de espera após o upgrade de todos os clusters em uma etapa anterior antes de prosseguir para a próxima etapa. Expresso em segundos, minutos, horas e dias.
  2. Para criar a sequência de lançamento definida no manifesto rollout-sequence.yaml, execute o seguinte comando:

    gcloud container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \
        --display-name=DISPLAY_NAME \
        --stage-config=rollout-sequence.yaml
    

    Substitua:

    • ROLLOUT_SEQUENCE_NAME: um identificador imutável que está em conformidade com as especificações RFC-1034. Por exemplo, test-rollout-sequence.
    • DISPLAY_NAME: uma string legível por humanos para sua sequência de lançamento.

Terraform

Nesta seção, mostramos como criar uma sequência de lançamento com etapas personalizadas usando o Terraform. Também é possível usar esse recurso para atualizar a sequência. Para saber mais, consulte a documentação de referência para google_gke_hub_rollout_sequence.

  1. Adicione o seguinte bloco à configuração do Terraform para criar um recurso de sequência de lançamento:

    resource "google_gke_hub_rollout_sequence" "rollout_sequence" {
      rollout_sequence_id = "ROLLOUT_SEQUENCE_NAME"
      display_name        = "DISPLAY_NAME"
      stages {
        fleet_projects = ["projects/dev"]
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        cluster_selector {
          label_selector = "resource.labels.canary=='true'"
        }
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        soak_duration  = "7d"
      }
    }
    

    Substitua:

    • ROLLOUT_SEQUENCE_NAME: um identificador imutável que está em conformidade com as especificações RFC-1034. Por exemplo, test-rollout-sequence.
    • DISPLAY_NAME: uma string legível por humanos para sua sequência de lançamento.

Lançar uma versão específica

Você pode lançar uma versão específica na sua sequência de lançamento. Para mais informações, consulte Lançar uma versão específica.

É possível lançar uma versão para os planos de controle ou nós dos clusters na sequência de lançamento. Você pode selecionar de forma independente quais versões serão lançadas para os planos de controle ou nós.

O GKE só pode lançar uma versão por vez em uma etapa para o plano de controle ou os nós, respectivamente. Se você tiver um lançamento em execução na primeira etapa da sequência de lançamento, o GKE fará o seguinte, dependendo de como você gerencia a sequência de lançamento: com a CLI gcloud ou o Terraform:

  • CLI gcloud: ao executar o comando, um prompt interativo pergunta se você quer cancelar o lançamento atual para criar o lançamento da versão especificada. Se você responder afirmativamente, o GKE cancelará o lançamento atual e criará um novo. Caso contrário, o GKE mantém o lançamento atual e não cria um novo, como você solicitou originalmente no comando.
  • Terraform: quando você atualiza a configuração do Terraform, conforme descrito na próxima seção, o GKE cancela o lançamento em andamento se ele estiver na primeira etapa.

Lançar uma versão para os planos de controle em uma sequência de lançamento

gcloud

Execute este comando:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --control-plane-version="CONTROL_PLANE_VERSION"

Substitua:

  • ROLLOUT_SEQUENCE_NAME: o nome da sequência de implantação.
  • CONTROL_PLANE_VERSION: a versão a ser lançada. Você pode escolher uma versão específica, como 1.34.7-gke.1055000, ou usar um alias de versão. Para mais informações, consulte Como especificar a versão do cluster.

Terraform

Se você usa o Terraform para gerenciar sua sequência de lançamento, é possível lançar uma versão específica adicionando ao bloco usado para criar a sequência de lançamento.

Adicione o campo a seguir ao bloco. É possível adicionar o campo em qualquer lugar, exceto entre os blocos stages, que precisam ser consecutivos:

min_control_plane_version = "CONTROL_PLANE_VERSION"

Substitua CONTROL_PLANE_VERSION pela versão a ser lançada. É possível escolher uma versão específica, como 1.34.7-gke.1055000, ou usar um alias de versão. Para mais informações, consulte Como especificar a versão do cluster.

Se você já usou esse campo para lançar uma versão do plano de controle, ele permanece no bloco. Substitua a versão anterior lançada pela CONTROL_PLANE_VERSION que você quer lançar desta vez.

Lançar uma versão para os nós em uma sequência de lançamento

gcloud

Execute este comando:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --node-version="NODE_VERSION"

Substitua:

  • ROLLOUT_SEQUENCE_NAME: o nome da sequência de implantação.
  • NODE_VERSION: a versão a ser lançada, por exemplo, 1.34.7-gke.1055000.

Terraform

Se você usa o Terraform para gerenciar sua sequência de lançamento, é possível lançar uma versão específica adicionando ao bloco usado para criar a sequência de lançamento.

Adicione o campo a seguir ao bloco. Você pode adicionar o campo em qualquer lugar, exceto entre os blocos stages, que precisam ser consecutivos:

min_node_version = "NODE_VERSION"

Substitua NODE_VERSION pela versão a ser lançada, por exemplo, 1.34.7-gke.1055000. Se você já usou esse campo para lançar uma versão de nó, ele vai permanecer no bloco. Substitua a versão anterior lançada pela NODE_VERSION que você quer lançar desta vez.

Verificar o status de um lançamento

Depois de configurar uma sequência de lançamento, o sistema cria automaticamente objetos Rollout para gerenciar upgrades. É possível observar e acompanhar o progresso desses objetos usando os comandos da Google Cloud CLI.

Listar lançamentos

Para listar todos os lançamentos ativos e históricos no projeto de host da sequência de lançamento, execute o comando a seguir:

gcloud container fleet rollouts list --project=HOST_PROJECT_ID

Substitua HOST_PROJECT_ID pelo ID do projeto host da sequência de lançamento.

É possível omitir a flag --project=HOST_PROJECT_ID se você já estiver no projeto em que a sequência de lançamento está hospedada.

O resultado será o seguinte:

NAME                                              STATE      CREATE_TIME
05eb251e4f19269e23-node-1-33-5-gke-1201000-t7mqd  COMPLETED  2025-10-30T20:07:46
05eb251e4f19269e23-kcp-1-33-5-gke-1201000-djwst   COMPLETED  2025-10-30T18:07:06
05eb251e4f19269e23-node-1-33-5-gke-1125000-6bxvu  COMPLETED  2025-10-23T17:46:54
05eb251e4f19269e23-kcp-1-33-5-gke-1125000-2f6ct   RUNNING    2025-10-23T16:41:33

Na saída anterior, os nomes de implantação que contêm kcp se referem a upgrades do plano de controle, e os nomes que contêm node se referem a upgrades de nós. O segmento do nome do lançamento após kcp ou node é derivado da versão do GKE.

Descrever um lançamento

Para receber informações detalhadas sobre um lançamento específico, incluindo a versão de destino, o estado e quais clusters foram atualizados, use o comando describe com o ID do lançamento que você recebeu no comando anterior:

gcloud container fleet rollouts describe ROLLOUT_ID \
  --project=HOST_PROJECT_ID

Substitua:

  • ROLLOUT_ID: o ID do lançamento que você recebeu ao listar os lançamentos.
  • HOST_PROJECT_ID: o ID do projeto em que sua sequência de lançamento é hospedada.

Exemplo:

gcloud container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
  --project=my-hostfleet

O resultado será o seguinte:

createTime: '2025-05-26T11:47:29.909959672Z'
membershipStates:
  projects/dev-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T12:20:55.601542481Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-1234567890-abcdefg-hijklm-nopqrst
      state: SUCCEEDED
    stageAssignment: 1
  projects/dev-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T12:22:57.151203493Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-2
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-987654321-ghijkl-mno-pqr-stu-vwxyz
      state: SUCCEEDED
    stageAssignment: 1
  projects/prod-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T13:03:34.134308942Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-567891234-efghij-klm-nopq-rstu-vwxyz
      state: SUCCEEDED
    stageAssignment: 2
  projects/prod-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T13:06:34.025261641Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-765432198-01a7b896-67c2-523-6fjjh4-icmdydh
      state: SUCCEEDED
    stageAssignment: 2
name: projects/user-hostfleet/locations/global/rollouts/05eb251e4f19269e23-kcp-1-32-4-gke-1106006
rolloutSequence: projects/project-id/locations/global/rolloutSequences/my-sequence
state: COMPLETED
updateTime: '2025-07-22T07:36:51.052691989Z'
versionUpgrade:
  desiredVersion: 1.32.4-gke.1106006
  type: TYPE_CONTROL_PLANE
stages:
- state: COMPLETED
  endTime: '2025-05-26T12:22:28.828506491Z'
  stageNumber: 1
  startTime: '2025-05-26T11:48:28.772658427Z'
  soakDuration: 600s
- state: COMPLETED
  endTime: '2025-05-26T13:06:20.026390832Z'
  stageNumber: 2
  startTime: '2025-05-26T12:32:38.419372153Z'
  soakDuration: 600s

Informações de status para um lançamento

Ao descrever um lançamento, os campos stages e membershipStates da saída fornecem o status de progresso de cada estágio e cluster dentro desse estágio, respectivamente.

A tabela a seguir lista os possíveis status de uma etapa:

Status Descrição
PENDING O upgrade ainda não começou para esta etapa.
RUNNING O upgrade está em andamento para esta etapa. Se você tiver configurado uma janela de manutenção para os clusters na etapa, o GKE vai esperar que ela seja aberta antes de fazer upgrade dos clusters.
SOAKING Todos os clusters nesta etapa concluíram os upgrades, e a etapa está no período de imersão configurado.
FORCED_SOAKING O upgrade levou mais que o tempo máximo (30 dias) e, portanto, o GKE iniciou a fase de imersão. O upgrade ainda continua nos clusters restantes.
COMPLETED A fase de absorção terminou, e o lançamento prossegue para a próxima etapa.

A tabela a seguir lista os possíveis status de um cluster em uma sequência:

Status Descrição
PENDING O upgrade está pendente neste cluster.
INELIGIBLE Este cluster não está qualificado para o upgrade, possivelmente devido a uma discrepância de versão. O motivo da inelegibilidade é fornecido na saída.
RUNNING O upgrade está em andamento neste cluster.
SUCCEEDED O upgrade foi concluído neste cluster.
FAILED O upgrade falhou neste cluster. As tentativas de destinos com falha são repetidas indefinidamente enquanto a etapa está ativa (no estado RUNNING ou FORCED_SOAKING).

Gerenciar um lançamento

É possível gerenciar um lançamento individual usando as instruções fornecidas nas seções a seguir. Para mais informações sobre como gerenciar um lançamento e as ações correspondentes que podem ser realizadas, consulte Como gerenciar um lançamento.

Para gerenciar uma sequência de lançamento inteira, e não apenas um lançamento específico, consulte a seção a seguir, Gerenciar uma sequência de lançamento.

Pausar um lançamento

É possível pausar uma implantação ativa. Para mais informações sobre essa ação, consulte Pausar um lançamento.

Para pausar um lançamento, execute o seguinte comando:

gcloud container fleet rollouts pause ROLLOUT_ID

Substitua ROLLOUT_ID pelo ID do lançamento que você quer pausar. Para conferir os IDs dos lançamentos na sua sequência de lançamento, consulte Listar lançamentos.

Retomar um lançamento

É possível retomar um lançamento que está pausado há menos de 90 dias. Para mais informações sobre essa ação, consulte Como retomar um lançamento.

Para retomar um lançamento pausado, execute o seguinte comando:

gcloud container fleet rollouts resume ROLLOUT_ID

Substitua ROLLOUT_ID pelo ID do lançamento que você quer retomar. Para conferir os IDs dos lançamentos na sua sequência, consulte Listar lançamentos.

Cancelar um lançamento

É possível cancelar um lançamento, incluindo os que estão ativos ou foram pausados. Não é possível cancelar lançamentos de upgrades automáticos obrigatórios. Para mais informações sobre como cancelar lançamentos, consulte Como cancelar um lançamento.

Para cancelar um lançamento, execute o seguinte comando:

gcloud container fleet rollouts cancel ROLLOUT_ID

Substitua ROLLOUT_ID pelo ID do lançamento que você quer cancelar. Para conferir os IDs dos lançamentos na sua sequência, consulte Listar lançamentos.

Concluir uma etapa de lançamento

Você pode concluir uma etapa de lançamento se estiver tudo pronto para que os upgrades passem para a próxima etapa. Para mais informações sobre essa ação, consulte Como concluir uma fase de lançamento.

Para concluir uma etapa de lançamento, execute o seguinte comando:

gcloud container fleet rollouts force-complete-stage ROLLOUT_ID \
    --stage=STAGE

Substitua:

  • ROLLOUT_ID: o ID do lançamento em que você quer concluir uma etapa. Para conferir os IDs dos lançamentos na sua sequência, consulte Listar lançamentos.
  • STAGE: a etapa que você quer concluir agora. Por exemplo, se você quiser concluir a segunda etapa, digite 2. A fase precisa estar em execução ou em imersão para usar esse comando.

Ignorar um cluster em uma sequência de lançamento para um lançamento específico

Você pode fazer com que o GKE ignore um cluster em uma sequência de lançamento se não quiser que ele seja atualizado como parte de um lançamento ativo. No entanto, essa ação remove o cluster da sequência de lançamento para lançamentos ativos e futuros, não apenas ativos.

Para realizar essa ação e evitar que um cluster seja atualizado em um lançamento ativo, consulte Ignorar um cluster em uma sequência de lançamento.

Gerenciar uma sequência de lançamento

É possível controlar os upgrades automáticos de cluster com o sequenciamento de lançamento de várias maneiras, conforme explicado nas seções a seguir.

Se você quiser gerenciar um lançamento de uma sequência em vez de toda a sequência e todos os lançamentos dela, consulte Gerenciar um lançamento.

Listar sua sequência de lançamento

Para listar a sequência de lançamento no projeto host, execute o seguinte comando:

gcloud container fleet rolloutsequences list --project=HOST_PROJECT_ID

Substitua HOST_PROJECT_ID pelo ID do projeto host da sequência de lançamento.

Descrever uma sequência de lançamento

Para conferir os detalhes de uma sequência de lançamento específica, execute o seguinte comando:

gcloud container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

Substitua:

  • ROLLOUT_SEQUENCE_NAME: o nome da sequência de lançamento.
  • HOST_PROJECT_ID: o ID do projeto host da sua sequência de lançamento.

O resultado será o seguinte:

createTime: '2025-10-23T16:40:16.403871189Z'
displayName: my-display-name
name: projects/HOST_PROJECT_ID/locations/global/rolloutSequences/ROLLOUT_SEQUENCE_NAME
stages:
- clusterSelector:
    labelSelector: resource.labels.canary=='true'
  fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 600s
- fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 300s
uid: 5c5b2ac8-9d76-45f9-92ca-5e6bd3fbcaef
updateTime: '2025-10-23T17:11:57.285678399Z'

Escolher os tipos de upgrade que o GKE realiza em uma sequência de lançamento

Por padrão, o GKE realiza todos os tipos de upgrades de cluster em uma sequência de lançamento. É possível restringir o escopo dos upgrades de cluster em uma sequência de lançamento para realizar apenas tipos específicos de upgrades. Para mais informações, consulte Escolher os tipos de upgrades que o GKE realiza em uma sequência de lançamento.

Para designar quais tipos de upgrades você quer que o GKE faça em uma sequência de lançamento, siga estas instruções, dependendo de como você gerencia sua sequência de lançamento:

gcloud

Execute este comando:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --auto-rollout-scope=TYPES_OF_UPGRADES

Substitua:

Terraform

Se você usa o Terraform para gerenciar sua sequência de lançamento, é possível designar quais tipos de upgrades você quer que o GKE faça nessa sequência adicionando ao bloco usado para criar a sequência de lançamento.

Adicione o campo a seguir ao bloco. Você pode adicionar o campo em qualquer lugar, exceto entre os blocos stages, que precisam ser consecutivos:

auto_upgrade_config {
  rollout_creation_scope {
    upgrade_types = [
      UPGRADE_TYPES
    ]
  }
}

Substitua UPGRADE_TYPES pela lista de upgrades a serem realizados, que pode ser uma ou mais das seguintes opções (cada uma entre aspas):

Por exemplo, se você quiser que apenas versões de patch sejam lançadas na sequência de lançamento, especifique a configuração upgrade_types = ["CONTROL_PLANE_PATCH", "NODE_PATCH"].

Se você definir upgrade_types = [], o GKE não vai realizar upgrades de cluster na sequência de lançamento, exceto lançamentos para upgrades automáticos obrigatórios.

Para reverter ao comportamento padrão em que o GKE realiza todos os tipos de upgrades de cluster na sequência de lançamento, especifique a configuração upgrade_types = ["CONTROL_PLANE_PATCH", "CONTROL_PLANE_MINOR", "NODE_PATCH", "NODE_MINOR"]. Ou remova o bloco auto_upgrade_config da configuração do Terraform.

Modificar uma sequência de lançamento

É possível modificar uma sequência de lançamento depois de criá-la. Modifique sua sequência de lançamento com as instruções a seguir, dependendo de como você está gerenciando a sequência.

gcloud

Se você usa a CLI gcloud para gerenciar a sequência de lançamento, é possível editar o arquivo de configuração YAML em que ela foi definida. Por exemplo, é possível atualizar o tempo de imersão de uma etapa ou atualizar a etapa para mudar a ordem dos upgrades. Depois de editar o arquivo, aplique as mudanças.

Por exemplo, se você definiu a sequência de lançamento original em um arquivo chamado rollout-sequence.yaml, edite o arquivo conforme necessário. Em seguida, execute o seguinte comando:

gcloud container fleet rolloutsequences update test-rollout-sequence \
  --display-name="My Updated Rollout Sequence" \
  --stage-config=rollout-sequence.yaml

Terraform

Se você usa o Terraform para gerenciar sua sequência de lançamento, modifique-a alterando o bloco usado para criar a sequência de lançamento.

Criar um cluster que corresponda à versão de destino de uma etapa de lançamento

Para criar um cluster do GKE que execute a versão de destino de uma etapa na sequência de lançamento, especifique o alias upgrade-target com a flag --cluster-version, registre o cluster na frota e aplique os rótulos de cluster correspondentes no momento da criação (se a etapa usar um seletor de rótulos). Se nenhum lançamento estiver ativo ou concluído para a sequência, o alias upgrade-target será resolvido para o destino de upgrade automático do canal de lançamento do cluster.

Para criar um cluster com o alias upgrade-target, execute um dos seguintes comandos:

Piloto automático

gcloud container clusters create-auto CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --fleet-project=FLEET_HOST_PROJECT_ID \
    --labels=STAGE_KEY=STAGE_VALUE \
    --cluster-version=upgrade-target \
    --release-channel=CHANNEL

Padrão

gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --fleet-project=FLEET_HOST_PROJECT_ID \
    --labels=STAGE_KEY=STAGE_VALUE \
    --cluster-version=upgrade-target \
    --release-channel=CHANNEL

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • CONTROL_PLANE_LOCATION: a região ou zona do Compute Engine do cluster. Para clusters do Autopilot, especifique uma região.
  • FLEET_HOST_PROJECT_ID: o ID do projeto host da frota referenciado pela sequência de lançamento. A flag --fleet-project é obrigatória se o cluster estiver em um projeto diferente do projeto host da frota. Se o cluster estiver no mesmo projeto, especifique --enable-fleet em vez de --fleet-project=FLEET_HOST_PROJECT_ID.
  • STAGE_KEY=STAGE_VALUE: a chave do rótulo e o valor que correspondem ao seletor de rótulo do estágio. Omita a flag --labels se o estágio não usar um seletor de rótulo.
  • CHANNEL: o canal de lançamento usado pela sequência de lançamento (como regular ou stable).

Ignorar um cluster em uma sequência de lançamento

É possível fazer com que o GKE ignore um cluster em uma sequência de lançamento. É possível ignorar um ou mais clusters em uma sequência de lançamento. Para mais informações, consulte Ignorar um cluster em uma sequência de lançamento.

Para que o GKE ignore um cluster em uma sequência de lançamento, siga estas etapas:

  1. Adicione um rótulo ao cluster que você quer que o GKE ignore ou use um rótulo existente. Por exemplo, é possível fazer com que o GKE ignore um rótulo como status ou um rótulo quando ele tem um valor específico, como status=quarantine.
  2. Defina a sequência de lançamento para ignorar clusters com esse rótulo. Para fazer isso, siga as etapas abaixo, dependendo de como você gerencia sua sequência de lançamento:

    gcloud

    Execute este comando:

    gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
        --ignored-clusters-selector="resource.labels.LABEL_TO_IGNORE"
    

    Substitua:

    • ROLLOUT_SEQUENCE_NAME: o nome da sequência de lançamento.
    • LABEL_TO_IGNORE: o nome do rótulo para clusters que o GKE precisa ignorar na sequência de lançamento.

    Terraform

    Se você usa o Terraform para gerenciar sua sequência de lançamento, adicione o campo a seguir ao bloco usado para criar a sequência de lançamento. É possível adicionar o campo em qualquer lugar, exceto entre os blocos stages, que precisam ser consecutivos:

    ignored_clusters_selector {
      label_selector = "resource.labels.LABEL_TO_IGNORE"
    }
    

    Substitua LABEL_TO_IGNORE pelo nome do rótulo para clusters que o GKE precisa ignorar na sequência de lançamento.

Estas instruções configuram o GKE para ignorar um tipo de rótulo na sequência de lançamento. Se você quiser ignorar vários rótulos ou criar expressões mais complexas para ignorar clusters com rótulos específicos, transmita valores para esse campo usando a sintaxe de expressão CEL. Todos os rótulos precisam usar o prefixo resource.labels..

Adicionar um cluster de volta a uma sequência de lançamento

Se você seguiu as instruções na seção anterior para o GKE ignorar um cluster em uma sequência de lançamento, é possível desfazer essa ação. Se você não quiser mais que o GKE ignore os clusters, remova o seletor de ignorar com as seguintes instruções, dependendo de como você gerencia a sequência de lançamento:

gcloud

Execute este comando:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --clear-ignored-clusters-selector

Substitua ROLLOUT_SEQUENCE_NAME pelo nome da sequência de lançamento.

Esse comando redefine o seletor de ignorar para que o GKE não ignore nenhum cluster na sequência.

Terraform

Se você usa o Terraform para gerenciar a sequência de lançamento, remova o bloco ignored_clusters_selector do bloco usado para criar a sequência de lançamento.

Ou, se você não quiser que o GKE ignore um cluster específico, remova os rótulos do cluster.

Excluir uma sequência de lançamento

Para excluir uma sequência de lançamento, execute o seguinte comando:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

Substitua:

  • ROLLOUT_SEQUENCE_NAME pelo nome da sequência de lançamento.
  • HOST_PROJECT_ID pelo ID do projeto host da sequência de lançamento.

Quando você exclui uma sequência de lançamento, todos os lançamentos em andamento dessa sequência são cancelados. Os clusters que faziam parte da sequência revertem ao comportamento padrão de upgrade automático do canal de lançamento inscrito.

Migrar uma sequência de lançamento para usar etapas personalizadas

Se você usa a versão baseada em frota da sequência de lançamento, é possível migrar para uma sequência que usa fases personalizadas criando um novo RolloutSequence que faça referência às frotas atuais. Observação: esta versão da sequência de lançamento não tem suporte para o console Cloud de Confiance .

Para migrar sua sequência de lançamento, siga estas etapas:

  1. Se quiser, antes de migrar a sequência, faça uma cópia da configuração atual de sequência de lançamento. Para fazer uma cópia da configuração, siga um destes procedimentos:

    Recomendamos que você não exclua a sequência de lançamento baseada em frota para facilitar a reversão para a versão anterior da sequência de lançamento, se necessário. Não é necessário excluir a sequência de lançamento baseada em frota para que a sequência de lançamento com estágios personalizados funcione, porque o GKE obedece apenas à sequência de lançamento com estágios personalizados quando ambas existem.

  2. Crie um projeto dedicado do Cloud de Confiance by S3NS para hospedar sua sequência de lançamento. Normalmente, esse projeto não faz parte da sequência. Ou seja, ele não contém frotas ou clusters que fazem parte da sequência.

  3. Se você quiser que a sequência de lançamento inclua clusters específicos em uma frota, adicione rótulos a esses clusters. Esta etapa é opcional.

  4. Siga as instruções em Criar uma sequência de implantação com etapas personalizadas.

    Por exemplo, o manifesto a seguir, chamado rollout-sequence-migrate.yaml, faz referência às frotas atuais em uma sequência de lançamento anterior. Esse manifesto descreve três estágios, incluindo um estágio canary na frota prod:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 604800s
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
      label-selector: canary=true
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
    

Imediatamente após a definição de um novo RolloutSequence para as frotas, o GKE começa a fazer upgrade delas de acordo com a nova sequência e remove a configuração anterior.

Migrar uma sequência de lançamento com estágios personalizados para a sequência de lançamento anterior

Esta seção descreve como reverter do sequenciamento de lançamento com etapas personalizadas para o modelo de sequenciamento de lançamento baseado em frota. Esse processo envolve excluir o novo RolloutSequence e restaurar a configuração original baseada em frota.

Evitar upgrade fora de ordem durante a migração

Para evitar upgrades não intencionais ou fora de ordem enquanto você reconfigura sua sequência, aplique uma exclusão de manutenção aos seus clusters de produção. Essa etapa pausa temporariamente todos os upgrades automáticos nesses clusters. Por exemplo, é possível configurar uma exclusão de manutenção do tipo no upgrades nos clusters de produção.

Excluir a sequência de lançamento

Exclua o objeto RolloutSequence que gerencia seus clusters. Essa exclusão desativa o recurso de etapas personalizadas.

Para excluir o RolloutSequence, execute o seguinte comando:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME

Substitua ROLLOUT_SEQUENCE_NAME pelo nome da sequência de lançamento.

Restaurar a configuração anterior da sequência de lançamento (sem etapas personalizadas)

Depois de excluir o RolloutSequence, é possível restaurar a configuração original baseada em frota. Esse processo envolve a recriação dos recursos clusterupgrade com os parâmetros originais, incluindo os links upstreamFleet e os tempos de imersão para cada frota na sua sequência. Para mais informações, consulte Criar uma sequência de lançamento.

Remover as exclusões de manutenção

Depois de restaurar a configuração original de sequenciamento de lançamento com base na frota, remova a exclusão de manutenção aplicada na primeira etapa desta seção. O GKE retoma os upgrades automáticos, agora controlados pela sequência restaurada com base na frota.

A seguir