Pod Identities de 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.

Pod Identities de EKS

Las aplicaciones de los contenedores de un Pod pueden usar un SDK de AWS o la AWS CLI para llevar a cabo solicitudes de API a Servicios de AWS mediante permisos de AWS Identity and Access Management (IAM). Las aplicaciones deben firmar sus solicitudes de API AWS con credenciales de AWS.

Pod Identities de EKS ofrecen la posibilidad de administrar las credenciales para las aplicaciones, de un modo similar a cómo los perfiles de instancia de Amazon EC2 proporcionan credenciales a instancias de Amazon EC2. En lugar de crear y distribuir las credenciales de AWS a los contenedores o de utilizar el rol de la instancia de Amazon EC2, puede asociar el rol de IAM con una cuenta de servicio de Kubernetes y configurar los Pods para usar la cuenta de servicio.

Cada asociación de Pod Identity de EKS asigna un rol a una cuenta de servicio en un espacio de nombres del clúster especificado. Si tiene la misma aplicación en varios clústeres, puede crear asociaciones idénticas en cada clúster sin modificar la política de confianza del rol.

Si un pod usa una cuenta de servicio que tiene una asociación, Amazon EKS establece las variables de entorno en los contenedores del pod. Las variables de entorno configuran los SDK de AWS, incluida la AWS CLI, para usar las credenciales de la Pod Identity de EKS.

Ventajas de las Pod Identities de EKS

Las Pod Identities de EKS proporcionan los siguientes beneficios:

  • Privilegio mínimo: puede limitar los permisos de IAM a una cuenta de servicio y solo los Pods que utilizan esa cuenta de servicio tienen acceso a esos permisos. Esta característica también elimina la necesidad de soluciones de terceros como kiam o kube2iam.

  • Aislamiento de credenciales: los contenedores de un Pod's solo pueden recuperar las credenciales para el rol de IAM asociado a la cuenta de servicio que usa el contenedor. Un contenedor nunca tiene acceso a credenciales que utilizan otros contenedores de otros Pods. Al utilizar Pod Identities, los contenedores de Pod's también tienen los permisos asignados al rol de IAM del nodo de Amazon EKS, a menos que bloquee el acceso del Pod al servicio de metadatos de instancias (IMDS) de Amazon EC2. Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

  • Auditabilidad: El acceso y el registro de eventos está disponible a través de AWS CloudTrail para facilitar una auditoría retrospectiva.

Pod Identity de EKS es un método más sencillo que Roles de IAM para cuentas de servicio, ya que no utiliza proveedores de identidad OIDC. Pod Identity de EKS incluye las siguientes mejoras:

  • Operaciones independientes: En muchas organizaciones, la creación de proveedores de identidad OIDC es una responsabilidad de equipos diferentes a la de administrar los clústeres Kubernetes. Pod Identity de EKS tiene una clara separación de funciones, en donde toda la configuración de las asociaciones de Pod Identity de EKS se realiza en Amazon EKS y toda la configuración de los permisos de IAM se realiza en IAM.

  • Reutilización: La Pod Identity de EKS utiliza una única entidad principal de IAM en lugar de los principios independientes para cada clúster que utilizan los roles de IAM para cuentas de servicio. El administrador de IAM añade la siguiente entidad principal a la política de confianza de cualquier función para que Pod Identities de EKS puedan utilizarla.

    "Principal": { "Service": "pods.eks.amazonaws.com" }
  • Escalabilidad: cada conjunto de credenciales temporales lo asume el servicio de EKS Auth en Pod Identity de EKS, en lugar de cada SDK de AWS que se ejecuta en cada pod. A continuación, el agente de Pod Identity de Amazon EKS que se ejecuta en cada nodo emite las credenciales de los SDK. De este modo, la carga se reduce a una vez para cada nodo y no se duplica en cada pod. Para obtener más información del proceso, consulte Cómo funciona Pod Identity de EKS.

Para obtener más información sobre cómo comparar las dos alternativas, consulte Concesión de acceso a las cargas de trabajo de Kubernetes a AWS mediante las cuentas de servicio de Kubernetes.

Información general de configuración de las Pod Identities de EKS

Siga estos procedimientos para activar Pod Identities de EKS:

  1. Configuración del agente de Pod Identity de Amazon EKS: solo complete este procedimiento una vez para cada clúster.

  2. Configuración de una cuenta de servicio de Kubernetes para asumir un rol de IAM con Pod Identity de EKS: complete este procedimiento para cada conjunto único de permisos que desee que tenga una aplicación.

  3. Configuración de Pods para usar una cuenta de servicio de Kubernetes: complete este procedimiento para cada Pod que necesite acceso a Servicios de AWS.

  4. Uso de un AWS SDK compatible: confirme que la carga de trabajo utilice un SDK de AWS de una versión compatible y que utilice la cadena de credenciales predeterminada.

Consideraciones sobre Pod Identity de EKS

  • Puede asociar un rol de IAM a cada cuenta de servicio de Kubernetes en cada clúster. Puede cambiar el rol asignado a la cuenta de servicio editando la asociación de Pod Identity de EKS.

  • Solo puede asociar roles que estén en el mismo Cuenta de AWS como el clúster. Puede delegar el acceso desde otra cuenta al rol de esta cuenta que haya configurado para que lo utilice Pod Identities de EKS. Para ver un tutorial de cómo delegar el acceso y AssumeRole, consulte Delegate access across AWS accounts using IAM roles en la Guía de usuario de IAM.

  • Se requiere el agente de Pod Identity de EKS. Se ejecuta como Kubernetes DaemonSet en sus nodos y solo proporciona credenciales a los pods del nodo en el que se ejecuta. Para obtener más información acerca de la compatibilidad del agente de Pod Identity de EKS, consulte la siguiente sección Restricciones de Pod Identity de EKS.

  • El agente de Pod Identity de EKS utiliza el hostNetwork del nodo y utiliza el puerto 80 y el puerto 2703 en una dirección de enlace local del nodo. Esta dirección es 169.254.170.23 para IPv4 y [fd00:ec2::23] para los clústeres IPv6.

    Si deshabilita las direcciones IPv6 o evita las direcciones IP IPv6 de localhost, el agente no podrá iniciarse. Para iniciar el agente en los nodos que no pueden usar IPv6, siga los pasos que se indican en Desactivar IPv6 en el agente de Pod Identity de EKS a fin de deshabilitar la configuración IPv6.

Versiones del clúster de Pod Identity de EKS

Para usar Pod Identities de EKS, el clúster debe tener una versión de la plataforma igual o posterior a la que se indica en la siguiente tabla, o una versión de Kubernetes posterior a las versiones que se muestran en la tabla.

Versión de Kubernetes Versión de la plataforma
1.30 eks.2
1.29 eks.1
1.28 eks.4
1.27 eks.8
1.26 eks.9
1.25 eks.10
1.24 eks.13

Versiones de complementos compatibles con Pod Identity de EKS

importante

Para utilizar Pod Identity de EKS con un complemento de EKS, debe crear la asociación de Pod Identity de EKS de forma manual. No elija un rol de IAM en la configuración del complemento en la AWS Management Console, ya que ese rol solo se usa con IRSA.

Los complementos de Amazon EKS y los complementos autoadministrados que necesitan credenciales de IAM pueden usar Pod Identity de EKS, IRSA o el rol de instancia. En la lista de complementos que utilizan credenciales de IAM compatibles con Pod Identity de EKS, se incluyen los siguientes:

  • Amazon VPC CNI plugin for Kubernetes 1.15.5-eksbuild.1 o posterior

  • AWS Load Balancer Controller 2.7.0 o posterior Tenga en cuenta que AWS Load Balancer Controller no está disponible como complemento de EKS, pero está disponible como complemento autoadministrado.

Restricciones de Pod Identity de EKS

Pod Identities de EKS están disponibles en las siguientes ubicaciones:

Pod Identities de EKS no están disponibles en las siguientes ubicaciones:

  • Regiones de China.

  • AWS GovCloud (US).

  • AWS Outposts.

  • Amazon EKS Anywhere.

  • Los clústeres Kubernetes que se crean y ejecutan en Amazon EC2. Los componentes de Pod Identity de EKS solo están disponibles en Amazon EKS.

No puede usar Pod Identities de EKS con:

  • Pods que se ejecutan en cualquier lugar, excepto instancias Linux Amazon EC2. No se admiten los pods de Linux y Windows que se ejecutan en AWS Fargate (Fargate). No se admiten pods que se ejecutan en instancias Windows Amazon EC2.

  • Complementos de Amazon EKS que necesitan credenciales de IAM. En su lugar, los complementos de EKS solo pueden utilizar roles de IAM para cuentas de servicio. La lista de complementos de EKS que utilizan credenciales de IAM incluye:

    • Los controladores de almacenamiento de CSI: EBS CSI, EFS CSI, controlador CSI Amazon FSx para Lustre, controlador CSI Amazon FSx para NetApp ONTAP, controlador de CSI de Amazon FSx para OpenZFS, controlador CSI Amazon File Cache, AWS Secrets and Configuration Provider (ASCP) para el controlador CSI Kubernetes Secrets Store.

    nota

    Si estos controladores, controladores y complementos se instalan como complementos autogestionados en lugar de como complementos de EKS, son compatibles con las identidades de Pod de EKS siempre que estén actualizados para utilizar los SDK de AWS más recientes.