

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

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

Os complementos do Amazon EKS são um software complementar para clusters do Amazon EKS. Todos os complementos do Amazon EKS:
+ Incluem os patches de segurança e as correções de erros mais recentes.
+ São validados pela AWS para funcionar com o Amazon EKS.
+ Reduzem o trabalho necessário para gerenciar software complementar.

Você pode criar um complemento do Amazon EKS usando o `eksctl`, o Console de gerenciamento da AWS ou a AWS CLI. Caso o complemento necessite de um perfil do IAM, consulte os detalhes para o complemento específico em [Complementos do Amazon EKS](eks-add-ons.md) para obter informações sobre como criar o perfil.

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

Antes de criar um complemento, faça o seguinte:
+ O cluster deverá existir para que você possa criar um complemento para ele. Para obter mais informações, consulte [Criar um cluster do Amazon EKS](create-cluster.md).
+ Verifique se o complemento exige um perfil do IAM. Para obter mais informações, consulte [Verificar a compatibilidade da versão do complemento do Amazon EKS com um cluster](addon-compat.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).
+ Verifique se a versão 0.190.0 ou posterior da ferramenta de linha de comando `eksctl` está instalada em seu computador ou no AWS CloudShell. Para obter mais informações, consulte [Instalação](https://eksctl.io/installation/) no site do `eksctl`.

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

Você pode criar um complemento do Amazon EKS usando o `eksctl`, o Console de gerenciamento da AWS ou a AWS CLI. 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.

## Criar complemento (eksctl)
<a name="_create_add_on_eksctl"></a>

1. Visualize os nomes dos complementos disponíveis para uma versão de cluster. Substitua {{1.35}} pela versão do seu cluster.

   ```
   eksctl utils describe-addon-versions --kubernetes-version 1.35 | grep AddonName
   ```

   Veja abaixo um exemplo de saída.

   ```
   "AddonName": "aws-ebs-csi-driver",
                           "AddonName": "coredns",
                           "AddonName": "kube-proxy",
                           "AddonName": "vpc-cni",
                           "AddonName": "adot",
                           "AddonName": "dynatrace_dynatrace-operator",
                           "AddonName": "upbound_universal-crossplane",
                           "AddonName": "teleport_teleport",
                           "AddonName": "factorhouse_kpow",
                           [...]
   ```

1. Visualize as versões disponíveis para o complemento que você deseja criar. Substitua {{1.35}} pela versão do seu cluster. Substitua {{name-of-complemento}} pelo nome do complemento para o qual você deseja visualizar as versões. O nome deve ser um dos nomes retornados na etapa anterior.

   ```
   eksctl utils describe-addon-versions --kubernetes-version 1.35 --name name-of-addon | grep AddonVersion
   ```

   A saída a seguir é um exemplo do que é retornado para o complemento denominado `vpc-cni`. Você pode ver que o complemento tem várias versões disponíveis.

   ```
   "AddonVersions": [
       "AddonVersion": "v1.12.0-eksbuild.1",
       "AddonVersion": "v1.11.4-eksbuild.1",
       "AddonVersion": "v1.10.4-eksbuild.1",
       "AddonVersion": "v1.9.3-eksbuild.1",
   ```

   1. Determine se o complemento que você deseja criar é um complemento do Amazon EKS ou do AWS Marketplace. O AWS Marketplace tem complementos de terceiros que exigem que você conclua etapas adicionais para criar o complemento.

      ```
      eksctl utils describe-addon-versions --kubernetes-version 1.35 --name name-of-addon | grep ProductUrl
      ```

      Se nenhuma saída for retornada, o complemento será um complemento do Amazon EKS. Se a saída for retornada, então o complemento é um complemento do AWS Marketplace. A saída a seguir é para um complemento denominado `teleport_teleport`.

      ```
      "ProductUrl": "https://aws.amazon.com/marketplace/pp?sku=3bda70bb-566f-4976-806c-f96faef18b26"
      ```

      Você pode obter mais informações sobre o complemento no AWS Marketplace com o URL retornado. Se o complemento exigir uma assinatura, você poderá assinar o complemento por meio do AWS Marketplace. Se você for criar um complemento no AWS Marketplace, a [entidade principal do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que estiver usando para criar o complemento deverá ter permissão para criar o perfil vinculada ao serviço [AWSServiceRoleForAWSLicenseManagerRole](https://docs.aws.amazon.com/license-manager/latest/userguide/license-manager-role-core.html). Para obter informações sobre como atribuir permissões a uma entidade do IAM, consulte [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no Guia do usuário do IAM.

1. Crie um complemento do Amazon EKS. Copie o comando e substitua {{user-data}} da seguinte forma:
   + Substitua {{my-cluster}} pelo nome do cluster.
   + Substitua {{name-of-complemento}} pelo nome do complemento que você deseja criar.
   + Se você quiser uma versão do complemento anterior à mais recente, substitua {{latest}} pelo número da versão retornada na saída de uma etapa anterior que você deseja usar.
   + Se o complemento usar um perfil de conta de serviço, substitua {{111122223333}} pelo ID da conta e substitua {{role-name}} pelo nome do perfil. Para obter instruções para criar um perfil para a conta de serviço, 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 um perfil da conta de serviço, exclua `--service-account-role-arnarn:aws:iam::111122223333:role/role-name`.
   + Esse exemplo de comando sobrescreve a configuração de qualquer versão autogerenciada do complemento existente, se houver alguma. Se você não quiser substituir a configuração de um complemento autogerenciado existente, remova a opção {{--force}}. Se você remover a opção e o complemento do Amazon EKS precisar sobrescrever a configuração de um complemento autogerenciado existente, a criação do complemento do Amazon EKS falhará com uma mensagem de erro para ajudar a resolver o conflito. Antes de especificar essa opção, certifique-se de que o complemento Amazon EKS não gerencie as configurações que você precisa gerenciar, pois essas configurações são substituídas por essa opção.

     ```
     eksctl create addon --cluster my-cluster --name name-of-addon --version latest \
         --service-account-role-arn arn:aws:iam::111122223333:role/role-name --force
     ```

     Você pode ver uma lista de todas as opções disponíveis para o comando.

     ```
     eksctl create addon --help
     ```

     Para obter mais informações sobre as opções disponíveis, consulte [Complementos](https://eksctl.io/usage/addons/) na documentação do `eksctl`.

## Criar complemento (console do AWS)
<a name="create_add_on_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 deseja criar o complemento.

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

1. Escolha **Obter mais complementos**.

1. Na página **Selecionar complementos**, escolha os complementos que você deseja adicionar ao cluster. Você pode adicionar quantos **complementos do Amazon EKS** e ** do AWS Marketplace** desejar.

   Para os complementos ** do AWS Marketplace**, a [entidade principal do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que você está usando para criar o complemento deve ter permissões para ler os direitos do complemento no AWS LicenseManager. AWS O LicenseManager requer o perfil vinculado ao serviço (SLR), [AWSServiceRoleForAWSLicenseManagerRole](https://docs.aws.amazon.com/license-manager/latest/userguide/license-manager-role-core.html) que permite que os recursos da AWS gerenciem licenças em seu nome. O SLR é exigido uma única vez para cada conta, e você não precisará criar SLRs separados para cada complemento nem para cada cluster. Para obter informações sobre como atribuir permissões a uma [entidade principal do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) consulte [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no Guia do usuário do IAM.

   Se os **complementos do AWS Marketplace** que você deseja instalar não estiverem listados, será possível clicar na numeração da página para visualizar resultados de páginas adicionais ou pesquisar na caixa de pesquisa. Nas **Opções de filtragem**, também é possível filtrar por **categoria**, **fornecedor** ou **modelo de preço** e, em seguida, escolher os complementos nos resultados da pesquisa. Após selecionar os complementos que você deseja instalar, escolha **Next** (Avançar).

1. Na página **Definir as configurações dos complementos selecionados**, faça o seguinte:

   1. Escolha **Exibir opções de assinatura** para abrir o formulário **Opções de assinatura**. Revise as seções **Detalhes de preços** e **Aspectos jurídicos** e escolha o botão **Inscrever-se** para continuar.

   1. Em **Versão**, escolha a versão que você deseja usar. Recomendamos a versão marcada como **latest** (a mais recente), a menos que o complemento individual que você está criando recomende outra versão. Para determinar se um complemento tem uma versão recomendada, 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).

   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**. Não é possível [configurar esses complementos](updating-an-add-on.md) até que você se torne assinante deles após a criação do cluster. 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**.

           OBSERVAÇÃO: 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. Escolha **Optional configuration settings** (Configurações opcionais).

      1. Se o complemento exigir configuração, insira-a na caixa **Valores de configuração**. Para determinar se o complemento exige informações de configuração, 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).

      1. Selecione uma das opções disponíveis em **Método de resolução de conflitos**. Se você escolher **Substituir** como **Método de resolução de conflitos**, uma ou mais configurações do complemento existente poderão ser substituídas pelas configurações do complemento do Amazon EKS. Se você não habilitar esta opção e houver um conflito com suas configurações existentes, a operação falhará. É possível usar a mensagem de erro resultante para solucionar o conflito. Antes de escolher essa opção, certifique-se de que o complemento do Amazon EKS não gerencie as configurações que você precisa autogerenciar.

      1. **Se você quiser instalar o complemento em um namespace específico, insira-o no campo Namespace.** Para complementos da AWS e da comunidade, você pode definir um namespace Kubernetes personalizado para instalar o complemento. Para obter mais informações, consulte [Namespace personalizado para complementos](eks-add-ons.md#custom-namespace).

      1. Escolha **Próximo**.

1. Na página **Adicionar tags**, escolha **Criar**. Depois que a instalação dos complementos for concluída, você verá os complementos instalados.

1. Se algum dos complementos que você instalou exigir uma assinatura, conclua as seguintes etapas:

   1. Escolha o botão **Assinar** no canto inferior direito do complemento. Você será direcionado para a página do complemento no AWS Marketplace. Leia as informações sobre o complemento, como a **visão geral do produto** e **as informações sobre preços**.

   1. Selecione o botão **Continue to Subscribe** (Continuar a assinar) no canto superior direito da página do complemento.

   1. Leia todos os **Terms and Conditions** (Termos e condições). Se você concordar com eles, escolha **Accept Terms** (Aceitar termos). O processamento da assinatura pode levar alguns minutos. Enquanto a assinatura estiver sendo processada, o botão **Return to Amazon EKS Console** (Retornar ao console do Amazon EKS) estará acinzentado.

   1. Depois que o processamento da assinatura for concluído, o botão **Return to Amazon EKS Console** (Retornar ao console do Amazon EKS) não estará mais acinzentado. Escolha o botão para voltar à guia **Add-ons** (Complementos) do console Amazon EKS para o cluster.

   1. Para o complemento que você assinou, escolha **Remove and reinstall** (Remover e reinstalar) e depois escolha **Reinstall add-on**(Reinstalar complemento). A instalação do complemento pode levar vários minutos. Quando a instalação estiver concluída, você poderá configurar o complemento.

## Criar complemento (AWS CLI)
<a name="create_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. Determine quais complementos estão disponíveis. Você pode ver todos os complementos disponíveis, seu tipo e seu editor. Você também pode ver o URL dos complementos disponíveis no AWS Marketplace. Substitua {{1.35}} pela versão do seu cluster.

   ```
   aws eks describe-addon-versions --kubernetes-version 1.35 \
       --query 'addons[].{MarketplaceProductUrl: marketplaceInformation.productUrl, Name: addonName, Owner: owner Publisher: publisher, Type: type}' --output table
   ```

   Veja abaixo um exemplo de saída.

   ```
   ---------------------------------------------------------------------------------------------------------------------------------------------------------
   |                                                                 DescribeAddonVersions                                                                 |
   +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
   |                     MarketplaceProductUrl                     |             Name              |      Owner       |  Publisher   |        Type         |
   +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
   |  None                                                         |  aws-ebs-csi-driver           |  aws             |  eks         |  storage            |
   |  None                                                         |  coredns                      |  aws             |  eks         |  networking         |
   |  None                                                         |  kube-proxy                   |  aws             |  eks         |  networking         |
   |  None                                                         |  vpc-cni                      |  aws             |  eks         |  networking         |
   |  None                                                         |  adot                         |  aws             |  eks         |  observability      |
   | https://aws.amazon.com/marketplace/pp/prodview-brb73nceicv7u |  dynatrace_dynatrace-operator |  aws-marketplace |  dynatrace   |  monitoring         |
   | https://aws.amazon.com/marketplace/pp/prodview-uhc2iwi5xysoc |  upbound_universal-crossplane |  aws-marketplace |  upbound     |  infra-management   |
   | https://aws.amazon.com/marketplace/pp/prodview-hd2ydsrgqy4li |  teleport_teleport            |  aws-marketplace |  teleport    |  policy-management  |
   | https://aws.amazon.com/marketplace/pp/prodview-vgghgqdsplhvc |  factorhouse_kpow             |  aws-marketplace |  factorhouse |  monitoring         |
   |  [...]                                                        |  [...]                        |  [...]           |  [...]       |  [...]              |
   +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
   ```

   A sua saída pode ser diferente. Neste exemplo de saída, há três complementos diferentes disponíveis do tipo `networking` e cinco complementos com um editor do tipo `eks`. Os complementos com `aws-marketplace` na coluna `Owner` podem requerer uma assinatura antes que você possa instalá-los. Você pode visitar a URL para obter mais informações e fazer uma assinatura do complemento.

1. Você pode ver quais versões estão disponíveis para cada complemento. Substitua {{1.35}} pela versão do seu cluster e substitua {{vpc-cni}} pelo nome de um complemento retornado na etapa anterior.

   ```
   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. (Opcional) Encontre as opções de configuração para o complemento escolhido executando o seguinte comando:

   ```
   aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.12.0-eksbuild.1
   ```

   ```
   {
       "addonName": "vpc-cni",
       "addonVersion": "v1.12.0-eksbuild.1",
       "configurationSchema": "{\"$ref\":\"#/definitions/VpcCni\",\"$schema\":\"http://json-schema.org/draft-06/schema#\",\"definitions\":{\"Cri\":{\"additionalProperties\":false,\"properties\":{\"hostPath\":{\"$ref\":\"#/definitions/HostPath\"}},\"title\":\"Cri\",\"type\":\"object\"},\"Env\":{\"additionalProperties\":false,\"properties\":{\"ADDITIONAL_ENI_TAGS\":{\"type\":\"string\"},\"AWS_VPC_CNI_NODE_PORT_SUPPORT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_ENI_MTU\":{\"format\":\"integer\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CONFIGURE_RPFILTER\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOGLEVEL\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_RANDOMIZESNAT\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_VETHPREFIX\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_LEVEL\":{\"type\":\"string\"},\"DISABLE_INTROSPECTION\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_METRICS\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_NETWORK_RESOURCE_PROVISIONING\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_POD_ENI\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_PREFIX_DELEGATION\":{\"format\":\"boolean\",\"type\":\"string\"},\"WARM_ENI_TARGET\":{\"format\":\"integer\",\"type\":\"string\"},\"WARM_PREFIX_TARGET\":{\"format\":\"integer\",\"type\":\"string\"}},\"title\":\"Env\",\"type\":\"object\"},\"HostPath\":{\"additionalProperties\":false,\"properties\":{\"path\":{\"type\":\"string\"}},\"title\":\"HostPath\",\"type\":\"object\"},\"Limits\":{\"additionalProperties\":false,\"properties\":{\"cpu\":{\"type\":\"string\"},\"memory\":{\"type\":\"string\"}},\"title\":\"Limits\",\"type\":\"object\"},\"Resources\":{\"additionalProperties\":false,\"properties\":{\"limits\":{\"$ref\":\"#/definitions/Limits\"},\"requests\":{\"$ref\":\"#/definitions/Limits\"}},\"title\":\"Resources\",\"type\":\"object\"},\"VpcCni\":{\"additionalProperties\":false,\"properties\":{\"cri\":{\"$ref\":\"#/definitions/Cri\"},\"env\":{\"$ref\":\"#/definitions/Env\"},\"resources\":{\"$ref\":\"#/definitions/Resources\"}},\"title\":\"VpcCni\",\"type\":\"object\"}}}"
   }
   ```

   A saída é um esquema JSON padrão.

   Aqui está um exemplo de valores de configuração válidos, no formato JSON, que funcionam com o esquema acima.

   ```
   {
     "resources": {
       "limits": {
         "cpu": "100m"
       }
     }
   }
   ```

   Aqui está um exemplo de valores de configuração válidos, no formato YAML, que funcionam com o esquema acima.

   ```
     resources:
       limits:
         cpu: 100m
   ```

1. Determine se o complemento requer permissões do IAM. Nesse caso, você precisa (1) determinar se deseja usar identidades de pods do EKS ou perfis do IAM para contas de serviço (IRSA), (2) determinar o ARN do perfil do IAM a ser usado com o complemento e (3) determinar o nome da conta do serviço Kubernetes usada pelo complemento. Para obter mais informações, consulte [Recuperar informações do IAM sobre um complemento do Amazon EKS](retreive-iam-info.md).
   + O Amazon EKS sugerirá o uso de Identidades de Pods do EKS se o complemento oferecer suporte a esse recurso. Isso requer que o [Agente de Identidade de Pods esteja instalado no seu cluster](pod-identities.md). Para obter mais informações sobre como usar Identidades de Pods com complementos, consulte [Perfis do IAM para complementos do Amazon EKS](add-ons-iam.md).
   + Se o complemento ou seu cluster não estiver configurado para Identidades de Pods do EKS, use o IRSA. [Confirme se o IRSA está configurado no seu cluster. ](iam-roles-for-service-accounts.md) 
   +  [Analise a documentação dos complementos do Amazon EKS para determinar se o complemento exige permissões do IAM e o nome da conta do serviço Kubernetes associada. ](eks-add-ons.md) 

     1. Crie um complemento do Amazon EKS. 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:
   + Substitua {{my-cluster}} pelo nome do cluster.
   + Substitua {{vpc-cni}} por um nome de complemento retornado na saída da etapa anterior que você deseja criar.
   + Substitua {{o version-number}} pela versão retornada na saída da etapa anterior que você deseja usar.
   + Se você quiser instalar o complemento em um namespace personalizado do Kubernetes, adicione a opção `--namespace-config 'namespace=<my-namespace>`. Essa opção só está disponível para a AWS e complementos da comunidade. Para obter mais informações, consulte . [Namespace personalizado para complementos](eks-add-ons.md#custom-namespace) 
   + Se o complemento não exigir permissões do IAM, exclua {{<service-account-configuration>}}.
   + Execute um destes procedimentos:
     + Se o complemento (1) exigir permissões de IAM e (2) seu cluster usar identidades de pod EKS, substitua {{<service-account-configuration>}} pela seguinte associação de identidade de pod. Substitua {{<service-account-name>}} pelo nome da conta de serviço usada pelo complemento. Substitua {{<role-arn>}} pelo ARN de um perfil do IAM. O perfil deve ter a política de confiança exigida pelas Identidades de Pods do EKS.

       ```
       --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'
       ```
     + Se o complemento (1) exigir permissões de IAM e (2) seu cluster usar IRSA, substitua {{<service-account-configuration>}} pela seguinte configuração de IRSA. Substitua {{111122223333}} pelo ID da sua conta e {{role-name}} pelo nome de um perfil IAM existente que você criou. 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).

       ```
       --service-account-role-arn arn:aws::iam::111122223333:role/role-name
       ```
   + Esses comandos de exemplo substituem a opção `--configuration-values` de qualquer versão autogerenciada existente do complemento, se houver. Substitua isso pelos valores de configuração desejados, como uma string ou uma entrada de arquivo. Se você não deseja fornecer valores de configuração, exclua a opção `--configuration-values`. Se você não quiser que a AWS CLI substitua a configuração de um complemento autogerenciado existente, remova a opção {{--resolve-conflicts OVERWRITE}}. Se você remover a opção e o complemento do Amazon EKS precisar sobrescrever a configuração de um complemento autogerenciado existente, a criação do complemento do Amazon EKS falhará com uma mensagem de erro para ajudar a resolver o conflito. Antes de especificar essa opção, certifique-se de que o complemento Amazon EKS não gerencie as configurações que você precisa gerenciar, pois essas configurações são substituídas por essa opção.

     ```
     aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \
          <service-account-configuration> --configuration-values '{"resources":{"limits":{"cpu":"100m"}}}' --resolve-conflicts OVERWRITE
     ```

     ```
     aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \
         <service-account-configuration> --configuration-values 'file://example.yaml' --resolve-conflicts OVERWRITE
     ```

     Para obter uma lista completa das opções disponíveis, consulte ` [create-addon](https://docs.aws.amazon.com/cli/latest/reference/eks/create-addon.html) ` na Referência da linha de comando do Amazon EKS. Se o complemento que você criou tiver `aws-marketplace` listado na coluna `Owner` de uma etapa anterior, a criação poderá falhar e você poderá receber uma mensagem de erro semelhante a que se segue.

     ```
     {
         "addon": {
             "addonName": "addon-name",
             "clusterName": "my-cluster",
             "status": "CREATE_FAILED",
             "addonVersion": "version",
             "health": {
                 "issues": [
                     {
                         "code": "AddonSubscriptionNeeded",
                         "message": "You are currently not subscribed to this add-on. To subscribe, visit the AWS Marketplace console, agree to the seller EULA, select the pricing type if required, then re-install the add-on"
                     }
                 ]
             }
         }
     }
     ```

     Se você receber um erro semelhante ao erro da saída anterior, visite a URL na saída de uma etapa anterior para assinar o complemento. Depois de fazer a assinatura, execute o comando `create-addon` novamente.