tutorial started iam how getting eks docs cluster aws authenticator amazon-web-services kubernetes

amazon web services - started - error de kubectl Debe iniciar sesión en el servidor(no autorizado) al acceder al clúster EKS



how to eks (6)

Cuando se crea un clúster de Amazon EKS, la entidad IAM (usuario o rol) que crea el clúster se agrega a la tabla de autorización RBAC de Kubernetes como administrador. Inicialmente, solo ese usuario de IAM puede hacer llamadas al servidor de API de Kubernetes utilizando kubectl.

eks-docs

Por lo tanto, para agregar acceso a otros usuarios de aws , primero debe editar ConfigMap para agregar un usuario o rol de IAM a un clúster de Amazon EKS.

Puede editar el archivo ConfigMap ejecutando: kubectl edit -n kube-system configmap/aws-auth , después de lo cual se le otorgará un editor con el que asignará nuevos usuarios.

apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes mapUsers: | - userarn: arn:aws:iam::111122223333:user/ops-user username: ops-user groups: - system:masters mapAccounts: | - "111122223333"

mapUsers en cuenta los mapUsers donde está agregando ops-user junto con la etiqueta mapAccounts que asigna la cuenta de usuario de AWS con un nombre de usuario en el grupo Kubernetes.

Sin embargo, no se proporcionan permisos en RBAC solo con esta acción; aún debe crear enlaces de roles en su clúster para proporcionar los permisos de estas entidades.

Como indica la documentación de Amazon ( iam-docs ), debe crear un enlace de función en el clúster kubernetes para el usuario especificado en el ConfigMap. Puedes hacerlo ejecutando el siguiente comando ( kub-docs ):

kubectl create clusterrolebinding ops-user-cluster-admin-binding --clusterrole=cluster-admin --user=ops-user

que otorga el ClusterRole administración de ClusterRole a un usuario llamado ops-user en todo el clúster.

He estado tratando de seguir la guía de inicio a EKS. Cuando intenté llamar a kubectl get service, recibí el mensaje: error: debe haber iniciado sesión en el servidor (no autorizado). Esto es lo que hice:
1. Creó el cluster EKS.
2. Creó el archivo de configuración de la siguiente manera:

apiVersion: v1 clusters: - cluster: server: https://*********.yl4.us-west-2.eks.amazonaws.com certificate-authority-data: ********* name: ********* contexts: - context: cluster: ********* user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: heptio-authenticator-aws args: - "token" - "-i" - "*********" - "-r" - "arn:aws:iam::*****:role/******"

  1. Descargado e instalado la última versión de aws cli
  2. Se corrigió aws para configurar y establecer las credenciales para mi usuario de IAM y la región como us-west-2
  3. Se agregó una política al usuario de IAM para sts: AssumeRole para el rol EKS y se configura como una relación de confianza
  4. Configurar kubectl para usar el archivo de configuración

Puedo obtener un token cuando ejecuto heptio-authenticator-aws token -r arn: aws: iam :: **********: role / ********* -i my-cluster Sin embargo, cuando intento acceder al clúster, sigo recibiendo un error: debe haber iniciado sesión en el servidor (no autorizado)

¿Alguna idea de cómo solucionar este problema?


Acabo de depurar este problema. Tengo una pregunta. ¿Está ejecutando esto en una red wifi corporativa? En caso afirmativo, ¿podría crear una instancia de EC2 y luego probar si puede hacer kubectl get svc ?

También, pruebe si este comando funciona kubectl get svc ---insecure-skip-tls-verify


Además, asegúrese de que sus usuarios estén en el ConfigMap de aws-auth k8s:

iam-docs


Comenté las dos últimas líneas del archivo de configuración.

# - "-r" # - "arn:aws:iam::**********:role/**********"

y funcionó aunque no tengo idea de por qué


Debe crear el clúster bajo el mismo perfil de IAM al que lo está accediendo desde cli de AWS.

Dicho de otra manera, dentro de ~/.aws/credentials , el perfil que está accediendo a kubectl debe coincidir exactamente con el mismo IAM que se utilizó para crear el clúster.

Mi recomendación es usar AWS cli para crear sus clusters, ya que crear desde la GUI puede ser más confuso que útil. La guía de introducción es la mejor opción para ponerse en marcha.


Yo tuve el mismo problema . Es probable que estés usando una cuenta de root. Parece que las cuentas raíz están bloqueadas para que no asuman los roles necesarios. Este error a veces se puede ocultar si está utilizando claves caducadas.