Criar um complemento do Amazon EKS - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Criar um complemento do Amazon EKS

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 AWS Management Console ou a AWS CLI. Se o complemento exigir um perfil do IAM, consulte os detalhes do complemento específico em Complementos do Amazon EKS para obter detalhes sobre como criar o perfil.

Pré-requisitos

Antes de criar um complemento, faça o seguinte:

Procedimento

Você pode criar um complemento do Amazon EKS usando o eksctl, o AWS Management Console ou a AWS CLI. Se o complemento exigir um perfil do IAM, consulte os detalhes do complemento específico em Complementos do Amazon EKS disponíveis da AWS para obter detalhes sobre como criar o perfil.

eksctl
Para criar um complemento do Amazon EKS usando o eksctl
  1. Visualize os nomes dos complementos disponíveis para uma versão de cluster. Substitua 1.31 pela versão do cluster.

    eksctl utils describe-addon-versions --kubernetes-version 1.31 | grep AddonName

    Veja um exemplo de saída abaixo.

    "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", [...]
  2. Visualize as versões disponíveis para o complemento que você deseja criar. Substitua 1.31 pela versão do cluster. Substitua name-of-addon pelo nome do complemento cujas versões você deseja visualizar. O nome deve ser um dos nomes retornados na etapa anterior.

    eksctl utils describe-addon-versions --kubernetes-version 1.31 --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",
  3. Determine se o complemento que você deseja criar é um complemento do Amazon EKS ou um complemento do AWS Marketplace. O AWS Marketplace tem complementos de terceiros que requerem que você conclua etapas adicionais para criar o complemento.

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

    Se nenhuma saída for retornada, o complemento será um complemento do Amazon EKS. Se for retornada uma saída, o complemento será 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 saber mais sobre o complemento no AWS Marketplace com a URL retornada. Se o complemento exigir uma assinatura, você poderá fazer a assinatura do complemento por meio do AWS Marketplace. Se for criar um complemento no AWS Marketplace, a entidade principal do IAM que você está usando para criar o complemento deverá ter permissão para criar o perfil vinculado ao serviço AWSServiceRoleForAWSLicenseManagerRole. Para obter informações sobre como atribuir permissões a uma entidade do IAM, consulte Adicionar e remover permissões de identidade do IAM no Guia do usuário do IAM.

  4. Crie um complemento do Amazon EKS. Copie o comando e substitua user-data da seguinte forma:

    • Substitua o my-cluster pelo nome do cluster.

    • Substitua name-of-addon pelo nome do complemento que você deseja criar.

    • Se você quiser uma versão do complemento anterior à versão mais recente, substitua latest pelo número da versão que você deseja usar, retornado na saída de uma etapa anterior.

    • Se o complemento usar um perfil da conta de serviço, substitua 111122223333 pela 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. 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 OIDC do IAM para o cluster.

      Se o complemento não usar um perfil da conta de serviço, exclua --service-account-role-arn arn: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 sobrescrever 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 Addons (Complementos) na documentação do eksctl.

AWS Management Console
Para criar um complemento do Amazon EKS usando a AWS Management Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

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

  3. Escolha o nome do cluster para o qual deseja criar o complemento.

  4. Escolha a guia Add-ons (Complementos).

  5. Escolha Obter mais complementos.

  6. Na página Select add-ons (Selecionar complementos), escolha os complementos que você deseja adicionar ao cluster. Você pode adicionar tantos complementos do Amazon EKS e complementos do AWS Marketplace quantos forem necessários.

    Para os complementos AWS Marketplace, o principal IAM que você está usando para criar o complemento deve ter permissões para ler as autorizações do complemento no AWS LicenseManager. AWS O LicenseManager requer o perfil vinculado ao serviço (SLR), AWSServiceRoleForAWSLicenseManagerRole 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 consulte Adicionar e remover permissões de identidade do IAM no Guia do usuário do IAM.

    Se os complementos do AWS Marketplace que você quer instalar não estiverem listados, será possível pesquisar os complementos do disponíveis inserindo texto na caixa de pesquisa. Nas opções de filtragem, você também pode filtrar por categoria, fornecedor ou modelo de preços e, em seguida, escolher os complementos nos resultados da pesquisa. Após selecionar os complementos que você deseja instalar, escolha Next (Avançar).

  7. Na página Definir as configurações dos complementos selecionados:

    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.

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

    3. Se todos os complementos que você selecionou mostrarem Exige assinatura em Status, selecione Próximo. Você não pode continuar a configurar esses complementos até fazer uma assinatura deles depois de criar o cluster. Para os complementos que não mostram Exige assinatura em Status, faça o seguinte:

      1. Em Select IAM role (Selecionar perfil do IAM), aceite a opção padrão, a menos que o complemento exija permissões do IAM. Se o complemento exigir permissões da AWS, você poderá usar o perfil do IAM do nó (Não definido) ou um perfil existente criado para ser usado com o complemento. Quando não há nenhum perfil para seleção, é porque você não tem nenhum perfil existente. Independentemente da opção escolhida, consulte a documentação do complemento que você está criando para criar uma política do IAM e anexá-la a um perfil. 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 OIDC do IAM para o cluster.

      2. Escolha Optional configuration settings (Configurações opcionais).

      3. Se o complemento exigir configuração, insira-a na caixa Configuration values (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.

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

      5. Escolha Próximo.

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

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

    1. Escolha o botão Subscribe (Assinar) no canto inferior direito do complemento. Você será levado 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.

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

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

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

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

AWS CLI
Pré-requisito

A versão 2.12.3 ou superior ou a versão 1.27.160 ou superior da AWS Command Line Interface (AWS CLI) instalada e configurada em seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use aws --version | cut -d / -f2 | cut -d ' ' -f1. 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 Instalar, atualizar e desinstalar a AWS CLI e Configuração rápida com o aws configure 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á-la, consulte Instalar a AWS CLI no diretório inicial no Guia do usuário do AWS CloudShell.

Para criar um complemento do Amazon EKS usando a AWS CLI
  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 por meio do AWS Marketplace. Substitua 1.31 pela versão do cluster.

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

    Veja um exemplo de saída abaixo.

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

  2. Você pode ver quais versões estão disponíveis para cada complemento. Substitua 1.31 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.31 --addon-name vpc-cni \ --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table

    Veja um exemplo de saída abaixo.

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

  3. (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
  4. 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 ter mais informações, consulte Recuperar informações do IAM sobre um complemento do Amazon EKS.

  5. 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 o my-cluster pelo nome do cluster.

    • Substitua vpc-cni pelo nome de complemento que você deseja criar, retornado na saída da etapa anterior.

    • Substitua version-number pela versão que você deseja usar, retornada na saída da etapa anterior.

    • Se não houver necessidade de permissões do IAM, exclua <service-account-configuration>.

    • Execute um destes procedimentos:

      • Se o complemento (1) exigir permissões do IAM e (2) seu cluster usar Identidades de Pods do EKS, substitua <service-account-configuration> pela associação de identidade de pods a seguir. 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 do IAM e (2) seu cluster usar o IRSA, substitua <service-account-configuration> pela seguinte configuração do IRSA. Substitua 111122223333 pelo ID da sua conta e role-name pelo nome do perfil do IAM existente que você criou. Para obter instruções para criar o perfil, consulte a documentação do complemento que você está criando. 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 OIDC do IAM para o cluster.

        --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 sobrescreva 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 na Amazon EKS Command Line Reference (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.