Creación de un complemento de Amazon EKS - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Creación de un complemento de Amazon EKS

Los complementos de Amazon EKS son software de complementos para clústeres de Amazon EKS. Todos los complementos de Amazon EKS:

  • Incluyen las revisiones de seguridad y correcciones de errores más recientes.

  • Están validados por AWS para poder usarse con Amazon EKS.

  • Reducen la cantidad de trabajo necesaria para administrar el software de complementos.

Puede crear un complemento de Amazon EKS mediante eksctl, la AWS Management Console o la AWS CLI. Si el complemento requiere un rol de IAM, consulte los detalles del complemento específico en Complementos de Amazon EKS para obtener información sobre cómo crear el rol.

Requisitos previos

Siga estos pasos antes de crear un complemento:

Procedimiento

Puede crear un complemento de Amazon EKS mediante eksctl, la AWS Management Console o la AWS CLI. Si el complemento requiere un rol de IAM, consulte los detalles del complemento específico en Complementos de Amazon EKS disponibles desde AWS para obtener información sobre cómo crear el rol.

eksctl
Para crear el complemento de Amazon EKS con eksctl
  1. Vea los nombres de los complementos disponibles para una versión de clúster. Reemplace 1.30 por la versión del clúster.

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

    Un ejemplo de salida sería el siguiente.

    "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. Vea las versiones disponibles para el complemento que le gustaría crear. Reemplace 1.30 por la versión del clúster. Reemplace name-of-addon por el nombre del complemento para el que desea ver las versiones. El nombre debe ser uno de los nombres que obtuvo en el paso anterior.

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

    El siguiente resultado es un ejemplo de lo que se devuelve para el complemento denominado vpc-cni. Puede ver que el complemento tiene varias versiones disponibles.

    "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 si el complemento que desea crear es uno de Amazon EKS o de AWS Marketplace. AWS Marketplace tiene complementos de terceros que requieren que complete pasos adicionales para crear el complemento.

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

    Si no se devuelve ningún resultado, el complemento es de Amazon EKS. Si se devuelve algún resultado, el complemento de AWS Marketplace. El siguiente resultado corresponde a un complemento denominado teleport_teleport.

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

    Puede obtener más información sobre el complemento en AWS Marketplace con la URL devuelta. Si el complemento requiere una suscripción, puede suscribirse al complemento a través de AWS Marketplace. Si va a crear un complemento desde AWS Marketplace, la entidad principal de IAM que utilice para crear el complemento debe tener permiso para crear el rol vinculado al servicio AWSServiceRoleForAWSLicenseManagerRole. Para obtener información sobre cómo asignar los permisos a una entidad principal de IAM, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

  4. Cree un complemento de Amazon EKS. Copie el comando y sustituya user-data de la siguiente manera:

    • Reemplace my-cluster por el nombre del clúster.

    • Reemplace name-of-addon por el nombre del complemento que desea crear.

    • Si quiere una versión del complemento anterior a la versión más reciente, sustitúyala por latest con el número de versión que aparece en el resultado del paso anterior que quieras usar.

    • Si el complemento usa un rol de cuenta de servicio, sustitúyalo por 111122223333 con el ID de la cuenta y sustituya role-name por el nombre del rol. Para obtener instrucciones sobre cómo crear un rol para su cuenta de servicio, consulte la documentación del complemento que está creando. Para especificar un rol de cuenta de servicio, es necesario disponer de un proveedor de IAM OpenID Connect (OIDC) para el clúster. Para determinar si ya tiene uno para su clúster o si debe crearlo, consulte Creación de un proveedor de OIDC de IAM para su clúster.

      Si el complemento no usa un rol de cuenta de servicio, elimine --service-account-role-arn arn:aws:iam::111122223333:role/role-name.

    • Este comando de ejemplo sobrescribe la configuración de cualquier versión autoadministrada existente del complemento, si la hay. Si no quiere sobrescribir la configuración de un complemento autoadministrado existente, elimine la opción --force. Si lo hace, y el complemento de Amazon EKS necesita sobrescribir la configuración existente de un complemento autoadministrado, se produce un error en la creación del complemento de Amazon EKS y recibe un mensaje para ayudarlo a resolver el conflicto. Antes de especificar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar, ya que dicha configuración se sobrescribe con esta opción.

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

Puede ver una lista completa de las opciones disponibles para el comando.

eksctl create addon --help

Para obtener más información acerca de otras opciones, consulte Addons (Complementos) en la documentación de eksctl.

AWS Management Console
Para crear el complemento de Amazon EKS con la AWS Management Console
  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. En el panel de navegación izquierdo, elija Clusters (Clústeres).

  3. Elija el nombre del clúster para el que desea crear el complemento.

  4. Elija la pestaña Complementos.

  5. Escoja Obtener más complementos.

  6. En la página Seleccionar complementos, elija los complementos que desea agregar al clúster. Puede agregar tantos complementos de Amazon EKS y complementos de AWS Marketplace como necesite.

    En el caso de complementos de AWS Marketplace, la entidad principal de IAM que se utilice para crear un complemento debe tener permisos para leer los derechos del complemento desde AWS LicenseManager. AWS LicenseManager requiere el rol vinculado al servicio (SLR) AWSServiceRoleForAWSLicenseManagerRole que permite que los recursos de AWS administren las licencias en su nombre. El SLR es obligatoria una sola vez, por cuenta, y no tendrá que crear SLR independientes para cada complemento ni para cada clúster. Para obtener información sobre cómo asignar los permisos a una entidad principal de IAM, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

    Si los complementos de AWS Marketplace que desea instalar no aparecen, puede buscar complementos disponibles escribiendo texto en el cuadro de búsqueda. En las Opciones de filtrado, también puede buscar por categoría, proveedor o modelo de precios y, a continuación, seleccionar los complementos en los resultados de la búsqueda. Una vez que haya seleccionado los complementos que desee instalar, seleccione Siguiente.

  7. En la página Configurar las opciones de complementos seleccionados, haga lo siguiente:

    1. Seleccione Ver opciones de suscripción para abrir el formulario Opciones de suscripción. Revise las secciones Detalles de precios y Legal y, a continuación, pulse el botón Suscribirse para continuar.

    2. En Versión, seleccione la versión que desee instalar. Recomendamos la versión marcada como la más reciente, a menos que el complemento individual que está creando recomiende una versión diferente. Para determinar si un complemento tiene una versión recomendada, consulte la documentación del complemento que está creando.

    3. Si todos los complementos que seleccionó tienen la opción Requiere suscripción en Estado, elija Siguiente. No puede seguir configurando esos complementos hasta que se haya suscrito a ellos después de crear el clúster. Para los complementos que no tienen Requiere suscripción en Estado, haga lo siguiente:

      1. En Select IAM role (Seleccionar rol de IAM), acepte la opción predeterminada, a menos que el complemento requiera permisos de IAM. Si el complemento requiere permisos de AWS, puede seleccionar el rol de IAM del nodo (No establecido) o un rol existente que haya creado para usarlo con el complemento. Si no hay ningún rol para seleccionar, no dispone de un rol existente. Independientemente de la opción que elija, consulte la documentación del complemento que está creando para crear una política de IAM y adjuntarla a un rol. Para seleccionar un rol de IAM es necesario que tenga un proveedor de OpenID Connect (OIDC) de IAM para el clúster. Para determinar si ya tiene uno para su clúster o si debe crearlo, consulte Creación de un proveedor de OIDC de IAM para su clúster.

      2. Seleccione Valores de configuración opcionales.

      3. Si el complemento requiere configuración, introdúzcala en el cuadro Configuration values (Valores de configuración). Para determinar si el complemento requiere información de configuración, consulte la documentación del complemento que está creando.

      4. En Método de resolución de conflictos, elija una de las opciones disponibles. Si elije Anular en Método de resolución de conflictos, una o varias de las configuraciones del complemento existente pueden sobrescribirse con la configuración del complemento de Amazon EKS. Si no habilita esta opción y hay un conflicto con la configuración existente, la operación falla. Puede utilizar el mensaje de error resultante para solucionar el conflicto. Antes de elegir esta opción, asegúrese de que el complemento de Amazon EKS no administra las configuraciones que tiene que autoadministrar.

      5. Elija Siguiente.

  8. En la página Revisar y añadir, elija Crear. Una vez finalizada la instalación del complemento, verá los complementos instalados.

  9. Si alguno de los complementos que ha instalado requiere una suscripción, siga estos pasos:

    1. Selecciona el botón Subscribe (Suscribirse) en la esquina inferior derecha del complemento. Se lo redirigirá a la página del complemento en AWS Marketplace. Lea la información sobre el complemento, como Product Overview (Descripción general del producto) y Pricing Information (Información sobre precios).

    2. Seleccione el botón Continue to Subscribe (Continuar con la suscripción) en la parte superior derecha de la página del complemento.

    3. Lea la sección Terms and Conditions (Condiciones generales). Si está de acuerdo con ellas, seleccione Accept Terms (Aceptar las condiciones). La suscripción puede tardar varios minutos en procesarse. Mientras se procesa la suscripción, el botón Return to Amazon EKS Console (Volver a la consola de Amazon EKS) aparece en gris.

    4. Una vez que la suscripción haya terminado de procesarse, el botón Return to Amazon EKS Console (Volver a la consola de Amazon EKS) ya no aparecerá en gris. Elija el botón para volver a la pestaña Add-ons (Complementos) de la consola de Amazon EKS de su clúster.

    5. Para el complemento al que se suscribió, seleccione Remove and reinstall (Eliminar y volver a instalar) y, a continuación, elija Reinstalar el complemento (Reinstall add-on). La instalación del complemento puede tardar varios minutos. Cuando finalice la instalación, podrá configurar el complemento.

AWS CLI
Requisito previo

La versión 2.12.3 o posterior, o bien, la versión 1.27.160 o posterior de la AWS Command Line Interface (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utilice aws --version | cut -d / -f2 | cut -d ' ' -f1. Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelen estar atrasados varias versiones respecto de la versión de la AWS CLI más reciente. Para instalar la versión más reciente, consulte Instalar, actualizar y desinstalar la AWS CLI y Configuración rápida con aws configure en la Guía del usuario de AWS Command Line Interface. La versión de AWS CLI instalada en AWS CloudShell también puede estar atrasada varias versiones respecto de la versión más reciente. Para actualizarla, consulte Instalación de la AWS CLI en el directorio de inicio en la Guía del usuario de AWS CloudShell.

Para crear el complemento de Amazon EKS con la AWS CLI
  1. Determine qué complementos están disponibles. Puede ver todos los complementos disponibles, su tipo y su editor. También puede ver la URL de los complementos que están disponibles a través de AWS Marketplace. Reemplace 1.30 por la versión del clúster.

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

    Un ejemplo de salida sería el siguiente.

    --------------------------------------------------------------------------------------------------------------------------------------------------------- | 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 | | [...] | [...] | [...] | [...] | [...] | +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+

    El resultado puede ser diferente. En el resultado de este ejemplo, hay tres complementos diferentes disponibles de tipo networking y cinco complementos con un editor de tipo eks. Es posible que los complementos con aws-marketplace que aparecen en la columna Owner requieran una suscripción antes de poder instalarlos. Puede visitar la URL para obtener más información sobre el complemento y suscribirse a él.

  2. Puede ver qué versiones están disponibles para cada complemento. Reemplace la versión 1.30 por la versión de su clúster y reemplace vpc-cni por el nombre de un complemento devuelto en el paso anterior.

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

    Un ejemplo de salida sería el siguiente.

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

    La versión con True que aparece en la columna Defaultversion es la versión con la que se creó el complemento, de forma predeterminada.

  3. (Opcional) Busque las opciones de configuración del complemento elegido ejecutando el siguiente 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\"}}}"
    }

    El resultado es un esquema JSON estándar.

    Este es un ejemplo de valores de configuración válidos, en formato JSON, que funcionan con el esquema anterior.

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

    Este es un ejemplo de valores de configuración válidos, en formato YAML, que funcionan con el esquema anterior.

      resources: 
        limits: 
          cpu: 100m    
  4. Determine si el complemento requiere permisos de IAM. Si es así, debe (1) determinar si desea utilizar las Pod Identity de EKS o los roles de IAM para las cuentas de servicio (IRSA), (2) determinar el ARN de la función de IAM que se va a utilizar con el complemento y (3) determinar el nombre de la cuenta de servicio de Kubernetes que utiliza el complemento. Puedes encontrar esta información en la documentación o mediante la API AWS, consulta Cómo recuperar información de IAM sobre un complemento.

  5. Cree un complemento de Amazon EKS. Copie el comando que sigue en su dispositivo. Realice las siguientes modificaciones en el comando según sea necesario y, a continuación, ejecute el comando modificado:

    • Reemplace my-cluster por el nombre del clúster.

    • Reemplace vpc-cni por un nombre de complemento devuelto en el paso anterior que desea crear.

    • Reemplace version-number por una versión devuelta en el paso anterior que desea usar.

    • Si el complemento no requiere permisos de IAM, elimine <service-account-configuration>.

    • Realice una de las siguientes acciones siguientes:

      • Si el complemento (1) requiere permisos de IAM y (2) su clúster usa Pod Identities de EKS, sustituya <service-account-configuration> por la siguiente asociación de Pod Identity. Sustituya <service-account-name> por el nombre de la cuenta de servicio que utiliza el complemento. Sustituya <role-arn> con el ARN de un rol de IAM. El rol debe tener la política de confianza requerida por las Pod Identity de EKS.

        --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'
      • Si el complemento (1) requiere permisos de IAM y (2) su clúster usa IRSA, sustituya <service-account-configuration> por la siguiente configuración de IRSA. Reemplace 111122223333 por el ID de su cuenta y role-name por el nombre del rol de IAM existente que creó. Para obtener instrucciones sobre cómo crear un rol, consulte la documentación del complemento que está creando. Para especificar un rol de cuenta de servicio, es necesario disponer de un proveedor OpenID Connect (OIDC) de IAM para el clúster. Para determinar si ya tiene uno para su clúster o si debe crearlo, consulte Creación de un proveedor de OIDC de IAM para su clúster.

        --service-account-role-arn arn:aws::iam::111122223333:role/role-name
    • Estos comandos de ejemplo sobrescriben la opción --configuration-values de cualquier versión autoadministrada existente del complemento, si la hay. Sustitúyalo por los valores de configuración que desee, como una cadena o una entrada de archivo. Si no desea proporcionar valores de configuración, elimine la opción --configuration-values. Si no quiere que la AWS CLI sobrescriba la configuración de un complemento autoadministrado existente, elimine la opción --resolve-conflicts OVERWRITE. Si lo hace, y el complemento de Amazon EKS necesita sobrescribir la configuración existente de un complemento autoadministrado, se produce un error en la creación del complemento de Amazon EKS y recibe un mensaje para ayudarlo a resolver el conflicto. Antes de especificar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar, ya que dicha configuración se sobrescribe con esta opción.

    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 ver una lista completa de las opciones ‎disponibles, consulte create-addon‎ en la Referencia de los comandos de Amazon EKS. Si el complemento que ha creado aparece en aws-marketplace en la columna Owner de un paso anterior, es posible que no se pueda crear y que reciba un mensaje de error similar al siguiente.

    { "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" [...]

    Si recibe un error similar al del resultado anterior, visite la URL del resultado del paso anterior para suscribirse al complemento. Una vez suscrito, vuelva a ejecutar el comando create-addon.