Tengo problemas cuando intento conceder acceso a mis clústeres de Amazon Elastic Kubernetes Service (Amazon EKS).
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Utilice las entradas de acceso de Amazon EKS para conceder acceso a la API de Kubernetes a los usuarios y roles de AWS Identity and Access Management (IAM).
Configuración de los permisos de entidades principales de IAM
La entidad principal de IAM debe tener los siguientes permisos para el clúster:
- CreateAccessEntry
- ListAccessEntries
- DescribeAccessEntry
- DeleteAccessEntry
- UpdateAccessEntry
- ListAccessPolicies
- AssociateAccessPolicy
- DisassociateAccessPolicy
Para obtener más información sobre los permisos de Amazon EKS, consulte Acciones definidas por Amazon Elastic Kubernetes Service.
Configuración de los permisos de la política de acceso
La política de acceso establece el nivel de acceso que permite a un usuario acceder a la API de Kubernetes. Utilice las siguientes políticas para crear entradas de acceso:
Cuando crea entradas de acceso con las políticas anteriores, concede acceso a un espacio de nombres para los permisos a nivel de clúster de Kubernetes.
Nota: No puede modificar el contenido de una política de acceso ni puede crear sus propias políticas de acceso.
Concesión de acceso a los usuarios de IAM a su clúster de Amazon EKS
Cambio del modo de autenticación
Importante: Después de activar el método de entrada de acceso, no podrá volver a desactivarlo.
Para usar las entradas de acceso, actualice el modo de autenticación del clúster de Amazon EKS a API o API_AND_CONFIG_MAP. Ejecute el siguiente comando update-cluster-config de la AWS CLI:
aws eks update-cluster-config \
--name my-cluster \
--access-config authenticationMode=API_AND_CONFIG_MAP
Nota: Sustituya my-cluster por el nombre de su clúster. Para desactivar permanentemente el método ConfigMap, sustituya API_AND_CONFIG_MAP por API.
Creación de una entrada de acceso para la entidad de IAM y vinculación de la política de acceso
Proporcione acceso de administrador de clústeres a su clúster de Amazon EKS. En primer lugar, ejecute el siguiente comando create-access-entry para crear una entrada de acceso para su usuario o rol de IAM:
aws eks create-access-entry --cluster-name my-cluster \
--principal-arn arn:aws:iam::111122223333:user/example-user
Nota: Sustituya my-cluster por el nombre de su clúster y arn:aws:iam::111122223333:user/example-user por su rol de IAM o el ARN del usuario.
A continuación, ejecute el siguiente comando associate-access-policy para asociar AmazonEKSClusterAdminPolicy al usuario o rol de IAM:
aws eks associate-access-policy --cluster-name my-cluster\
--principal-arn arn:aws:iam::111122223333:user/example-user \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster
Nota: Sustituya my-cluster por el nombre de su clúster y arn:aws:iam::111122223333:user/example-user por su rol de IAM o el ARN del usuario.
Para proporcionar al usuario o rol de IAM acceso de administrador a un espacio de nombres específico, ejecute el siguiente comando associate-access-policy:
aws eks associate-access-policy --cluster-name my-cluster\
--principal-arn arn:aws:iam::111122223333:role/example-role \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy \
--access-scope type=namespace,namespaces=test*
Nota: Sustituya my-cluster por el nombre de su clúster y arn:aws:iam::111122223333:role/example-role por su rol de IAM o el ARN del usuario. Además, sustituya test por el nombre de su espacio de nombres.
Para usar entradas de acceso con el control de acceso basado en roles (RBAC) de Kubernetes, ejecute el siguiente comando create-access-entry:
aws eks create-access-entry --cluster-name my-cluster \
--principal-arn arn:aws:iam::111122223333:role/example-role-2 \
--kubernetes-groups viewers
Nota: Sustituya my-cluster por el nombre de su clúster y arn:aws:iam::111122223333:user/example-role-2 por su rol de IAM o el ARN del usuario. Sustituya viewers por el nombre del grupo especificado en el objeto RoleBinding o ClusterRoleBinding de Kubernetes de su clúster.
Confirmación de las credenciales de su entidad de IAM
Para comprobar las credenciales de usuario o rol de IAM que se utilizan en la AWS CLI, ejecute el siguiente comando get-caller-identity:
aws sts get-caller-identity
El resultado del comando debe devolver el usuario o rol de IAM para el que ha creado una entrada de acceso. Si recibe otro rol o usuario de IAM, asegúrese de haber configurado correctamente las credenciales del rol o usuario.
Creación de Kubeconfig para su entidad de IAM
Para crear Kubeconfig para su rol o usuario de IAM, ejecute el siguiente comando update-kubeconfig:
aws eks update-kubeconfig --name my-cluster --region aws-region
Nota: Sustituya my-cluster por el nombre de su clúster y aws-region por su región de AWS.
Comprobación del acceso a Kubernetes
Confirme que su entidad de IAM está autenticada y que puede acceder a los recursos del clúster de Amazon EKS.
Para comprobar si puede crear pods en cualquier espacio de nombres, ejecute el siguiente comando:
kubectl auth can-i create pods --all-namespaces
Para comprobar si puede enumerar los despliegues en un espacio de nombres específico, ejecute el siguiente comando:
kubectl auth can-i list deployments.apps -n test
Nota: Sustituya test por el nombre de su espacio de nombres.