

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Atualizar um complemento do Amazon EKS
<a name="updating-an-add-on"></a>

O Amazon EKS não atualiza automaticamente o complemento quando novas versões são lançadas nem depois que você atualiza o cluster para uma nova versão secundária do Kubernetes. Para atualizar um complemento para um cluster existente, você deve iniciar a atualização. Após a atualização ser iniciada, o Amazon EKS atualizará o complemento do Amazon EKS para você. Antes de atualizar um complemento, revise sua documentação atual. Para obter uma lista dos complementos disponíveis, consulte [Complementos da AWS](workloads-add-ons-available-eks.md). Se o complemento exigir um perfil do IAM, consulte os detalhes para esse complemento em específico em [Complementos do Amazon EKS disponíveis da AWS](workloads-add-ons-available-eks.md) para obter informações sobre como criar o perfil.

## Pré-requisitos
<a name="updating-an-add-on-prereq"></a>

Antes de criar um complemento, faça o seguinte:
+ Verifique se o complemento exige um perfil do IAM. Para obter mais informações, consulte [Complementos do Amazon EKS](eks-add-ons.md).
+ Verifique se a versão do complemento do Amazon EKS é compatível com o cluster. Para obter mais informações, consulte [Verificar a compatibilidade da versão do complemento do Amazon EKS com um cluster](addon-compat.md).

## Procedimento
<a name="updating-an-add-on-procedure"></a>

Você pode atualizar um complemento do Amazon EKS usando `eksctl`, Console de gerenciamento da AWS ou AWS CLI.

## Complemento de atualização (eksctl)
<a name="_update_add_on_eksctl"></a>

1. Determine os complementos e as versões dos complementos instalados atualmente no cluster. Substitua *my-cluster* pelo nome do cluster.

   ```
   eksctl get addon --cluster my-cluster
   ```

   Veja abaixo um exemplo de saída.

   ```
   NAME        VERSION              STATUS  ISSUES  IAMROLE  UPDATE AVAILABLE
   coredns     v1.8.7-eksbuild.2    ACTIVE  0
   kube-proxy  v1.23.7-eksbuild.1   ACTIVE  0                v1.23.8-eksbuild.2
   vpc-cni     v1.10.4-eksbuild.1   ACTIVE  0                v1.12.0-eksbuild.1,v1.11.4-eksbuild.1,v1.11.3-eksbuild.1,v1.11.2-eksbuild.1,v1.11.0-eksbuild.1
   ```

   Sua saída pode ser diferente, dependendo dos complementos e versões que você tiver no cluster. Você pode ver que, na saída do exemplo anterior, dois complementos existentes no cluster têm versões mais recentes disponíveis na coluna `UPDATE AVAILABLE`.

1. Atualize o complemento.

   1. Copie o conteúdo a seguir no seu dispositivo. Faça as seguintes modificações no comando, conforme necessário:
      + Substitua *my-cluster* pelo nome do cluster.
      + Substitua *region-code* pela região da AWS em que seu cluster se encontra.
      + Substitua *vpc-cni* pelo nome de um complemento retornado na saída da etapa anterior que você deseja atualizar.
      + Se quiser atualizar para uma versão anterior à última versão disponível, substitua *latest* pelo número de versão retornado na saída da etapa anterior que você deseja usar. Alguns complementos têm versões recomendadas. Para obter mais informações, consulte a documentação do complemento que você está atualizando. Para obter uma lista de complementos, consulte a seção chamada [Complementos da AWS](workloads-add-ons-available-eks.md).**\$1** Se o complemento usar uma conta de serviço do Kubernetes e um perfil do IAM, substitua *111122223333* pelo ID da sua conta e *role-name* pelo nome de um perfil do IAM existente que você tenha criado. Para obter instruções para criar o perfil, consulte a documentação do complemento que você está criando. Para obter uma lista de complementos, consulte [Complementos da AWS](workloads-add-ons-available-eks.md). A especificação de um perfil da conta de serviço exige que você tenha um provedor OpenID Connect (OIDC) do IAM para o cluster. Para determinar se você já tem um ou se precisa criar um para o seu cluster, consulte [Criar um provedor de identidade OIDC do IAM para o cluster](enable-iam-roles-for-service-accounts.md).

        Se o complemento não usar uma conta de serviço do Kubernetes e um perfil do IAM, exclua a linha `serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name `.
      + A opção *preserve* (manter) mantém os valores existentes para o complemento. Se você definiu valores personalizados para as configurações do complemento e não usar essa opção, o Amazon EKS sobrescreverá seus valores pelos valores padrão. Se você usar essa opção, recomendamos testar qualquer alteração de campo e valor em um cluster que não seja de produção antes de atualizar o complemento no cluster de produção. Se você alterar esse valor para `overwrite`, todas as configurações serão alteradas para os valores padrão do Amazon EKS. Se você definiu valores personalizados para qualquer configuração, eles poderão ser sobrescritos pelos valores padrão do Amazon EKS. Se você alterar esse valor para `none`, o Amazon EKS não alterará o valor de nenhuma configuração, mas a atualização poderá falhar. Se a atualização falhar, você receberá uma mensagem de erro para ajudar a resolver o conflito.

        ```
        cat >update-addon.yaml <<EOF
        apiVersion: eksctl.io/v1alpha5
        kind: ClusterConfig
        metadata:
          name: my-cluster
          region: region-code
        
        addons:
        - name: vpc-cni
          version: latest
          serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name
          resolveConflicts: preserve
        EOF
        ```

   1. Execute o comando modificado para criar o arquivo `update-addon.yaml`.

   1. Aplique o arquivo de configuração ao cluster.

      ```
      eksctl update addon -f update-addon.yaml
      ```

   Para obter mais informações sobre atualização de complementos, consulte [Atualizar complementos](https://eksctl.io/usage/addons/#updating-addons) na documentação do `eksctl`.

## Atualizar complemento (console do AWS)
<a name="update_add_on_shared_aws_console"></a>

1. Abra o [console do Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. No painel de navegação à esquerda, escolha **Clusters**.

1. Escolha o nome do cluster para o qual você deseja atualizar o complemento..

1. Escolha a guia **Add-ons** (Complementos).

1. Escolha o complemento que deseja atualizar.

1. Escolha **Editar**.

1. Na **página Configurar *nome do complemento* **, faça o seguinte:

   1. Selecione a **Versão** que você deseja usar. O complemento pode ter uma versão recomendada. Para obter mais informações, consulte a documentação do complemento que você está atualizando. Para obter uma lista de complementos, consulte [Complementos da AWS](workloads-add-ons-available-eks.md).

   1. Há duas opções para configurar perfis para complementos: perfil do IAM das Identidade de Pods do EKS e perfis do IAM para contas de serviço (IRSA). Siga a etapa apropriada para sua opção preferida abaixo. Se todos os complementos que você selecionou mostrarem **Exige assinatura** em **Status**, selecione **Próximo**. Para os complementos que não mostram **Exige assinatura** em **Status**, faça o seguinte:

      1. Para **Perfil do IAM de Identidade de Pods para a conta de serviço**, é possível usar um perfil do IAM de Identidade de Pods do EKS existente ou criar um usando o botão **Criar perfil recomendado**. Esse campo só fornecerá opções com a política de confiança apropriada. Quando não há nenhum perfil para seleção, é porque você não tem nenhum perfil existente com uma política de confiança correspondente. Para configurar um perfil do IAM de Identidade de Pods do EKS para contas de serviço do complemento selecionado, escolha **Criar perfil recomendado**. O assistente de criação de perfis se abrirá em uma janela separada. O assistente preencherá automaticamente as informações do perfil da maneira a seguir. Para cada complemento em que você deseja criar o perfil do IAM de Identidade de Pods do EKS, conclua as etapas no assistente do IAM da forma a seguir.
         + Na etapa **Selecionar entidade confiável**, a opção de serviço da AWS para o **EKS** e o caso de uso para **EKS: Identidade de Pods** já vêm selecionados previamente, e a política de confiança apropriada será preenchida automaticamente para o complemento. Por exemplo, o perfil será criado com a política de confiança apropriada contendo a entidade principal do IAM pods.eks.amazonaws.com, conforme detalhado em [Benefícios dos EKS Pod Identities](pod-identities.md#pod-id-benefits). Escolha **Próximo**.
         + Na etapa **Adicionar permissões**, a política gerenciada apropriada para a política de perfil é pré-selecionada para o complemento. Por exemplo, para o complemento CNI da Amazon VPC, o perfil será criado com a política gerenciada `AmazonEKS_CNI_Policy`, conforme detalhado em [Plug-in CNI da Amazon VPC para Kubernetes](workloads-add-ons-available-eks.md#add-ons-vpc-cni). Escolha **Próximo**.
         + Na etapa **Nomear, revisar e criar**, em **Nome do perfil**, o nome do perfil padrão é preenchido automaticamente para o complemento. Por exemplo, para o complemento **CNI da Amazon VPC**, o perfil será criado com a o nome **AmazonEKSPodIdentityAmazonVPCCNIRole**. Em **Descrição**, a descrição padrão é preenchida automaticamente com a descrição apropriada para o complemento. Por exemplo, para o complemento CNI do Amazon VPC, o perfil será criado com a descrição **Permite que pods em execução no cluster Amazon EKS acessem recursos da AWS**. Em **Política de confiança**, visualize a política de confiança preenchida para o complemento. Selecione **Criar perfil**.
**nota**  
Manter o nome do perfil padrão permite que o EKS pré-selecione o perfil para complementos em novos clusters ou ao adicionar complementos a clusters existentes. Você ainda pode substituir esse nome, e o perfil estará disponível para o complemento em seus clusters, mas o perfil precisará ser selecionado manualmente no menu suspenso.

      1. Para complementos que não tenham **Requer assinatura** em seu **Status** e para os quais você deseja configurar perfis usando o IRSA, consulte a documentação do complemento que você está criando para criar uma política do IAM e anexá-la a um perfil. Para obter uma lista de complementos, consulte [Complementos da AWS](workloads-add-ons-available-eks.md). Para selecionar um perfil do IAM, você precisa ter um provedor OpenID Connect (OIDC) do IAM para o cluster. Para determinar se você já tem um ou se precisa criar um para o seu cluster, consulte [Criar um provedor de identidade OIDC do IAM para o cluster](enable-iam-roles-for-service-accounts.md).

   1. Expanda **Definições de configuração opcionais**.

   1. Em **Valores de configuração**, insira informações de configuração específica do complemento. Para obter mais informações, consulte a documentação do complemento que você está atualizando. Para obter uma lista de complementos, consulte [Complementos da AWS](workloads-add-ons-available-eks.md). .. Para **Método de resolução de conflitos**, selecione uma das opções. Se você definiu valores personalizados para as configurações do complemento, recomendamos escolher a opção **Preserve** (Manter). Se você não escolher essa opção, o Amazon EKS sobrescreverá seus valores com os valores padrão. Se você usar essa opção, recomendamos testar qualquer alteração de campo e valor em um cluster que não seja de produção antes de atualizar o complemento no cluster de produção. Se você alterar esse valor para overwrite, todas as configurações serão alteradas para os valores padrão do Amazon EKS. Se você definiu valores personalizados para qualquer configuração, eles poderão ser sobrescritos pelos valores padrão do Amazon EKS. Se você alterar esse valor para none, o Amazon EKS não vai alterar o valor de nenhuma configuração, mas a atualização poderá falhar. Se a atualização falhar, você receberá uma mensagem de erro para ajudar a resolver o conflito.

1. Escolha **Salvar alterações**.

## Atualizar complemento (AWS CLI)
<a name="update_add_on_shared_aws_cli"></a>

1. Você precisa da versão `2.12.3` ou posterior ou da versão `1.27.160` ou posterior da AWS Command Line Interface (AWS CLI) instalada e configurada no seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use `aws --version | cut -d / -f2 | cut -d ' ' -f1`. Os gerenciadores de pacotes, como `yum`, `apt-get` ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte [Installing](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) e [Quick configuration with aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config), no *Guia do usuário da AWS Command Line Interface*. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-lo, consulte [Instalar a AWS CLI no seu diretório pessoal](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software), no * Guia do usuário do AWS CloudShell*.

1. Veja uma lista de complementos instalados. Substitua *my-cluster* pelo nome do cluster.

   ```
   aws eks list-addons --cluster-name my-cluster
   ```

   Veja abaixo um exemplo de saída.

   ```
   {
       "addons": [
           "coredns",
           "kube-proxy",
           "vpc-cni"
       ]
   }
   ```

1. Visualize a versão atual do complemento que você deseja atualizar. Substitua *my-cluster* pelo nome do cluster e *vpc-cni* pelo nome do complemento que você deseja atualizar.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text
   ```

   Veja abaixo um exemplo de saída.

   ```
   v1.10.4-eksbuild.1
   ```

1. Determine quais versões do complemento estão disponíveis para a versão do cluster. Substitua *1.35* pela versão do seu cluster e *vpc-cni* pelo nome do complemento que você deseja atualizar.

   ```
   aws eks describe-addon-versions --kubernetes-version 1.35 --addon-name vpc-cni \
       --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table
   ```

   Veja abaixo um exemplo de saída.

   ```
   ------------------------------------------
   |          DescribeAddonVersions         |
   +-----------------+----------------------+
   | Defaultversion  |       Version        |
   +-----------------+----------------------+
   |  False          |  v1.12.0-eksbuild.1  |
   |  True           |  v1.11.4-eksbuild.1  |
   |  False          |  v1.10.4-eksbuild.1  |
   |  False          |  v1.9.3-eksbuild.1   |
   +-----------------+----------------------+
   ```

   A versão com `True` na coluna `Defaultversion` é a versão com a qual o complemento foi criado, por padrão.

1. Atualize seu complemento. Copie o conteúdo a seguir no seu dispositivo. Faça as seguintes modificações no comando, conforme necessário, e execute o comando modificado. Para obter mais informações sobre esse comando, consulte [update-complemento](https://docs.aws.amazon.com/cli/latest/reference/eks/update-addon.html) na Referência de linha de comando do Amazon EKS.
   + Substitua *my-cluster* pelo nome do cluster.
   + Substitua *vpc-cni* pelo nome do complemento que você deseja atualizar e que foi retornado na saída de uma etapa anterior.
   + Substitua *o número da versão* pela versão retornada na saída da etapa anterior para a qual você deseja atualizar. Alguns complementos têm versões recomendadas. Para obter mais informações, consulte a documentação do complemento que você está atualizando. Para obter uma lista de complementos, consulte a seção chamada [Complementos da AWS](workloads-add-ons-available-eks.md).**\$1** Se o complemento usar uma conta de serviço do Kubernetes e um perfil do IAM, substitua *111122223333* pelo ID da sua conta e *role-name* pelo nome de um perfil do IAM existente que você tenha criado. Para obter instruções para criar o perfil, consulte a documentação do complemento que você está criando. Para obter uma lista de complementos, consulte [Complementos da AWS](workloads-add-ons-available-eks.md). A especificação de um perfil da conta de serviço exige que você tenha um provedor OpenID Connect (OIDC) do IAM para o cluster. Para determinar se você já tem um ou se precisa criar um para o seu cluster, consulte [Criar um provedor de identidade OIDC do IAM para o cluster](enable-iam-roles-for-service-accounts.md).

     Se o complemento não usar uma conta de serviço do Kubernetes e um perfil do IAM, exclua a linha `serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name `.
   + A opção `--resolve-conflicts PRESERVE` mantém os valores existentes para o complemento. Se você definiu valores personalizados para as configurações do complemento e não usar essa opção, o Amazon EKS sobrescreverá seus valores pelos valores padrão. Se você usar essa opção, recomendamos testar qualquer alteração de campo e valor em um cluster que não seja de produção antes de atualizar o complemento no cluster de produção. Se você alterar esse valor para `OVERWRITE`, todas as configurações serão alteradas para os valores padrão do Amazon EKS. Se você definiu valores personalizados para qualquer configuração, eles poderão ser sobrescritos pelos valores padrão do Amazon EKS. Se você alterar esse valor para `NONE`, o Amazon EKS não alterará o valor de nenhuma configuração, mas a atualização poderá falhar. Se a atualização falhar, você receberá uma mensagem de erro para ajudar a resolver o conflito.
   + Se quiser remover todas as configurações personalizadas, execute a atualização usando a opção *--configuration-values '\$1\$1'*. Isso definirá todas as configurações personalizadas aos valores padrão. Se você não quiser alterar sua configuração personalizada, não forneça o sinalizador *--configuration-values*. Se você quiser ajustar uma configuração personalizada, substitua *\$1\$1* pelos novos parâmetros.

     ```
     aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \
         --service-account-role-arn arn:aws:iam::111122223333:role/role-name --configuration-values '{}' --resolve-conflicts PRESERVE
     ```

1. Verifique o status da atualização. Substitua *my-cluster* pelo nome do seu cluster e *vpc-cni* pelo nome do complemento que está atualizando.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni
   ```

   Veja abaixo um exemplo de saída.

   ```
   {
       "addon": {
           "addonName": "vpc-cni",
           "clusterName": "my-cluster",
           "status": "UPDATING",
       }
   }
   ```

   Quando a atualização estiver concluída, o status será `ACTIVE`.