¿Cómo resuelvo un error de servidor no autorizado cuando me conecto al servidor de la API de Amazon EKS?

Última actualización: 23-06-2022

Al usar comandos de kubectl para conectarme al servidor de la API de Amazon Elastic Kubernetes Service (Amazon EKS), me aparece el mensaje “error: You must be logged in to the server (Unauthorized)” (Error: debe haber iniciado sesión en el servidor, no autorizado). ¿Cómo lo puedo resolver?

Descripción corta

Antes de conectarse al servidor de la API de Amazon EKS, instale y configure la última versión de la interfaz de la línea de comandos de AWS (AWS CLI).

A continuación, el administrador del clúster debe completar los pasos de una de las siguientes secciones:

  • Ha creado el clúster
  • No ha creado el clúster

Por último, la persona que recibió el error debe completar los pasos de la sección Usted es el usuario o rol que recibió el error.

Resolución

Ha creado el clúster

1.    Para ver la configuración de su usuario o rol de AWS CLI, ejecute el comando siguiente:

$ aws sts get-caller-identity

La salida devuelve el Nombre de recurso de Amazon (ARN) del usuario o rol de AWS Identity and Access Management (IAM). Por ejemplo:

{
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}

2.    Confirme que el ARN coincida con el creador del clúster.

3.    Actualice o genere el archivo kubeconfig utilizando uno de los siguientes comandos.

Como usuario de IAM, ejecute el siguiente comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Nota: Sustituya eks-cluster-name por el nombre de su clúster. Sustituya aws-region por su región de AWS.

Como rol de IAM, ejecute el siguiente comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Nota: Sustituya eks-cluster-name por el nombre de su clúster. Sustituya aws-region por su región de AWS.

4.    Para confirmar que el archivo kubeconfig esté actualizado, ejecute el comando siguiente:

$ kubectl config view --minify

5.    Para confirmar que su usuario o rol de IAM esté autenticado, ejecute el comando siguiente:

$ kubectl get svc

El resultado debería ser parecerse a esto:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Nota: EKS asigna el rol de IAM de creador del clúster en el plano de control como kubernetes-admin. Si el registro del servidor de API se activó en el momento de crear el clúster, es posible consultar al creador de la entidad. Ejecute este comando en CloudWatch Insights:

fields @logStream, @timestamp, @message
| sort @timestamp desc
| filter @logStream like /authenticator/
| filter @message like "username=kubernetes-admin"
| limit 50

Esta consulta devuelve la entidad de IAM que está asignada como creadora del clúster. Asuma el rol de la entidad de IAM que recibe en el resultado y vuelve a hacer llamadas de kubectl al clúster.

No ha creado el clúster

1.    Para ver la configuración de su usuario o rol de AWS CLI, ejecute el comando siguiente:

$ aws sts get-caller-identity

La salida devuelve el ARN del usuario o rol de IAM.

2.    Pida al propietario o al administrador del clúster que agregue su usuario o rol de IAM al ConfigMap aws-auth.

Nota: Si tiene los permisos de IAM correctos, puede usar AssumeRole para iniciar sesión como creador del clúster.

3.    Para editar el ConfigMap aws-auth en un editor de texto, el propietario o administrador del clúster debe ejecutar el comando siguiente:

$ kubectl edit configmap aws-auth --namespace kube-system

Nota: Para el RoleARN del Centro de identidades de AWS IAM (sucesor de AWS Single Sign-On), asegúrese de eliminar “/aws-reserved/sso.amazonaws.com/REGION” de la URL rolearn o el ARN no podrá autorizarlo como usuario válido.

4.    Para agregar un usuario de IAM o un rol de IAM, lleve a cabo uno de los siguientes pasos.

Agregue el usuario de IAM a MapUsers. Por ejemplo:

mapUsers: |
  - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
    username: testuser
    groups:
      - system:masters

Nota: Sustituya testuser por su nombre de usuario.

Agregue el rol de IAM a MapRoles. Por ejemplo:

mapRoles: |
  - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole
    username: testrole
    groups:
      - system:masters

Nota: Sustituya testrole por su rol.

El valor del nombre de usuario en la sección mapRoles únicamente acepta caracteres en minúscula. El rol de IAM se debe asignar sin la ruta. Si desea obtener más información sobre los requisitos para las rutas de los roles, amplíe la sección aws-auth ConfigMap no concede acceso al clúster en Solución de problemas de IAM.

El grupo system:masters permite llevar a cabo un acceso de superusuario para llevar a cabo cualquier acción en cualquier recurso. Si desea obtener más información, consulte Roles predeterminados y enlaces de roles.

Es el usuario o rol que recibió el error

1.    Para actualizar o generar el archivo kubeconfig después de actualizar el ConfigMap aws-auth ConfigMap, ejecute cualquiera de los siguientes comandos.

Como usuario de IAM, ejecute el siguiente comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

Nota: Sustituya eks-cluster-name por el nombre de su clúster. Sustituya aws-region por su región de AWS.

2.    Como rol de IAM, ejecute el siguiente comando:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

Nota: Sustituya eks-cluster-name por el nombre de su clúster. Sustituya aws-region por su región de AWS.

3.    Para confirmar que el archivo kubeconfig esté actualizado, ejecute el comando siguiente:

$ kubectl config view --minify

4.    Para confirmar que su usuario o rol de IAM esté autenticado, ejecute el comando siguiente:

$ kubectl get svc

Debería ver un resultado similar a este:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.100.0.1     <none>        443/TCP   77d

Nota: Si sigue recibiendo errores, revise las pautas para la resolución de problemas en Uso de la autorización RBAC.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?