Como fazer upgrade de clusters do Anthos na AWS

Para fazer upgrade dos clusters do Anthos no ambiente da AWS (GKE na AWS), primeiro faça upgrade do seu serviço de gerenciamento e faça upgrade dos clusters do usuário.

Serviço de gerenciamento

Nas seções a seguir, você fará upgrade do serviço de gerenciamento.

Antes de começar

Para se conectar aos clusters do Anthos nos recursos da AWS, siga as etapas a seguir. Selecione se você tem uma VPC atual da AWS (ou conexão direta com a VPC) ou criou uma VPC dedicada ao criar seu serviço de gerenciamento.

VPC atual

Se você tiver uma conexão direta ou VPN com uma VPC atual, omita a linha env HTTP_PROXY=http://localhost:8118 dos comandos neste tópico.

VPC dedicada

Quando você cria um serviço de gerenciamento em uma VPC dedicada, o GKE na AWS inclui um bastion host em uma sub-rede pública.

Para se conectar ao serviço de gerenciamento, siga estas etapas:

  1. Mude para o diretório com os clusters do Anthos na configuração da AWS. Você criou esse diretório ao instalar o serviço de gerenciamento.

    cd anthos-aws

  2. Para abrir o túnel, execute o script bastion-tunnel.sh. O túnel encaminha para localhost:8118.

    Para abrir um túnel para o Bastion Host, execute o seguinte comando:

    ./bastion-tunnel.sh -N
    

    As mensagens do túnel SSH aparecem nessa janela. Quando estiver pronto para fechar a conexão, interrompa o processo usando Control+C ou fechando a janela.

  3. Abra um novo terminal e mude para o diretório anthos-aws.

    cd anthos-aws
  4. Verifique se você consegue se conectar ao cluster com kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    A saída inclui o URL do servidor da API de serviço de gerenciamento.

Fazer upgrade do serviço de gerenciamento

Para fazer upgrade do serviço de gerenciamento, faça o download de uma nova versão de anthos-gke, edite o anthos-gke.yaml e, em seguida, aplique as alterações.

Fazer o download de uma nova versão do anthos-gke

A versão mais recente da ferramenta anthos-gke é aws-1.14.1-gke.0. Para fazer o download de uma nova versão do anthos-gke, execute as seguintes etapas:

A ferramenta de linha de comando anthos-gke é compatível apenas com Linux e macOS.

  1. Faça o download do binário do Cloud Storage.

    Linux

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
    

    macOS

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
    
  2. Atualize as permissões de anthos-gke e copie-as para /usr/local/bin.

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. Confirme se a versão é aws-1.14.1-gke.0

    anthos-gke version
    

Fazer upgrade do serviço de gerenciamento

Para fazer upgrade do cluster, siga estas etapas:

  1. Mude para o diretório com os clusters do Anthos na configuração da AWS. Você criou esse diretório ao instalar o serviço de gerenciamento.
    cd anthos-aws
  2. Abra o anthos-gke.yaml em um editor de texto. Altere o valor de spec.version para aws-1.14.1-gke.0.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     version: aws-1.14.1-gke.0
     region: aws-region
     ...
    
  3. Execute anthos-gke aws management init para validar o objeto AWSManagementService e atualizar o arquivo anthos-gke.status.yaml.

    anthos-gke aws management init
    
  4. Execute anthos-gke aws management apply para atualizar o serviço de gerenciamento na AWS.

    anthos-gke aws management apply
    

    O comando anthos-gke começa a fazer upgrade do serviço de gerenciamento. O upgrade pode levar até dez minutos para ser concluído.

Clusters de usuários

Nas seções a seguir, você fará upgrade dos clusters de usuários.

Antes de começar

Antes de concluir essas etapas, você precisa ter um serviço de gerenciamento e pelo menos um cluster de usuário.

Versões compatíveis do Kubernetes

Os clusters do Anthos na AWS aws-1.14.1-gke.0 são compatíveis com as seguintes versões do Kubernetes:

  • 1.23.15-gke.2000
  • 1.24.9-gke.2100
  • 1.25.5-gke.2100

Para ver informações sobre versões compatíveis anteriores, consulte Notas de lançamento.

Upgrades de componentes

Esta seção descreve o upgrade de AWSClusters e AWSNodePools.

AWSCluster

É possível atualizar um AWSCluster para uma nova versão dos clusters do Anthos no AWS sem atualizar seus AWSNodePools.

AWSNodePools

Não é possível atualizar um AWSNodePool para uma versão mais recente do que o AWSCluster. Para atualizar o AWSNodePools, primeiro é necessário atualizar o AWSCluster.

A versão do AWSNodePools não pode ser inferior a duas versões secundárias por trás da versão do AWSCluster.

Atualizar um AWSCluster e um AWSNodePool

Para fazer upgrade do cluster, atualize o campo version dos objetos AWSCluster e AWSNodePool no serviço de gerenciamento.

AWSCluster

Para fazer o upgrade de um AWSCluster, execute as seguintes etapas:

  1. No diretório anthos-aws, use anthos-gke para alternar o contexto para o serviço de gerenciamento.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Abra o arquivo YAML que criou o AWSCluster em um editor de texto. Se você não tiver o arquivo YAML inicial, poderá usar kubectl edit.

    Editar YAML

    Se você tiver seguido as instruções em Como criar um cluster de usuário, seu arquivo YAML será chamado de cluster-0.yaml. Abra esse arquivo em um editor de texto.

    kubectl edit

    Para usar kubectl edit para editar seu AWSCluster, execute o seguinte comando:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    Substitua cluster-name pelo AWSCluster. Por exemplo, para editar o cluster padrão, cluster-0, execute o seguinte comando:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. Atualize o campo spec.controlPlane.version para uma nova versão dos clusters do Anthos na AWS. A versão mais recente é 1.25.5-gke.2100.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    metadata:
      name: cluster-0
    spec:
      region: us-east-1
      controlPlane:
        version: gke_version
        instanceType: t3.medium
      ...
    

    Substitua gke-version pela versão do Kubernetes de sua preferência. A versão compatível mais recente do Kubernetes é 1.25.5-gke.2100.

  4. Salve o arquivo. Se você estiver usando kubectl edit, kubectl aplicará as alterações automaticamente. Se você estiver editando o arquivo YAML, aplique-o ao serviço de gerenciamento com o seguinte comando:

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl apply -f cluster-0.yaml
    

    O serviço de gerenciamento atualiza seu AWSCluster.

AWSNodePool

Para atualizar um AWSNodePool, execute as seguintes etapas:

  1. No diretório anthos-aws, use anthos-gke para alternar o contexto para o serviço de gerenciamento.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Abra o arquivo YAML que criou o AWSNodePool em um editor de texto. Se você seguiu as instruções em Como criar um cluster de usuário, esse arquivo será chamado de cluster-0.yaml.

  3. Atualize o valor de spec.version nos recursos do AWSNodePool.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    metadata:
      name: cluster-0-pool-0
    spec:
      clusterName: cluster-0
      region: us-east-1
      version: gke-version
      ...
    

    Substitua gke-version pela versão do Kubernetes de sua preferência. A versão compatível mais recente do Kubernetes é 1.25.5-gke.2100.

  4. Aplique a nova configuração ao seu serviço de gerenciamento com kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    

    Em seguida, o serviço de gerenciamento atualiza o AWSNodePool de um nó por vez. Antes que um nó seja encerrado, os pods em execução nesse nó recebem um SIGTERM. Se um pod não for encerrado após um período de carência, ele receberá um SIGKILL.

Visualizar status

Para ver o status de um upgrade, execute kubectl get AWSClusters no seu serviço de gerenciamento.

env HTTPS_PROXY=http://localhost:8118 \
    kubectl get AWSClusters

A saída inclui o nome, o estado, a idade, a versão e o endpoint de cada cluster. Por exemplo, a saída a seguir inclui uma AWSCluster chamada cluster-0.

NAME        STATE          AGE     VERSION         ENDPOINT
cluster-0   Upgrading   2m41s      1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com

O upgrade do cluster de usuário será concluído quando o STATE for provisionado.