Nesta página, mostramos como gerenciar upgrades de cluster do GKE usando o sequenciamento de lançamentos. Para saber mais, consulte Sobre upgrades de cluster com sequenciamento de lançamento.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
- Verifique se você ativou as APIs necessárias para as frotas. Essas APIs precisam ser ativadas nos projetos de host da frota para criar qualquer tipo de sequência de implantação.
- Verifique se você ativou o GKE Enterprise nos seus projetos host de frota a fim de criar uma sequência de lançamento baseada em escopo (pré-lançamento).
- Para instruções do Terraform, use a versão 5.13.0 ou posterior
do provedor
google
.
Funções exigidas
- Verifique se você tem as
permissões necessárias do IAM
para o registro de clusters. Você precisa conceder as seguintes permissões:
- Permissões de registro de cluster, nos projetos host da frota.
- Permissões de administrador de cluster para todos os clusters do GKE serem registrados.
- Permissões de registro de cluster entre projetos para que todos os clusters do GKE sejam registrados em uma frota em um projeto diferente.
Configurar uma sequência de lançamento
Neste documento, você aprende a criar uma sequência de lançamento usando grupos de clusters organizados por frotas ou escopos. Neste documento, usamos o termo grupo para se referir às frotas e aos escopos de equipe, porque é possível criar uma sequência de lançamento organizada com qualquer um dos métodos de agrupamento.
É possível criar uma sequência de até três grupos de clusters e 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 Standard.
Para criar uma sequência de lançamento, os clusters precisam ser organizados em grupos de frotas ou escopos. Para orientações sobre como organizar os clusters, consulte o exemplo do banco comunitário. Depois que eles forem organizados em grupos, será possível criar uma sequência de lançamento definindo as relações de grupo upstream e o tempo de permanência de cada grupo. Upstream, na sequência de lançamento, refere-se ao grupo anterior e downstream, ao próximo.
Organizar os clusters em grupos
Em uma sequência de lançamento, todos os clusters em todos os grupos precisam estar registrados no mesmo canal de lançamento e na mesma versão secundária. Se esses requisitos não forem atendidos e houver discrepâncias de versão entre clusters, isso poderá causar problemas com o lançamento da versão. Para mais informações, consulte Qualificação para o lançamento.
É possível criar sequências de lançamento entre frotas ou entre escopos de equipe de uma equipe (pré-lançamento).
Como você viu em Sobre upgrades de cluster com sequenciamento de lançamento, os escopos de equipe são uma construção no nível da frota empresarial para associar subconjuntos de clusters de frota a equipes de aplicativos específicas. É necessário ativar o GKE Enterprise para usar escopos de equipe. As seguintes limitações se aplicam ao usar ou criar escopos de equipe para o sequenciamento de lançamento:
As sequências baseadas em equipe exigem clusters de locação única: em outras palavras, cada cluster individual é associado somente a uma única equipe. Os clusters compartilhados (que recebem suporte no gerenciamento geral de equipes da frota) não têm suporte para o sequenciamento de lançamento.
Cada escopo de equipe precisa estar em uma frota diferente para criar uma sequência de lançamento entre eles. Não é possível criar uma sequência de lançamento entre diferentes escopos de equipe na mesma frota.
Se você já tiver organizado os clusters em grupos, pule as etapas a seguir e continue para Criar uma sequência de lançamento.
Frotas
Para criar uma sequência de implantação baseada em frota, primeiro você precisa agrupar seus clusters em frotas. É possível organizar os clusters por ambientes de implantação, como teste, preparo e produção, conforme mostrado no exemplo de sequência de lançamento com base em frota.
Registre cada cluster com uma frota com base no agrupamento escolhido.
equipes
Para criar uma sequência de lançamento baseada em equipe, é preciso agrupar os clusters em escopos de equipe. Para fazer isso, primeiro organize seus clusters em frotas por ambientes de implantação, como teste, preparo e produção, conforme mostrado na sequência de exemplo com base no escopo do lançamento. Em seguida, é possível subdividir ainda mais os clusters em escopos para clusters de diferentes equipes.
- Para cada cluster na sequência, registre-o em uma frota. O cluster precisa ser registrado na frota no projeto em que você vai criar o escopo. Se você quiser registrar um cluster em uma frota em um projeto host diferente, verifique se definiu as permissões necessárias para o registro entre projetos.
Crie de dois a três escopos para organizar os clusters. Crie cada escopo no projeto host da respectiva frota da equipe. É possível ter até três escopos em uma sequência de lançamento.
Consulte a referência de
gcloud alpha container fleet scopes create
para consultar uma lista completa de sinalizações. Com o comandocreate
, é possível usar as flags nas instruções para criar uma sequência de lançamento.
Criar uma sequência de lançamento
Uma sequência de lançamento é organizada como uma lista vinculada com até três elementos.
Ao criar uma sequência de lançamento, você define as seguintes propriedades para cada grupo de clusters, seja uma frota ou um escopo:
- Grupo upstream: a frota ou o escopo upstream, que qualifica novas versões para o grupo downstream. Não defina um grupo upstream para o primeiro grupo em uma sequência.
- Tempo de imersão: o tempo de imersão de um grupo é o momento entre o momento em que os upgrades foram concluídos (ou o lançamento levou 30 dias) e o momento em que eles podem começar no grupo downstream. Para saber mais, consulte Como funciona a qualificação de versões em uma sequência de lançamento.
Para cada um dos comandos a seguir, substitua SOAK_TIME
pelo tempo de imersão do grupo que você está atualizando.
Frotas - gCloud
As instruções a seguir usam o
comando gcloud container fleet clusterupgrade update
, mas é possível
definir as mesmas propriedades com o comando
gcloud container fleet clusterupgrade create
.
Criar uma sequência de lançamento
Defina o tempo de imersão da primeira frota na sequência:
gcloud container fleet clusterupgrade update \ --default-upgrade-soaking=SOAK_TIME \ --project=FIRST_FLEET_PROJECT_ID
Substitua
FIRST_FLEET_PROJECT_ID
pelo ID do projeto host da frota.Defina a frota upstream e o tempo de permanência da segunda frota na sequência:
gcloud container fleet clusterupgrade update \ --upstream-fleet=FIRST_FLEET_PROJECT_ID \ --default-upgrade-soaking=SOAK_TIME \ --project=SECOND_FLEET_PROJECT_ID
Substitua
FIRST_FLEET_PROJECT_ID
pelo ID do primeiro projeto host da frota eSECOND_FLEET_PROJECT_ID
pelo ID do projeto host da frota.Opcional: se você quiser ter três frotas em uma sequência de lançamento, defina a frota upstream para a terceira frota na sequência:
gcloud container fleet clusterupgrade update \ --upstream-fleet=SECOND_FLEET_PROJECT_ID \ --default-upgrade-soaking=SOAK_TIME \ --project=THIRD_FLEET_PROJECT_ID
Substitua
SECOND_FLEET_PROJECT_ID
pelo ID do projeto host da segunda frota eTHIRD_FLEET_PROJECT_ID
pelo ID do projeto host da frota.
Frotas: Terraform
Nesta seção, mostramos como criar uma sequência baseada em frota 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_feature
.
Criar uma sequência de lançamento
Adicione o seguinte bloco à sua configuração do Terraform para definir o tempo de imersão para a primeira frota na sequência:
resource "google_gke_hub_feature" "feature" { name = "clusterupgrade" location = "global" spec { clusterupgrade { upstream_fleets = [] post_conditions { soaking = "SOAK_TIME" } } } project = "FIRST_FLEET_PROJECT_ID" }
Substitua
FIRST_FLEET_PROJECT_ID
pelo ID do projeto host da frota.Adicione o seguinte bloco à sua configuração do Terraform para definir a frota upstream e o tempo de imersão para a segunda frota na sequência:
resource "google_gke_hub_feature" "feature" { name = "clusterupgrade" location = "global" spec { clusterupgrade { upstream_fleets = ["FIRST_FLEET_PROJECT_ID"] post_conditions { soaking = "SOAK_TIME" } } } project = "SECOND_FLEET_PROJECT_ID" }
Substitua
FIRST_FLEET_PROJECT_ID
pelo ID do primeiro projeto host da frota eSECOND_FLEET_PROJECT_ID
pelo ID do projeto host da frota.Opcional: se você quiser ter três frotas em uma sequência de lançamento, adicione o bloco a seguir à configuração do Terraform para definir a frota upstream na sequência:
resource "google_gke_hub_feature" "feature" { name = "clusterupgrade" location = "global" spec { clusterupgrade { upstream_fleets = ["SECOND_FLEET_PROJECT_ID"] post_conditions { soaking = "SOAK_TIME" } } } project = "THIRD_FLEET_PROJECT_ID" }
Substitua
SECOND_FLEET_PROJECT_ID
pelo ID do projeto host da segunda frota eTHIRD_FLEET_PROJECT_ID
pelo ID do projeto host da frota.
Equipes: gcloud
É possível definir essas propriedades ao criar ou atualizar um escopo. As instruções
a seguir usam o comando gcloud alpha container fleet scopes update
. No entanto, é possível definir as mesmas propriedades
ao criar um escopo com o comando gcloud alpha container fleet scopes create
.
Para cada um desses comandos, substitua as variáveis pelo nome do respectivo escopo ou pelo ID do projeto host da frota do escopo.
Criar uma sequência de lançamento
Defina o tempo de imersão do primeiro escopo na sequência:
gcloud alpha container fleet scopes update projects/FIRST_SCOPE_PROJECT_ID/locations/global/scopes/FIRST_SCOPE_NAME \ --default-upgrade-soaking=SOAK_TIME \ --project=FIRST_SCOPE_PROJECT_ID
Defina o escopo upstream e o tempo de imersão para o segundo escopo na sequência:
gcloud alpha container fleet scopes update projects/SECOND_SCOPE_PROJECT_ID/locations/global/scopes/SECOND_SCOPE_NAME \ --upstream-scope=projects/FIRST_SCOPE_PROJECT_ID/locations/global/scopes/FIRST_SCOPE_NAME \ --default-upgrade-soaking=SOAK_TIME \ --project=SECOND_SCOPE_PROJECT_ID
Opcional: se você quiser ter três escopos em uma sequência de lançamento, defina o escopo upstream para o terceiro escopo na sequência:
gcloud alpha container fleet scopes update projects/THIRD_SCOPE_PROJECT_ID/locations/global/scopes/THIRD_SCOPE_NAME \ --upstream-scope=projects/SECOND_SCOPE_PROJECT/locations/global/scopes/SECOND_SCOPE_NAME \ --default-upgrade-soaking=SOAK_TIME \ --project=THIRD_SCOPE_PROJECT_ID
Verificar o status de uma sequência de lançamento
Use esses comandos nas seções a seguir para verificar o progresso dos upgrades em uma sequência de lançamento. Para saber mais sobre quais detalhes são fornecidos, consulte Informações de status para uma sequência de lançamento
Para executar esses comandos, verifique se você tem as permissões necessárias para cada projeto de host da frota. Por exemplo, se a sequência tiver escopos entre projetos em diferentes frotas, você precisará de permissões em cada projeto para descrever a sequência.
Para os comandos a seguir, se você precisar apenas de informações sobre uma frota ou um escopo na sequência, substitua a sinalização --show-linked-cluster-upgrade
por --show-cluster-upgrade
.
Frotas
Verifique o status de uma sequência de lançamento com base em frota:
gcloud container fleet clusterupgrade describe \
--show-linked-cluster-upgrade --project=FLEET_PROJECT_ID
Substitua FLEET_PROJECT_ID
pelo ID do projeto host de qualquer frota na sequência.
Consulte a referência de gcloud container fleet clusterupgrade
describe
para ver uma
lista completa de sinalizações.
equipes
Verifique o status de uma sequência de lançamento com base no escopo:
gcloud alpha container fleet scopes describe SCOPE_NAME \
--show-linked-cluster-upgrade
--project=SCOPE_PROJECT_ID
Substitua SCOPE_NAME
pelo nome de qualquer escopo na
sequência de lançamento e SCOPE_PROJECT_ID
pelo
ID do projeto desse escopo.
Consulte a referência de gcloud alpha container fleet scopes
describe
para consultar uma
lista completa de sinalizações.
Para ver o status de clusters individuais em uma frota ou escopo, execute o
seguinte comando no projeto host da frota e consulte a seção
membershipStates
:
gcloud container fleet features describe clusterupgrade
Informações de status para uma sequência de lançamento
Ao verificar o status do lançamento de uma versão, é possível ver o progresso de cada grupo e cluster dentro desse grupo.
Consulte a tabela a seguir para ver os status possíveis de um cluster ou grupo:
Status | Para cluster | Por grupo |
---|---|---|
Não qualificado | Este cluster não está qualificado para este upgrade | Um ou mais clusters neste grupo não estão qualificados para este upgrade. |
PENDENTE | O upgrade não foi iniciado ou está em andamento para o cluster. | O upgrade não foi iniciado em nenhum dos clusters no grupo. |
IN_PROGRESS | N/A | O upgrade foi iniciado em pelo menos um cluster, mas não foi concluído em todos. |
INICIANDO | O upgrade foi concluído no cluster e não foi concluído. | O upgrade foi concluído em todos os clusters e não foi concluído. |
FORCED_SOAKING | O upgrade levou mais que o tempo máximo (30 dias) e, portanto, o forçamos a entrar na fase de imersão. O upgrade ainda pode continuar no cluster. | O upgrade levou mais que o tempo máximo (30 dias) e, portanto, o forçamos a entrar na fase de imersão. O upgrade ainda pode continuar nos clusters. |
CONCLUIR | O upgrade é tratado como "concluído", o que significa que ele foi concluído no cluster. | O upgrade é tratado como "concluído" e pronto para ser consumido pelo grupo downstream, o que significa que ele foi concluído. |
Na saída desses comandos, os atributos clusterUpgrade(s).spec
e clusterUpgrade(s).state
contêm outras informações sobre o upgrade de cluster, como tempo de imersão, modificações de upgrade de cluster e status do upgrade.
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.
Alterar o tempo de permanência em um grupo
É possível alterar o tempo de imersão padrão de um grupo ou de tempo para esse upgrade em uma versão específica.
Atualizar o tempo de imersão padrão
Para alterar o tempo de permanência padrão de um grupo, use os comandos das instruções para Criar uma sequência de lançamento, omitindo as sinalizações para definir o grupo upstream.
Modificar o tempo de imersão padrão
É possível alterar o tempo de imersão de um lançamento de versão específico para que seja diferente do tempo de imersão padrão para o grupo. Por exemplo, se você já tiver qualificado uma nova versão e estiver pronto para upgrades para o próximo grupo, defina o tempo de imersão como zero. Também é possível usá-lo se quiser mais tempo do que o padrão de imersão para qualificar uma versão específica.
Como o tempo de permanência é definido por grupo, se você quiser modificar o tempo de permanência para outros grupos nesta sequência, use o mesmo comando com o nome da frota ou do escopo substituído, dependendo do tipo de sequência.
Para as instruções nesta seção, substitua as seguintes variáveis:
SOAK_TIME
: o tempo de imersão a ser usado além do padrão. Por exemplo, "0d" se você quiser pular o tempo de imersão para um lançamento de versão.UPGRADE_NAME
: o tipo de upgrade, sendok8s_control_plane
para upgrades de plano de controle ouk8s_node
para upgrades de nó.VERSION
: a versão do GKE em que você quer modificar o tempo de imersão padrão após a versão (por exemplo, 1.25.2-gke.400) ter sido implementada nesse grupo.
Frotas - gCloud
Execute esse comando no projeto host da frota em que você quer modificar o tempo de permanência usado para o lançamento de uma versão específica.
Altere o tempo de permanência de uma frota:
gcloud container fleet clusterupgrade update
--add-upgrade-soaking-override=SOAK_TIME \
--upgrade-selector=name=UPGRADE_NAME,version=VERSION
Frotas: Terraform
Adicione o seguinte bloco gke_upgrades_overrides
à configuração do Terraform
no bloco clusterupgrade
para substituir o
tempo de imersão usado para o lançamento de uma versão específica:
gke_upgrade_overrides {
upgrade {
name = "UPGRADE_NAME"
version = "VERSION"
}
post_conditions {
soaking = "SOAK_TIME"
}
}
Equipes: gcloud
Execute este comando no projeto host da frota do escopo. Substitua SCOPE_NAME
com o nome do escopo para o qual você quer substituir o tempo de imersão usado para o lançamento de uma versão específica.
Alterar o tempo de imersão de um escopo:
gcloud alpha container fleet scopes update SCOPE_NAME \
--add-upgrade-soaking-override=SOAK_TIME \
--upgrade-selector=name=UPGRADE_NAME,version=VERSION
Mudar a ordem de uma sequência
Se você quiser alterar a ordem de uma sequência, use os comandos das instruções para Criar uma sequência de lançamento para atualizar os grupos upstream.
Atrasar a conclusão do lançamento da versão do grupo
Se você precisar impedir temporariamente que um grupo conclua o lançamento de uma nova versão para os clusters, adicione uma exclusão de manutenção a qualquer um dos clusters que não foi feito o upgrade para a versão de destino. Isso pode pausar um grupo de prosseguir para o tempo de imersão ou grupo downstream por até 30 dias. Depois de 30 dias, o grupo começa a imersão.
É possível também alterar o tempo de imersão desse grupo para 30 dias a fim de maximizar o tempo que a sequência de lançamento aguarda antes de prosseguir para o próximo grupo.
Se você precisar atrasar ainda mais os upgrades a partir do próximo grupo, use exclusões de manutenção para os clusters do próximo grupo.
Alternar entre sequências de lançamento baseadas em frota e em escopo
É possível alternar de sequências baseadas em frota para sequências baseadas em escopo ou sequências baseadas em escopo para sequências baseadas em frota. Nas instruções, pressupomos que você esteja transferindo entre sequências organizadas como ilustradas nos diagramas de exemplo.
Frotas para equipes
Para alterar os clusters de uma sequência de lançamento baseada em frota para uma sequência de implantação baseada em escopo, siga estas etapas:
- Configure exclusões de manutenção para todos os clusters em cada frota para evitar upgrades enquanto estiver modificando sua configuração.
- Verifique se você ativou o GKE Enterprise nos seus projetos host de frota.
- Em cada frota, crie um ou mais escopos para subdividir o grupo de clusters nela.
- Crie uma ou mais sequências de lançamento entre os escopos correspondentes em cada frota.
- Adicione os clusters aos novos escopos.
- Remova as exclusões de manutenção configuradas para essa alteração.
De equipes para frotas
Para alterar os clusters de uma sequência de lançamento com base no escopo para uma sequência de implantação baseada na frota, siga estas etapas:
- Configure exclusões de manutenção para todos os clusters em cada frota para evitar upgrades enquanto estiver modificando sua configuração.
- Crie uma sequência de lançamento entre suas frotas.
- Remova os clusters dos escopos. Agora, esses clusters estão registrados apenas para as frotas do escopo que, na etapa anterior, você entrou em uma sequência de lançamento.
- Exclua os escopos da equipe.
- Remova as exclusões de manutenção configuradas para essa alteração.
Excluir uma sequência
Para excluir uma sequência, remova as associações upstream do segundo e do terceiro grupos (se a sequência de lançamento tiver três grupos).
Para frotas
Execute o comando a seguir no projeto de host da frota da segunda e da terceira frotas na sequência de lançamento:
gcloud container fleet clusterupgrade update --reset-upstream-fleet
Para equipes
Execute o seguinte comando no projeto host da frota do segundo e terceiro escopos na sequência de lançamento:
gcloud alpha container fleet scopes update SCOPE_NAME --reset-upstream-scope
Substitua SCOPE_NAME
pelos nomes do segundo e do terceiro escopos, respectivamente.
Solução de problemas
Resolver problemas de qualificação para o lançamento
Se todos os clusters em uma sequência de lançamento não tiverem o mesmo destino de upgrade, talvez o GKE não consiga continuar com os upgrades do cluster. Os upgrades automáticos não poderão continuar se um grupo upstream não qualificar um destino de upgrade para transmitir ao grupo downstream. Os upgrades automáticos também não poderão continuar se os clusters no grupo upstream qualificarem um destino de upgrade inválido para clusters no grupo downstream.
Para verificar se a sequência de lançamento tem problemas de qualificação, confira o status da sequência de lançamento. Se um grupo não estiver qualificado, siga as instruções para ver o status de clusters individuais em um grupo.
Para avançar imediatamente os upgrades de cluster, remova todos os clusters com status
INELIGIBLE
seguindo as instruções para Promover lançamentos parcialmente qualificados.
Corrigir a qualificação em um grupo
Em um grupo, se um cluster não estiver qualificado porque está em uma versão anterior (por exemplo, a maioria dos clusters no grupo está sendo atualizada de 1.23 para 1.24 e um cluster está na versão 1.22), é possível fazer upgrade manual da a versão 1.24 para resolver a discrepância.
Em um grupo, se um cluster não estiver qualificado porque está em uma versão posterior (por exemplo, a maioria dos clusters no grupo está sendo atualizado de 1.23 para 1.24 e um cluster está na versão 1.25), você não é possível fazer o downgrade manualmente para resolver a discrepância e remover o cluster.
Corrigir a qualificação entre grupos
Entre os grupos, se houver uma incompatibilidade nos destinos de upgrade em que o grupo downstream está em uma versão mais recente (por exemplo, o grupo upstream fez upgrade de 1.23 para 1.24 e os clusters no grupo downstream estão em 1.25), é possível fazer upgrade manual dos clusters no grupo upstream para 1.25 para garantir que eles prossigam.
Entre grupos, se houver uma incompatibilidade nos destinos de upgrade em que o grupo downstream está em uma versão anterior (por exemplo, o grupo upstream fez upgrade de 1.24 para 1.25 e os clusters no grupo downstream estão em 1.23), é possível fazer upgrade manual dos clusters no grupo downstream para 1.24 ou 1.25, a fim de garantir que os upgrades continuem.
Destacar lançamentos parcialmente qualificados
Se os upgrades de cluster em um grupo não forem concluídos devido a problemas de qualificação de lançamento (por exemplo, discrepâncias de versão em um grupo), você poderá remover os clusters não qualificados para a meta de upgrade de um grupo para concluir o lançamento da versão e iniciar o tempo de permanência ou avançar para o próximo grupo na sequência de lançamento. Também é possível remover um cluster de um grupo por outros motivos, por exemplo, se o uso dele não estiver mais relacionado aos outros clusters no grupo.
Siga as instruções para cancelar o registro de um cluster em uma frota ou remover clusters dos escopos, dependendo do tipo de sequência de lançamento.
Depois que você remover todos os clusters que estão impedindo a conclusão da implantação da versão de um grupo, o lançamento da versão do grupo será concluído. Confirme seguindo as instruções para verificar o status do lançamento de uma versão.