

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Actualización de un complemento de Amazon EKS
<a name="updating-an-add-on"></a>

Amazon EKS no actualiza de forma automática el complemento cuando se lanzan versiones nuevas o después de que actualice el clúster a una nueva versión secundaria de Kubernetes. Para actualizar el complemento en un clúster existente, debe iniciar la actualización. Luego de iniciar la actualización, Amazon EKS actualiza el complemento en su nombre. Antes de actualizar un complemento, consulte la documentación actual del complemento. Para obtener una lista de los complementos disponibles, consulte [Complementos de AWS](workloads-add-ons-available-eks.md). Si el complemento requiere un rol de IAM, consulte los detalles del complemento específico en [Complementos de Amazon EKS disponibles desde AWS](workloads-add-ons-available-eks.md) para obtener información sobre cómo crear el rol.

## Requisitos previos
<a name="updating-an-add-on-prereq"></a>

Siga estos pasos antes de crear un complemento:
+ Compruebe si el complemento requiere un rol de IAM. Para obtener más información, consulte [Complementos de Amazon EKS](eks-add-ons.md).
+ Compruebe que la versión del complemento de Amazon EKS sea compatible con el clúster. Para obtener más información, consulte [Comprobación de la compatibilidad de la versión del complemento de Amazon EKS con un clúster](addon-compat.md).

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

Puede actualizar un complemento de Amazon EKS mediante `eksctl`, la Consola de administración de AWS o la AWS CLI.

## Actualización del complemento (eksctl)
<a name="_update_add_on_eksctl"></a>

1. Determine los complementos y las versiones actuales de los complementos instalados en su clúster. Reemplace *my-cluster* por el nombre de su clúster.

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

   Un ejemplo de salida sería el siguiente.

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

   El resultado puede tener un aspecto diferente, según los complementos y las versiones que tenga en su clúster. Puede ver que en el resultado del ejemplo anterior, dos complementos existentes en el clúster tienen versiones más recientes disponibles en la columna `UPDATE AVAILABLE`.

1. Actualice el complemento.

   1. Copie el comando que sigue en su dispositivo. Realice las siguientes modificaciones en el comando según sea necesario:
      + Reemplace *my-cluster* por el nombre de su clúster.
      + Reemplace *region-code* por la región de AWS en la que se encuentra el clúster.
      + Reemplace *vpc-cni* por el nombre de un complemento devuelto en el paso anterior que desea actualizar.
      + Si quiere una versión del complemento anterior a la versión más reciente, sustituya *latest* por el número de versión que aparece en el resultado del paso anterior que desea usar. Algunos complementos tienen versiones recomendadas. Para obtener más información, consulte la documentación del complemento que está actualizando. Para ver una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md).**\$1** Si el complemento usa una cuenta de servicio de Kubernetes y un rol de IAM, sustituya *111122223333* por el ID de la cuenta y *role-name* por el nombre de un rol de IAM existente que haya creado. Para obtener instrucciones sobre cómo crear un rol, consulte la documentación del complemento que está creando. Para obtener una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md). Para especificar un rol de cuenta de servicio, es necesario disponer de 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 [Crear un proveedor de OIDC de IAM para su clúster](enable-iam-roles-for-service-accounts.md).

        Si el complemento no usa una cuenta de servicio de Kubernetes y un rol de IAM, elimine la línea `serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name `.
      + La opción *preserve* (conservar) conserva los valores existentes del complemento. Si ha establecido valores personalizados para la configuración del complemento y no utiliza esta opción, Amazon EKS sobrescribe los valores con sus valores predeterminados. Si utiliza esta opción, le recomendamos que pruebe cualquier cambio de campo y valor en un clúster que no sea de producción antes de actualizar el complemento de su clúster de producción. Si cambia este valor a `overwrite`, todas las configuraciones cambiarán a los valores predeterminados de Amazon EKS. Si ha establecido valores personalizados para cualquier configuración, es posible que se sobrescriban con los valores predeterminados de Amazon EKS. Si cambia este valor a `none`, Amazon EKS no cambia el valor de ninguna configuración, pero la actualización podría fallar. Si se produce un error en la actualización, recibe un mensaje de error que lo ayuda a resolver el conflicto.

        ```
        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. Ejecute el comando modificado para crear el archivo `update-addon.yaml`.

   1. Aplique el archivo de configuración al clúster.

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

   Para obtener más información acerca de cómo actualizar complementos, consulte [Updating addons](https://eksctl.io/usage/addons/#updating-addons) en la documentación de `eksctl`.

## Actualización del complemento (consola de AWS)
<a name="update_add_on_shared_aws_console"></a>

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

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

1. Elija el nombre del clúster para el que desea actualizar el complemento.

1. Elija la pestaña **Complementos**.

1. Elija el complemento que desea actualizar.

1. Elija **Edit (Edición de)**.

1. En la página **Configuración de *nombre del complemento* **, haga lo siguiente:

   1. Elija la **versión** que desea utilizar. Es posible que el complemento tenga una versión recomendada. Para obtener más información, consulte la documentación del complemento que está actualizando. Para obtener una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md).

   1. Tiene dos opciones para configurar roles para complementos: rol de IAM de EKS Pod Identities y roles de IAM para cuentas de servicio (IRSA). Siga el paso correspondiente a la opción que prefiera. Si todos los complementos que seleccionó tienen la opción **Requiere suscripción** en **Estado**, elija **Siguiente**. Para los complementos que no tienen **Requiere suscripción** en **Estado**, haga lo siguiente:

      1. En el caso del **rol de IAM de Pod Identity para la cuenta de servicio**, puede utilizar un rol de IAM de EKS Pod Identity existente o crear uno mediante el botón **Crear rol recomendado**. Este campo solo proporcionará opciones con la política de confianza adecuada. Si no hay ningún rol que seleccionar, significa que no existe ningún rol con la misma política de confianza. Para configurar un rol de IAM de EKS Pod Identity para las cuentas de servicio del complemento seleccionado, seleccione **Crear rol recomendado**. El asistente de creación de roles se abre en una ventana independiente. El asistente completará automáticamente la información del rol de la siguiente manera. Para cada complemento en el que desee crear el rol de IAM de EKS Pod Identity, complete los pasos del asistente de IAM como se indica a continuación.
         + En el paso **Seleccionar entidad de confianza**, la opción de servicio de AWS para **EKS** y el caso de uso para **EKS: Pod Identity** están preseleccionados, y la política de confianza adecuada se completará automáticamente para el complemento. Por ejemplo, el rol se creará con la política de confianza adecuada que contenga la entidad principal de IAM pods.eks.amazonaws.com, tal y como se detalla en [Ventajas de las Pod Identities de EKS](pod-identities.md#pod-id-benefits). Elija **Siguiente**.
         + En el paso **Agregar permisos**, se preselecciona la política administrada adecuada para la política de roles para el complemento. Por ejemplo, para el complemento CNI de Amazon VPC, el rol se creará con la política administrada `AmazonEKS_CNI_Policy`, como se detalla en [Complemento CNI de Amazon VPC para Kubernetes](workloads-add-ons-available-eks.md#add-ons-vpc-cni). Elija **Siguiente**.
         + En el paso **Nombrar, revisar y crear**, en **Nombre de rol**, el nombre de rol predeterminado se completa automáticamente para el complemento. Por ejemplo, para el complemento de **CNI de Amazon VPC**, el rol se creará con el nombre **AmazonEKSPodIdentityAmazonVPCCNIRole**. En **Descripción**, la descripción predeterminada se completa automáticamente con la descripción adecuada para el complemento. Por ejemplo, para el complemento CNI de Amazon VPC, el rol se creará con la descripción **Permite que los pods que se ejecutan en el clúster de Amazon EKS** accedan a los recursos de AWS. En **Política de confianza**, podrá ver la política de confianza completada para el complemento. Elija **Creación de rol**.
**nota**  
NOTA: Retener el nombre de rol predeterminado permite a EKS preseleccionar el rol para complementos en clústeres nuevos o al agregar complementos a clústeres existentes. Aún así, puede anular este nombre y el rol estará disponible para el complemento en todos los clústeres, pero el rol se tendrá que seleccionar manualmente en el menú desplegable.

      1. Para los complementos que no muestran **Requiere suscripción** en el **Estado** y en los que desea configurar roles mediante IRSA, consulte la documentación del complemento que va a crear para definir una política de IAM y asociarla a un rol. Para obtener una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md). 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 [Crear un proveedor de OIDC de IAM para su clúster](enable-iam-roles-for-service-accounts.md).

   1. Seleccione **Ajustes de configuración opcionales**.

   1. En **Valores de configuración**, ingrese cualquier información de configuración específica del complemento. Para obtener más información, consulte la documentación del complemento que está actualizando. Para ver una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md)…En **Método de resolución de conflictos**, seleccione una de las opciones. Si ha establecido valores personalizados para la configuración del complemento, le recomendamos que utilice la opción **Preserve** (Conservar). Si no elige esta opción, Amazon EKS sobrescribe sus valores con los valores predeterminados. Si utiliza esta opción, le recomendamos que pruebe cualquier cambio de campo y valor en un clúster que no sea de producción antes de actualizar el complemento de su clúster de producción. Si cambia este valor a Sobrescribir, todas las configuraciones cambiarán a los valores predeterminados de Amazon EKS. Si ha establecido valores personalizados para cualquier configuración, es posible que se sobrescriban con los valores predeterminados de Amazon EKS. Si cambia este valor a Ninguno, Amazon EKS no cambia el valor de ninguna configuración, pero la actualización podría fallar. Si se produce un error en la actualización, recibe un mensaje de error que lo ayuda a resolver el conflicto.

1. Seleccione **Save changes (Guardar cambios)**.

## Actualización del complemento (AWS CLI)
<a name="update_add_on_shared_aws_cli"></a>

1. Necesita la versión `2.12.3` o posterior, o bien, la versión `1.27.160` o posterior de la AWS Interfaz de la línea de comandos (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, 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 [Instalación](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) y [Configuración rápida con aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) en la *Guía del usuario de la interfaz de la línea de comandos de AWS*. 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 AWS CLI en su directorio de usuarios principal](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software) en la *Guía del usuario de AWS CloudShell*.

1. Consulte la lista de complementos instalados. Reemplace *my-cluster* por el nombre de su clúster.

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

   Un ejemplo de salida sería el siguiente.

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

1. Vea la versión actual del complemento que desea actualizar. Reemplace *my-cluster* por el nombre de su clúster y *vpc-cni* por el nombre del complemento que desea actualizar.

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

   Un ejemplo de salida sería el siguiente.

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

1. Determine qué versiones del complemento se encuentran disponibles para la versión de su clúster. Reemplace *1.35* por la versión de su clúster y *vpc-cni* por el nombre del complemento que desea actualizar.

   ```
   aws eks describe-addon-versions --kubernetes-version 1.35 --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.

1. Actualice su complemento. 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. Para obtener más información sobre este comando, consulte [update-addon](https://docs.aws.amazon.com/cli/latest/reference/eks/update-addon.html) en la Referencia de la línea de comandos de Amazon EKS.
   + Reemplace *my-cluster* por el nombre de su clúster.
   + Reemplace *vpc-cni* por el nombre del complemento que desea actualizar y que se ha devuelto en el resultado de un paso anterior.
   + Reemplace *version-number* por la versión a la que desea actualizar devuelta en el resultado del paso anterior. Algunos complementos tienen versiones recomendadas. Para obtener más información, consulte la documentación del complemento que está actualizando. Para ver una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md).**\$1** Si el complemento usa una cuenta de servicio de Kubernetes y un rol de IAM, sustituya *111122223333* por el ID de la cuenta y *role-name* por el nombre de un rol de IAM existente que haya creado. Para obtener instrucciones sobre cómo crear un rol, consulte la documentación del complemento que está creando. Para obtener una lista de los complementos, consulte [Complementos de AWS](workloads-add-ons-available-eks.md). Para especificar un rol de cuenta de servicio, es necesario disponer de 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 [Crear un proveedor de OIDC de IAM para su clúster](enable-iam-roles-for-service-accounts.md).

     Si el complemento no usa una cuenta de servicio de Kubernetes y un rol de IAM, elimine la línea `serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name `.
   + La opción `--resolve-conflicts PRESERVE` conserva los valores existentes del complemento. Si ha establecido valores personalizados para la configuración del complemento y no utiliza esta opción, Amazon EKS sobrescribe los valores con sus valores predeterminados. Si utiliza esta opción, le recomendamos que pruebe cualquier cambio de campo y valor en un clúster que no sea de producción antes de actualizar el complemento de su clúster de producción. Si cambia este valor a `OVERWRITE`, todas las configuraciones cambiarán a los valores predeterminados de Amazon EKS. Si ha establecido valores personalizados para cualquier configuración, es posible que se sobrescriban con los valores predeterminados de Amazon EKS. Si cambia este valor a `NONE`, Amazon EKS no cambia el valor de ninguna configuración, pero la actualización podría fallar. Si se produce un error en la actualización, recibe un mensaje de error que lo ayuda a resolver el conflicto.
   + Si desea eliminar toda la configuración personalizada, realice la actualización mediante la opción *--configuration-values '\$1\$1'*. Esto vuelve a establecer toda la configuración personalizada a los valores predeterminados. Si no quiere cambiar su configuración personalizada, no proporcione el indicador *--configuration-values*. Si desea ajustar una configuración personalizada, sustituya el *\$1\$1* por los nuevos 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. Compruebe el estado de la actualización. Reemplace *my-cluster* por el nombre de su clúster y *vpc-cni* por el nombre del complemento que está actualizando.

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

   Un ejemplo de salida sería el siguiente.

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

   Cuando la actualización se completa, el estado cambia a `ACTIVE`.