Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Configuración de pods para usar una cuenta de servicio de Kubernetes

Modo de enfoque
Configuración de pods para usar una cuenta de servicio de Kubernetes - Amazon EKS

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.

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.

Si un pod necesita acceder a los servicios de AWS, debe configurarlo para que use una cuenta de servicio de Kubernetes. La cuenta de servicio debe estar asociada a un rol de AWS Identity and Access Management (IAM) que tenga permisos para acceder a los servicios de AWS.

  • Un clúster existente. Si no tiene uno, puede crearlo mediante una de las guías de Introducción a Amazon EKS.

  • Cree un proveedor de OpenID Connect (OIDC) de IAM para su clúster. Para saber si ya tiene un proveedor o cómo crear uno, consulte Crear un proveedor de OIDC de IAM para su clúster.

  • Una cuenta de servicio de Kubernetes asociada a un rol de IAM. La cuenta de servicio debe estar anotada con el nombre de recurso de Amazon (ARN) del rol de IAM. El rol debe tener una política de IAM asociada que contenga los permisos que desee que tengan sus pods para usar servicios de AWS. Para obtener más información acerca de cómo crear y configurar la cuenta de servicio y el rol, consulte Asignación de roles de IAM a cuentas de servicio de Kubernetes.

  • 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 y Configuración rápida con aws configure 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 la CLI de AWS en su directorio principal en la Guía del usuario de AWS CloudShell.

  • La herramienta de línea de comandos de kubectl está instalada en su dispositivo o AWS CloudShell. La versión puede ser la misma o hasta una versión secundaria anterior o posterior a la versión de Kubernetes de su clúster. Por ejemplo, si la versión del clúster es 1.29, puede usar la versión 1.28, 1.29 o 1.30 de kubectl con él. Para instalar o actualizar kubectl, consulte Configuración de kubectl y eksctl.

  • Un archivo config de kubectl existente que contenga la configuración del clúster. Para crear un archivo config de kubectl, consulte Conexión de kubectl a un clúster de EKS mediante la creación de un archivo kubeconfig.

    1. Use el siguiente comando para crear un manifiesto de implementación que puede implementar en un pod con el que se puede confirmar la configuración. Sustituya los valores de ejemplo por sus propios valores.

      cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF
    2. Implemente el manifiesto en el clúster.

      kubectl apply -f my-deployment.yaml
    3. Confirme que existan las variables de entorno necesarias para su pod.

      1. Consulte los pods que se implementaron en el paso anterior.

        kubectl get pods | grep my-app

        Un ejemplo de salida sería el siguiente.

        my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s
      2. Consulte el ARN del rol de IAM que esté utilizando el pod.

        kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_ROLE_ARN:

        Un ejemplo de salida sería el siguiente.

        AWS_ROLE_ARN: arn:aws:iam::111122223333:role/my-role

        El ARN del rol debe coincidir con el ARN del rol con el que anotó la cuenta de servicio existente. Para obtener más información sobre cómo anotar la cuenta de servicio, consulte Asignación de roles de IAM a cuentas de servicio de Kubernetes.

      3. Confirme que el pod tenga un montaje de archivo de token de identidad web.

        kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_WEB_IDENTITY_TOKEN_FILE:

        Un ejemplo de salida sería el siguiente.

        AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token

        El kubelet solicita y almacena el token en nombre del pod. De forma predeterminada, el kubelet actualiza el token si tiene más del 80 % de su tiempo de vida total o más de 24 horas. Puede modificar la duración del vencimiento de cualquier cuenta, excepto la cuenta de servicio predeterminada, con la configuración en la especificación del pod. Para obtener más información, consulte Proyección del volumen del token de la cuenta de servicio en la documentación de Kubernetes.

        El webhook de Pod Identity de Amazon EKS del clúster observa los pods que usan una cuenta de servicio con la siguiente anotación:

        eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-role

        El webhook aplica las variables de entorno anteriores a esos pods. El clúster no necesita utilizar el webhook para configurar las variables de entorno y los montajes de archivos de token. Puede configurar manualmente los pods para que tengan estas variables de entorno. Las versiones compatibles del SDK de AWS buscan primero estas variables de entorno en el proveedor de la cadena de credenciales. Las credenciales del rol se utilizan para los pods que cumplen estos criterios.

    4. Confirme que sus pods puedan interactuar con los servicios de AWS mediante los permisos que asignó en la política de IAM adjunta a su rol.

      nota

      Cuando un pod utiliza credenciales de AWS de un rol de IAM asociado a una cuenta de servicio, la AWS CLI u otros SDK de los contenedores de ese pod utilizan las credenciales proporcionadas por dicho rol. Si no restringe el acceso a las credenciales que se proporcionan al rol de IAM del nodo de Amazon EKS, el pod sigue teniendo acceso a esas credenciales. Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

      Si sus pods no pueden interactuar con los servicios como esperaba, siga estos pasos para confirmar que todo esté configurado correctamente.

      1. Confirme que los pods usen una versión del AWS SDK que admita asumir un rol de IAM a través de un archivo de token de identidad web de OpenID Connect. Para obtener más información, consulte Uso de IRSA con el SDK de AWS.

      2. Confirme que la implementación use la cuenta de servicio.

        kubectl describe deployment my-app | grep "Service Account"

        Un ejemplo de salida sería el siguiente.

        Service Account: my-service-account
      3. Si sus pods siguen sin poder acceder a los servicios, revise los pasos que se describen en Asignación de roles de IAM a cuentas de servicio de Kubernetes para confirmar que el rol y la cuenta de servicio se hayan configurado correctamente.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.