No puedo otorgar roles adicionales de AWS la capacidad de interactuar con mi clúster

No puedo otorgar roles adicionales de AWS la capacidad de interactuar con mi clúster

Estoy intentando aprender AWS EKS y seguirIntroducción a Amazon EKS: Consola de administración de AWS y CLI de AWSguía paso a paso excepto para la región que he cambiado a us-east-1.

Puedo crear mi clúster, my-clusterpero cuando intento configurar mi computadora, que es una instancia EC2 (T2.Micro) para comunicarme con el clúster, aparece error: You must be logged in to the server (Unauthorized)un error. Al profundizar, descubrí que el rol de EC2 (ARN - arn:aws:iam::123456789012:role/ec2-admin) necesita asumir el rol que creó el clúster (ARN - arn:aws:iam::123456789012:role /myAmazonEKSClusterRole). También hice estas modificaciones en la definición de rol modificando la relación de confianza para myAmazonEKSClusterRoleobtener. arn:aws:sts::123456789012:assumed-role/myAmazonEKSClusterRole/test-sessionDespués de esto, puedo ejecutar aws ekscomandos, pero kubectllos comandos aún se me escapan.

Para ejecutar kubectlcomandos, estoy tratando de seguir los pasos enAdministrar usuarios o roles de IAM para su clúster. Sin embargo, me piden que haga cambios en aws-auth-cm.yamlel archivo configMap, lo cual no puedo hacer porque no puedo ejecutar kubectl applyel comando.

Mi kubeconfigarchivo -

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <cert>
  name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
contexts:
- context:
    cluster: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
    user: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
current-context: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
kind: Config
preferences: {}
users:
- name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - --region
      - us-east-1
      - eks
      - get-token
      - --cluster-name
      - my-cluster
      command: aws

El contenido del archivo aws-auth-cm.yaml después de realizar los cambios es

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
          #    - rolearn: <ARN of instance role (not instance profile)>
          #      username: system:node:{{EC2PrivateDNSName}}
          #      groups:
          #        - system:bootstrappers
          #        - system:nodes
    - rolearn: arn:aws:iam::375712918983:role/myAmazonEKSClusterRole
      username: myAmazonEKSClusterRole
      groups:
        - system:masters

¿Puedes ayudar con esto o dar algunos consejos?

Por favor hazme saber si tienes preguntas.

Respuesta1

Querrás una de 3 cosas; cualquiera:

  • supongamos que arn:aws:iam::123456789012:role/myAmazonEKSClusterRoleen una sesión de terminal la aws eks get-tokenejecución kubectlse comportará correctamente
  • cree un perfil awscli que asuma el arn:aws:iam::123456789012:role/myAmazonEKSClusterRolerol y actualice el args:para incluirlo[..., "--profile", "whatever-you-call-that-profile",...]
  • o asuma el rol en una terminal, ejecute aws eks get-tokeny coloque esa credencial estática en su kubeconfig ya que no parece que necesite la credencial por mucho tiempo solo para actualizar ese ConfigMap.

Para el primero, me refiero a aws sts assume-role --role-arn arn:aws:iam::123456789012:role/myAmazonEKSClusterRole ... | tee sts-creds.jsony luego export AWS_ACCESS_KEY_ID= AWS_SECRET_KEY= AWS_SESSION_TOKEN=basado en el contenido de ese json

Para el segundo me refiero a:

$ cat >> $HOME/.aws/config <<FOO
[profile my-cluster]
assume_role = arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
source_profile = whatever
; or credential_source = whatever
FOO

de acuerdo aesta documentación

información relacionada