Sequência do lançamento de upgrades de cluster


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.

Funções exigidas

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.

  1. 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.
  2. 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 comando create, é possível usar as flags nas instruções para criar uma sequência de lançamento.

  3. Adicione cada cluster a um escopo.

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

  1. 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.

  2. 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 e SECOND_FLEET_PROJECT_ID pelo ID do projeto host da frota.

  3. 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 e THIRD_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

  1. 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.

  2. 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 e SECOND_FLEET_PROJECT_ID pelo ID do projeto host da frota.

  3. 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 e THIRD_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

  1. 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
    
  2. 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
    
  3. 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, sendo k8s_control_plane para upgrades de plano de controle ou k8s_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:

  1. Configure exclusões de manutenção para todos os clusters em cada frota para evitar upgrades enquanto estiver modificando sua configuração.
  2. Verifique se você ativou o GKE Enterprise nos seus projetos host de frota.
  3. Em cada frota, crie um ou mais escopos para subdividir o grupo de clusters nela.
  4. Crie uma ou mais sequências de lançamento entre os escopos correspondentes em cada frota.
  5. Adicione os clusters aos novos escopos.
  6. 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:

  1. Configure exclusões de manutenção para todos os clusters em cada frota para evitar upgrades enquanto estiver modificando sua configuração.
  2. Crie uma sequência de lançamento entre suas frotas.
  3. 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.
  4. Exclua os escopos da equipe.
  5. 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.

A seguir