Zusätzliche AWS-Rollen können nicht mit meinem Cluster interagieren

Zusätzliche AWS-Rollen können nicht mit meinem Cluster interagieren

Ich versuche AWS EKS zu lernen und folgeErste Schritte mit Amazon EKS – AWS Management Console und AWS CLISchritt-für-Schritt-Anleitung, mit Ausnahme der Region, die ich in us-east-1 geändert habe.

Ich kann meinen Cluster erstellen, my-clusteraber wenn ich versuche, meinen Computer, der eine EC2-Instanz (T2.Micro) ist, für die Kommunikation mit dem Cluster zu konfigurieren, erhalte ich error: You must be logged in to the server (Unauthorized)eine Fehlermeldung. Beim genaueren Hinsehen habe ich festgestellt, dass die EC2-Rolle (ARN - arn:aws:iam::123456789012:role/ec2-admin) die Rolle übernehmen muss, die den Cluster erstellt hat (ARN - arn:aws:iam::123456789012:role/myAmazonEKSClusterRole). Ich habe diese Änderungen auch in der Rollendefinition vorgenommen, indem ich die Vertrauensbeziehung in „ myAmazonEKSClusterRoleget “ geändert habe arn:aws:sts::123456789012:assumed-role/myAmazonEKSClusterRole/test-session. Danach kann ich aws eksBefehle ausführen, aber kubectldie Befehle entgehen mir immer noch.

Zur Ausführungkubectl Befehle auszuführen, versuche ich, die Schritte inVerwalten von Benutzern oder IAM-Rollen für Ihren Cluster. Allerdings werde ich aufgefordert, Änderungen an der configMap-Datei vorzunehmen, aws-auth-cm.yamlwas ich nicht tun kann, da ich den Befehl nicht ausführen kann kubectl apply.

Meine kubeconfigDatei -

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

Der Inhalt der Datei aws-auth-cm.yaml, nachdem ich die Änderungen vorgenommen habe, ist

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

Können Sie dabei bitte helfen oder einige Hinweise geben?

Wenn Sie Fragen haben, lassen Sie es mich bitte wissen.

Antwort1

Sie möchten eines von drei Dingen:

  • Nehmen Sie an , dass sich der ausgeführte Vorgang arn:aws:iam::123456789012:role/myAmazonEKSClusterRolein einer Terminalsitzung korrekt verhält.aws eks get-tokenkubectl
  • Erstellen Sie ein AWSCLI-Profil, das die arn:aws:iam::123456789012:role/myAmazonEKSClusterRoleRolle übernimmt, und aktualisieren Sie es, args:um Folgendes einzuschließen:[..., "--profile", "whatever-you-call-that-profile",...]
  • oder übernehmen Sie die Rolle in einem Terminal, führen Sie aus aws eks get-tokenund fügen Sie diese statischen Anmeldeinformationen in Ihre Kubeconfig ein, da Sie die Anmeldeinformationen anscheinend nicht sehr lange benötigen, nur um diese ConfigMap zu aktualisieren

Für den ersten, ich meine, aws sts assume-role --role-arn arn:aws:iam::123456789012:role/myAmazonEKSClusterRole ... | tee sts-creds.jsonund dann export AWS_ACCESS_KEY_ID= AWS_SECRET_KEY= AWS_SESSION_TOKEN=basierend auf dem Inhalt dieses JSON

Mit dem zweiten meine ich:

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

entsprechenddiese Dokumentation

verwandte Informationen