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. Você pode escolher quanto tempo de teste de permanência quer após a conclusão dos upgrades de cluster em um grupo (máximo de 30 dias). É possível incluir clusters do Autopilot e Standard. 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 seus objetos RolloutSequence. Esse projeto atua como pai e coordenador dos rollouts em toda a 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 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 lançamento, você precisa ter o papel de editor da frota do IAM (roles/gkehub.editor) em cada projeto host da frota na sequência de lançamento e no projeto host da sequência de lançamento. Esse papel oferece 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 objetos RolloutSequence e usar frotas na sequência de lançamento.

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

É possível criar sequências de lançamento usando frotas hospedadas em projetos de 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 menos privilégios 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 segmentam 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 espera para 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 Estável e Normal, 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 se qualificarem 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=CLUSTER_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 em 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). Essa etapa de captura abrange todos os clusters restantes que o GKE não selecionou nas etapas anteriores. Se você atribuir um único cluster a várias etapas em um RolloutSequence, para resolver conflitos, o GKE vai atribuir o cluster apenas à primeira etapa.

As configurações de exemplo a seguir criam três estágios:

  • A primeira etapa tem como destino todos os clusters na frota dev. Após a conclusão do upgrade, há um tempo de imersão de sete dias (7d).
  • A segunda etapa segmenta clusters na frota prod que têm o rótulo canary=true. Após a conclusão do upgrade, há um tempo de imersão de 7 dias (7d).
  • A terceira etapa tem como destino os clusters restantes na frota prod. Após a conclusão do upgrade, há um tempo de imersão de sete 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 frota ou um subconjunto de clusters em uma frota. 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 concluir 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. É possível referenciar no máximo uma frota por etapa. Uma frota é identificada pelo projeto em que ela está hospedada. Esse projeto pode ser diferente do projeto em que os clusters estão localizados, se a frota tiver associações entre 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 a ser aguardado após o upgrade de todos os clusters em uma etapa anterior antes de prosseguir para a próxima etapa. Expressa 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 para humanos da 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 mais informações, consulte a documentação de referência para google_gke_hub_rollout_sequence.

  1. Adicione o seguinte bloco à sua 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 para humanos da 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 sua 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 um estágio para o plano de controle ou os nós, respectivamente. Se você tiver um lançamento em andamento na primeira etapa da sequência, o GKE fará o seguinte, dependendo se você gerencia a sequência com a CLI gcloud ou o Terraform:

  • CLI gcloud: quando você executa o comando, um prompt interativo pergunta se você quer cancelar o lançamento atual para criar o lançamento para a versão especificada. Se você responder afirmativamente, o GKE vai cancelar a implantação em andamento e criar uma nova. Caso contrário, o GKE vai manter o lançamento atual e não vai criar 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. É 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.

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 seguinte campo ao bloco. Você pode 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. 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.

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

Implantar uma versão nos 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 seguinte campo 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 pelo 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 comandos da Google Cloud CLI.

Listar lançamentos

Para listar todos os lançamentos ativos e históricos no projeto 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 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 do 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 no estágio, 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 segue 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 no 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

Para gerenciar um lançamento individual, siga as instruções nas seções abaixo. Para mais informações sobre como gerenciar um lançamento e as ações correspondentes que você pode realizar, consulte 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 Como pausar um lançamento.

Para pausar uma implementação, 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, consulte Listar lançamentos.

Retomar um lançamento

É possível retomar um lançamento pausado há menos de 90 dias. Para mais informações sobre essa ação, consulte 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 implantações de upgrades automáticos obrigatórios. Para mais informações sobre como cancelar lançamentos, consulte 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 Concluir uma etapa 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. O estágio precisa estar em execução ou em período de saturaçã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 os 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 as sequências de lançamento

Para listar todas as sequências 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 upgrades 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 os tipos de upgrades que 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 seguinte campo 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 sua 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 a sequência de lançamento, modifique o bloco que usou para criar a sequência de lançamento.

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 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 estas etapas, dependendo de como você gerencia a 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. Você pode 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 dos 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 seguindo estas 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 com o nome da sequência de lançamento.
  • HOST_PROJECT_ID com o 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 de sequenciamento de lançamento baseada em frota, é possível migrar para uma sequência que usa etapas personalizadas criando um novo RolloutSequence que faz referência às suas frotas atuais. Esta versão da sequenciamento 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, faça uma destas ações:

    Recomendamos não excluir a sequência de implantação baseada em frota para facilitar a reversão para a versão anterior da sequência de implantação, 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 Cloud de Confiance by S3NS dedicado 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 lançamento 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 de 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çamentos com etapas personalizadas para o modelo de sequenciamento de lançamentos 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 sua 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 recriar os 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 em frota, remova a exclusão de manutenção que você aplicou na primeira etapa desta seção. O GKE retoma os upgrades automáticos, agora regidos pela sequência restaurada com base na frota.

A seguir