Este documento mostra como gerir as atualizações de clusters do Google Kubernetes Engine (GKE) que usam a implementação faseada com etapas personalizadas. Cria uma sequência de implementação usando grupos de clusters organizados em frotas e, opcionalmente, subconjuntos de clusters dessas frotas. Pode escolher o tempo de teste de resistência que quer após as atualizações do cluster estarem concluídas num grupo (máximo de 30 dias). Pode incluir clusters do Autopilot e padrão. Para mais informações sobre o funcionamento desta funcionalidade, consulte o artigo Acerca da implementação sequencial com etapas personalizadas.
Se gerir implementações em várias frotas, recomendamos que use um projeto dedicado para alojar os seus objetos RolloutSequence. Este projeto funciona como o principal e o coordenador das implementações na sequência. Normalmente, este projeto não faz parte da sequência, ou seja, não contém frotas nem clusters que façam parte da sequência.
Antes de começar
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud initSe estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Certifique-se de que tem clusters do Autopilot ou Standard existentes. Para criar um novo cluster, consulte o artigo Crie um cluster do Autopilot.
(Opcional) Se ainda não tiver um projeto Google Cloud dedicado
RolloutSequencepara alojar a sua configuração, crie um através da Google Cloud consola ou de outro método.Certifique-se de que ativou as APIs necessárias para frotas. Estas APIs têm de estar ativadas nos projetos de anfitriões da frota para criar qualquer tipo de sequência de implementação. Para o projeto anfitrião da sequência de implementação, ative a API
gkehub.googleapis.com.
Funções necessárias
Para criar um projeto, precisa da função de criador de projetos (roles/resourcemanager.projectCreator), que contém a autorização resourcemanager.projects.create. Saiba como conceder
funções.
Para criar ou modificar uma sequência de implementação, tem de ter a função do IAM de editor de frotas (roles/gkehub.editor) em cada projeto de anfitrião da frota na sequência de implementação e no projeto de anfitrião da sequência de implementação. Esta função oferece as seguintes autorizações:
gkehub.rolloutsequences.creategkehub.rolloutsequences.getgkehub.rolloutsequences.listgkehub.rolloutsequences.updategkehub.rolloutsequences.deletegkehub.fleet.get
Estas autorizações permitem-lhe criar, aceder e modificar objetos RolloutSequence e usar frotas na sequência de implementação.
Se precisar de registar ou anular o registo de clusters numa frota, precisa de todas as seguintes autorizações:
- Autorizações de registo de clusters nos seus projetos anfitriões da frota.
- Autorizações de administrador do cluster para registar clusters do GKE.
- Autorizações de registo de clusters entre projetos para que quaisquer clusters do GKE sejam registados numa frota num projeto diferente.
Para mais informações sobre as funções de IAM com menos privilégios necessárias para diferentes tarefas, consulte o artigo Receba sugestões de funções predefinidas com a ajuda do Gemini.
Configure uma sequência de implementação
Para criar uma sequência de implementação, os seus clusters têm de estar organizados em grupos de frotas. Também pode criar fases detalhadas que podem segmentar subconjuntos específicos de clusters numa frota através de etiquetas do Kubernetes. Para orientações sobre como organizar os seus clusters, consulte o exemplo do banco da comunidade. Depois de organizar os clusters em grupos e, opcionalmente, etiquetá-los, pode criar uma sequência de implementação definindo a lista ordenada de fases e o tempo de teste para cada grupo.
Organize clusters em frotas
Numa sequência de implementação, recomendamos que inscreva todos os clusters no mesmo canal de lançamento. Se os clusters não estiverem inscritos no mesmo canal, o GKE seleciona uma versão do canal mais conservador na sequência. Por exemplo, se os clusters estiverem inscritos nos canais Estável e Regular, o GKE escolhe a versão do canal Estável. Também recomendamos que todos os clusters executem a mesma versão secundária para serem elegíveis para a mesma versão de destino de atualização automática.
Se já tiver organizado os seus clusters em frotas, pode ignorar os passos seguintes e avançar para a secção Crie subconjuntos de clusters.
- Agrupe os seus clusters em frotas. Pode organizar os seus clusters por ambientes de implementação, como Teste, Preparação e Produção (recomendado).
- Registe cada cluster numa frota com base no agrupamento escolhido.
Crie subconjuntos de clusters (opcional)
Para que uma fase na sua sequência de implementação segmente clusters específicos, tem de etiquetar esses clusters.
Por exemplo, para testar uma nova versão num pequeno subconjunto de clusters antes de uma implementação completa, pode aplicar uma etiqueta canary a esses clusters. Para adicionar a etiqueta canarytrue com o valor true a um cluster através da CLI do Google Cloud, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \
--location=CLUSTER_LOCATION\
--update-labels=canary=true
Substitua o seguinte:
CLUSTER_NAME: o nome do cluster existente.CLUSTER_LOCATION: a região ou zona do Compute Engine do cluster.
O comando --update-labels=canary=true indica ao GKE que aplique a etiqueta canary ao cluster .
Para mais informações sobre como adicionar uma etiqueta a um cluster, consulte o artigo Adicione ou atualize etiquetas para clusters existentes.
Crie uma sequência de implementação com fases personalizadas
Uma sequência de implementação define a ordem das atualizações através de fases. Para criar uma sequência de implementação, primeiro tem de criar um ficheiro YAML que defina as fases e, em seguida, criar um RolloutSequence.
Para garantir que a sequência capta todos os clusters, cada frota tem de incluir uma fase geral (uma fase sem um seletor de etiquetas). Esta fase geral
captura todos os restantes clusters que o GKE não selecionou nas fases
anteriores. Se atribuir um único cluster a várias fases num único
RolloutSequence, para resolver conflitos, o GKE atribui implicitamente
o cluster apenas à fase mais antiga.
A configuração de exemplo seguinte cria três fases:
- A primeira fase segmenta todos os clusters na frota
dev. Após a conclusão da atualização, existe um período de estabilização de 7 dias (um valor de604800segundos). - A segunda fase segmenta os clusters na frota
prodque têm a etiquetacanary=true. Após a conclusão da atualização, existe um período de estabilização de 7 dias. - A terceira fase segmenta os restantes clusters na frota
prod. Após a conclusão da atualização, existe um período de teste de 7 dias.
Guarde o seguinte manifesto como
rollout-sequence.yaml:- stage: fleet-projects: - projects/dev soak-duration: 604800s - stage: fleet-projects: - projects/prod soak-duration: 604800s label-selector: resource.labels.canary=='true' - stage: fleet-projects: - projects/prod soak-duration: 604800sTenha em conta o seguinte:
stage: inclui uma frota ou um subconjunto de clusters numa frota. Os clusters nas fases anteriores têm de ser totalmente atualizados e testados antes de a sequência avançar para a fase seguinte. No entanto, se um cluster não tiver terminado a atualização 30 dias após o início do processo de atualização, o GKE inicia o período de saturação.fleet-projects: uma lista de frotas a partir da qual pode selecionar clusters para esta fase. Pode referenciar, no máximo, uma frota por fase. Uma frota é identificada pelo projeto onde está alojada. Este projeto pode ser um projeto diferente do projeto onde os clusters estão localizados, se a frota contiver 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. Este campo usa a sintaxe do Idioma de expressão comum (IEC) e tem de começar comresource.labels.soak-duration: o tempo de espera após a atualização de todos os clusters numa fase anterior antes de avançar para a fase seguinte. Expresso em segundos.
Para criar a sequência de implementação que definiu no
rollout-sequence.yamlmanifesto, execute o seguinte comando:gcloud beta container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \ --display-name=DISPLAY_NAME \ --stage-config=rollout-sequence.yamlSubstitua o seguinte:
ROLLOUT_SEQUENCE_NAME: um identificador imutável em conformidade com as especificações do RFC-1034, por exemplo,test-rollout-sequence.DISPLAY_NAME: uma string legível para a sua sequência de implementação.
Verifique o estado de uma implementação
Depois de configurar uma sequência de implementação, o sistema cria automaticamente Rollout
objetos para gerir as atualizações. Pode observar e acompanhar o progresso destes objetos através de comandos da Google Cloud CLI.
Liste implementações
Para apresentar uma lista de todas as implementações ativas e do histórico no projeto anfitrião da sequência de implementação, execute o seguinte comando:
gcloud beta container fleet rollouts list --project=HOST_PROJECT_ID
Substitua HOST_PROJECT_ID pelo ID do projeto anfitrião da sequência de implementação.
Pode omitir a flag --project=HOST_PROJECT_ID se já estiver no projeto onde a sequência de implementação está alojada.
O resultado é semelhante ao 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 implementação que contêm kcp referem-se a atualizações do plano de controlo e os nomes que contêm node referem-se a atualizações de nós. O segmento do nome da implementação após kcp ou node é derivado da versão do GKE.
Descreva uma implementação
Para obter informações detalhadas sobre uma implementação específica, incluindo a versão de destino, o estado e os clusters que foram atualizados, use o comando describe com o ID de implementação que obteve no comando anterior:
gcloud beta container fleet rollouts describe ROLLOUT_ID \
--project=HOST_PROJECT_ID
Substitua o seguinte:
ROLLOUT_ID: o ID de implementação que obteve quando listou as implementações.HOST_PROJECT_ID: o ID do projeto onde a sequência de implementação está alojada.
Por exemplo:
gcloud beta container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
--project=my-hostfleet
O resultado é semelhante ao 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 estado de uma implementação
Quando descreve uma implementação, os campos stages e membershipStates do resultado fornecem o estado de progresso de cada fase e cluster nessa fase, respetivamente.
A tabela seguinte indica os potenciais estados de uma fase:
| Estado | Descrição |
|---|---|
PENDING |
A atualização ainda não começou para esta fase. |
RUNNING |
A atualização está em curso para esta fase. Se configurou um período de manutenção para os clusters na fase, o GKE aguarda que o período seja aberto antes de atualizar os clusters. |
SOAKING |
Todos os clusters nesta fase concluíram as respetivas atualizações e a fase está no respetivo período de saturação configurado. |
FORCED_SOAKING |
A atualização demorou mais do que o tempo máximo de atualização (30 dias) e, por isso, o GKE iniciou a fase de saturação à força. A atualização continua nos restantes clusters. |
COMPLETED |
A fase de teste de estabilidade foi concluída e a implementação avança para a fase seguinte. |
A tabela seguinte apresenta os potenciais estados de um cluster numa sequência:
| Estado | Descrição |
|---|---|
PENDING |
A atualização está pendente neste cluster. |
INELIGIBLE |
Este cluster não é elegível para a atualização, possivelmente devido a uma discrepância de versão. O motivo da inelegibilidade é fornecido no resultado. |
RUNNING |
A atualização está em curso neste cluster. |
SUCCEEDED |
A atualização foi concluída com êxito neste cluster. |
FAILED |
A atualização falhou neste cluster. As segmentações com falhas são repetidas indefinidamente enquanto a respetiva fase estiver ativa (num estado RUNNING ou FORCED_SOAKING). |
Faça a gestão de uma sequência de implementação
Pode controlar as atualizações automáticas de clusters com a sequenciação da implementação de várias formas, conforme explicado nas secções seguintes.
Apresente uma lista das suas sequências de implementação
Para apresentar uma lista de todas as sequências de implementação no seu projeto anfitrião, execute o seguinte comando:
gcloud beta container fleet rolloutsequences list --project=HOST_PROJECT_ID
Substitua HOST_PROJECT_ID pelo ID do projeto anfitrião da sequência de implementação.
Descreva uma sequência de implementação
Para ver os detalhes de uma sequência de implementação específica, execute o seguinte comando:
gcloud beta container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
--project=HOST_PROJECT_ID
Substitua o seguinte:
ROLLOUT_SEQUENCE_NAME: o nome da sequência de implementação.HOST_PROJECT_ID: o ID do projeto anfitrião da sequência de implementação.
O resultado é semelhante ao 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'
Modifique uma sequência de implementação
Pode modificar uma sequência de implementação existente editando o ficheiro de configuração YAML onde definiu a sequência. Por exemplo, pode atualizar o tempo de imersão de um palco ou atualizar o palco para alterar a ordem das atualizações. Depois de editar o ficheiro, aplique as alterações.
Por exemplo, se definiu a sequência de implementação original num ficheiro denominado
rollout-sequence.yaml, edite o ficheiro conforme necessário. Em seguida, execute o seguinte comando:
gcloud beta container fleet rolloutsequences update test-rollout-sequence \
--display-name="My Updated Rollout Sequence" \
--stage-config=rollout-sequence.yaml
Elimine uma sequência de implementação
Para eliminar uma sequência de implementação, execute o seguinte comando:
gcloud beta container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
--project=HOST_PROJECT_ID
Substitua o seguinte:
ROLLOUT_SEQUENCE_NAMEcom o nome da sequência de implementação.HOST_PROJECT_IDcom o ID do projeto anfitrião da sua sequência de implementação.
Quando elimina uma sequência de implementação, todas as implementações em curso dessa sequência são canceladas. Os clusters que faziam parte da sequência revertem para o comportamento de atualização automática predefinido do respetivo canal de lançamento inscrito.
Migre uma sequência de implementação existente para usar fases personalizadas
Se usar a versão de implementação baseada na frota geralmente disponível da sequenciação, pode migrar para uma sequência que use fases personalizadas criando um
novo RolloutSequence que faça referência às suas frotas existentes.
Antes de migrar a sequência, recomendamos que faça uma cópia da configuração da sequência de implementação atual.
Para migrar a sequência de implementação, conclua os seguintes passos:
- Crie um projeto Google Cloud dedicado para alojar a sua sequência de implementação. Normalmente, este projeto não faz parte da sequência, ou seja, o projeto não contém frotas nem clusters que façam parte da sequência.
- Se quiser que a sequência de implementação inclua clusters específicos numa frota, adicione etiquetas a esses clusters. Este passo é opcional.
Siga as instruções em Crie uma sequência de implementação com fases personalizadas.
Por exemplo, o seguinte manifesto, com o nome
rollout-sequence-migrate.yaml, faz referência às implementações existentes numa sequência de implementação anterior. Este manifesto descreve três fases, incluindo uma fasecanaryna frotaprod:- 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 definir um novo RolloutSequence para as suas frotas, o GKE começa a atualizar as frotas de acordo com a nova sequência e remove a configuração anterior.
Migre uma sequência de implementação com fases personalizadas para a sequência de implementação anterior
Esta secção descreve como reverter a sequenciação de implementação com fases personalizadas para o modelo de sequenciação baseado na frota geralmente disponível. Este processo envolve a eliminação do novo
RolloutSequence e o restauro da configuração original baseada na frota.
Impeça a atualização fora de ordem durante a migração
Para evitar atualizações não intencionais ou desordenadas enquanto reconfigura a sequência, aplique uma exclusão de manutenção aos clusters de produção. Este passo pausa temporariamente todas as atualizações automáticas
nesses clusters. Por exemplo, pode configurar uma exclusão de manutenção do tipo no upgrades nos seus clusters de produção.
Elimine a sequência de implementação
Elimine o objeto RolloutSequence que gere os seus clusters. Esta eliminação
desativa a funcionalidade de etapas personalizadas.
Para eliminar o RolloutSequence, execute o seguinte comando:
gcloud beta container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME
Substitua ROLLOUT_SEQUENCE_NAME pelo nome da sua sequência de implementação.
Restaure a configuração da sequência de implementação anterior (sem fases personalizadas)
Depois de eliminar o RolloutSequence, pode restaurar a configuração original baseada na frota. Este processo envolve a recriação das funcionalidades clusterupgrade com os respetivos 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 o artigo Crie uma sequência de implementação.
Remova as exclusões de manutenção
Depois de restaurar a configuração de sequenciação de implementação baseada na frota original, remova a exclusão de manutenção que aplicou no primeiro passo desta secção. O GKE retoma as atualizações automáticas, agora regidas pela sequência baseada na frota restaurada.
O que se segue
- Saiba mais acerca das atualizações de clusters com sequenciação de implementação.