Volver a actualizaciones
Nuevo releaseAug 22, 2026

aws-iam-authenticator v0.7.19

Una herramienta para utilizar credenciales de AWS IAM para autenticarse en un clúster de Kubernetes.

Compartir

AWS IAM Authenticator for Kubernetes

Una herramienta para usar credenciales de AWS IAM para autenticarse en un clúster de Kubernetes. El trabajo inicial de esta herramienta fue impulsado por Heptio. El proyecto recibe contribuciones de múltiples ingenieros de la comunidad y actualmente es mantenido por Heptio y los ingenieros de Amazon EKS OSS.

Tabla de contenidos

¿Por qué quiero esto?

Si eres un administrador que ejecuta un clúster de Kubernetes en AWS, ya necesitas gestionar las credenciales de AWS IAM para aprovisionar y actualizar el clúster. Al usar AWS IAM Authenticator for Kubernetes, evitas tener que gestionar una credencial separada para el acceso a Kubernetes. AWS IAM también proporciona una serie de buenas propiedades, como una pista de auditoría fuera de banda (a través de CloudTrail) y la aplicación de 2FA/MFA.

Si estás construyendo un instalador de Kubernetes en AWS, AWS IAM Authenticator for Kubernetes puede simplificar tu proceso de arranque. No necesitarás sacar de algún modo tu credencial de administrador inicial de forma segura de tu clúster recién instalado. En su lugar, puedes crear un rol dedicado KubernetesAdmin en el momento de aprovisionar el clúster y configurar Authenticator para permitir los inicios de sesión de administradores del clúster.

¿Cómo lo uso?

Suponiendo que tienes un clúster ejecutándose en AWS y quieres añadir soporte de AWS IAM Authenticator for Kubernetes, necesitas:

  1. Crear un rol de IAM que usarás para identificar usuarios.
  2. Ejecutar el servidor Authenticator como un DaemonSet.
  3. Configurar tu servidor de API para que se comunique con Authenticator.
  4. Configurar kubectl para que use tokens de Authenticator.

1. Crear un rol de IAM

Primero, debes crear uno o más roles de IAM que se asignarán a usuarios/grupos dentro de tu clúster de Kubernetes. La forma más fácil de hacerlo es iniciar sesión en la consola de AWS:

  • Elige la opción "Rol para acceso entre cuentas" / "Proporcionar acceso entre cuentas de AWS que posees".
  • Pega tu número de ID de cuenta de AWS (disponible en la parte superior derecha de la consola).
  • Tu rol no necesita políticas adicionales adjuntas.

Esto creará un rol de IAM sin permisos que puede ser asumido por usuarios/roles autorizados en tu cuenta. Anota el Nombre de Recurso de Amazon (ARN) de tu rol, que necesitarás más abajo.

También puedes hacer esto en un solo paso usando la AWS CLI en lugar de la consola de AWS:```sh

get your account ID

ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account')

define a role trust policy that opens the role to users in your account (limited by IAM policy)

POLICY=$(echo -n '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':root"},"Action":"sts:AssumeRole","Condition":{}}]}')

create a role named KubernetesAdmin (will print the new role's ARN)

aws iam create-role
--role-name KubernetesAdmin
--description "Kubernetes administrator role (for AWS IAM Authenticator for Kubernetes)."
--assume-role-policy-document "$POLICY"
--output text
--query 'Role.Arn'

Puedes omitir este paso y usar:
 - Un rol existente (como un rol de acceso entre cuentas).
 - Un usuario de IAM (consulta `mapUsers` a continuación).
 - Una instancia de EC2 o un rol federado (consulta `mapRoles` a continuación).

### 2. Ejecutar el servidor
El servidor está diseñado para ejecutarse en cada uno de tus nodos maestros como un DaemonSet con red de host, de modo que pueda exponer un puerto localhost.

Para una configuración de ejemplo de ConfigMap y DaemonSet, consulta [`deploy/example.yaml`](https://github.com/kubernetes-sigs/aws-iam-authenticator/blob/master/deploy/example.yaml).
Antes de aplicarla, actualiza estos valores para tu clúster:
 - Reemplaza los ARN de IAM de marcador de posición (`arn:aws:iam::000000000000:...`) en `config.yaml`.
 - Establece `clusterID` a un valor único para tu clúster.
 - Verifica que las reglas de programación del DaemonSet coincidan con las etiquetas/taints de tus nodos del plano de control.

Luego despliégala:```sh
kubectl apply -f deploy/example.yaml
kubectl -n kube-system rollout status daemonset/aws-iam-authenticator
kubectl -n kube-system get pods -l k8s-app=aws-iam-authenticator

Una vez que el pod se esté ejecutando en un nodo del plano de control, aws-iam-authenticator server creará el kubeconfig del webhook en el host en /etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml (o la ruta configurada mediante --generate-kubeconfig).

(Opcional) Pre-generar un certificado, clave y kubeconfig

Si estás creando un instalador automatizado, también puedes pre-generar fácilmente el certificado, la clave y los archivos kubeconfig del webhook usando aws-iam-authenticator init. Este comando generará los archivos y los colocará en los directorios de salida configurados.

Puedes ejecutar esto en cada nodo maestro antes de iniciar el servidor de la API. También puedes generarlos antes de aprovisionar los nodos maestros e instalarlos en las rutas de host correspondientes.

Si no pre-generas los archivos, aws-iam-authenticator server los generará bajo demanda. Esto funciona, pero requiere que reinicies tu servidor de la API de Kubernetes después de la instalación.

3. Configura tu servidor de la API para que se comunique con el servidor

La API de Kubernetes se integra con AWS IAM Authenticator for Kubernetes mediante un webhook de autenticación por token. Cuando ejecutes aws-iam-authenticator server, generará un archivo de configuración de webhook y lo guardará en el sistema de archivos del host. Deberás agregar un solo flag adicional a la configuración de tu servidor de la API:``` --authentication-token-webhook-config-file=/etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml

En muchos clústeres, el servidor de API se ejecuta como un pod estático.
Puedes añadir la bandera a `/etc/kubernetes/manifests/kube-apiserver.yaml`.
Asegúrate de que el directorio del host `/etc/kubernetes/aws-iam-authenticator/` esté montado en tu pod del servidor de API.
También puede que necesites reiniciar el daemon de kubelet en tu nodo maestro para que recoja la definición actualizada del pod estático:```
systemctl restart kubelet.service

4. Crear asignaciones de rol/usuario de IAM a usuario/grupo de Kubernetes

El comportamiento predeterminado del servidor es obtener las asignaciones exclusivamente de los campos mapUsers y mapRoles de su archivo de configuración. Consulta Formato de Configuración Completo a continuación para más detalles.

Con la opción --backend-mode, puedes configurar el servidor para obtener las asignaciones de dos backends adicionales: un ConfigMap de estilo EKS (--backend-mode=EKSConfigMap) o recursos personalizados IAMIdentityMapping (--backend-mode=CRD). El backend predeterminado, el archivo de configuración del servidor que está montado por el pod del servidor, corresponde a --backend-mode=MountedFile.

Categorías