Como atualizar clusters de usuários

Este tópico descreve como atualizar a configuração de um cluster de usuário existente.

Visão geral

Com clusters de usuário executando o Kubernetes versão 1.20 e superior, é possível modificar os seguintes atributos:

Com o Kubernetes 1.22 e versões mais recentes, é possível atualizar os tipos de instâncias do EC2.

Para atualizar esses recursos, edite os recursos AWSCluster e AWSNodePool.

Depois de atualizar a configuração, o GKE na AWS coloca o cluster ou o pool de nós no estado Updating. Quando a atualização é concluída, o cluster ou pool de nós é retornado ao estado Provisioned.

Antes de começar

Para modificar os clusters de usuário, o cluster e o pool de nós precisam executar o Kubernetes versão 1.20 ou superior. Se o cluster não estiver executando o Kubernetes 1.20, faça upgrade do cluster de usuário primeiro.

Para modificar os grupos de segurança do cluster, o papel do IAM da AWS (definido como spec.authentication.awsIAM.adminIdentityARNs em anthos-gke.yaml) que gerencia os clusters de usuários do GKE na AWS precisa ter a permissão ec2:ModifyNetworkInterfaceAttribute.

Atualizar grupos de segurança

Nesta seção, você atualizará os grupos de segurança de um cluster e pool de nós. Para atualizar os grupos de segurança, 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. Edite o campo spec.controlPlane.securityGroupIDs do seu AWSCluster.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        securityGroupIDs:
          - SECURITY_GROUP_ID
        ...
    

    Substitua SECURITY_GROUP_ID pelo ID do novo grupo de segurança. Para incluir vários grupos de segurança, inclua valores adicionais à matriz em spec.controlPlane.securityGroupIDs.

    O exemplo a seguir inclui os grupos de segurança sg-12345678ab e sg-abcdef1234:

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    spec:
      controlPlane:
        securityGroupIDs:
          - sg-12345678ab
          - sg-abcdef1234
        ...
    
  4. Edite o campo spec.securityGroupIDs dos seus recursos AWSNodePool.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      securityGroupIDs:
        - SECURITY_GROUP_ID
      ...
    
  5. 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
    
  6. Verifique o status da atualização com kubectl. Quando a atualização é concluída, o estado do objeto muda de Updating para Provisioned.

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

    Por exemplo, enquanto o cluster está no estado de atualização, a saída é semelhante a esta:

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

Atualizar tipos de instância

Nesta seção, você atualizará os tipos de instância de um cluster e um pool de nós. Para atualizar os tipos de instância, siga estas 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. Edite o campo spec.controlPlane.instanceType do seu AWSCluster.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        instanceType: AWS_INSTANCE_TYPE
        ...
    

    Substitua AWS_INSTANCE_TYPE pelo novo tipo de instância. Para mais informações, consulte Tipos de instâncias compatíveis.

  4. Edite o campo spec.instanceType dos seus recursos AWSNodePool.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      instanceType: AWS_INSTANCE_TYPE
      ...
    
  5. 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
    
  6. Verifique o status da atualização com kubectl. Quando a atualização é concluída, o estado do objeto muda de Updating para Provisioned.

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

    Por exemplo, enquanto o cluster está no estado de atualização, a saída é semelhante a esta:

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

A seguir