Saltar al contenido

¿Cómo soluciono los problemas de acceso en mis clústeres de Amazon EKS?

5 minutos de lectura
0

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.

OFICIAL DE AWSActualizada hace un año