Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Warum kann ich keine kubeconfig-Datei für meinen Amazon EKS-Cluster generieren?

Lesedauer: 3 Minute
0

Ich erhalte einen AccessDeniedException-Fehler, wenn ich versuche, eine kubeconfig-Datei für einen Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster zu generieren.

Kurzbeschreibung

Sie müssen über die Berechtigung verfügen, die API-Aktion eks:DescribeCluster mit dem Cluster zu verwenden, um eine kubeconfig-Datei für einen Amazon EKS-Cluster zu generieren. Um die Berechtigung zu erhalten, fügen Sie einem IAM-Benutzer eine AWS Identity and Access Management (IAM) -Richtlinie hinzu.

Lösung

Gehen Sie wie folgt vor, um einem Benutzer eine IAM-Richtlinie zuzuweisen:

  1. Öffnen Sie die IAM-Konsole. Wählen Sie dann im Navigationsbereich Benutzer oder Rollen aus.

  2. Wählen Sie den Namen des Benutzers oder der Rolle aus, in den oder die eine Richtlinie eingebettet werden soll.

  3. Wählen Sie im Reiter Berechtigungen die Option Inline-Richtlinie hinzufügen aus.

  4. Wählen Sie den Reiter JSON.

  5. Verwenden Sie einen Texteditor, um den Code durch die folgende IAM-Richtlinie zu ersetzen:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "eks:DescribeCluster"
          ],
          "Resource": "*"
        }
      ]
    }
  6. Wählen Sie Richtlinie überprüfen aus.

  7. Geben Sie unter Name einen Namen für die Richtlinie ein. Zum Beispiel: eks_update-kubeconfig.

  8. Wählen Sie Richtlinie erstellen.
    Hinweis: Wenn Sie die Multi-Faktor-Authentifizierung (MFA) für IAM-Benutzer erzwungen haben, die das AWS Command Line Interface (AWS CLI) verwenden, müssen Sie sich vor Abschluss des nächsten Schritts bei MFA authentifizieren. Eine ** explizite Ablehnungsmeldung** weist darauf hin, dass, wenn die MFA falsch ist, es eine IAM-Richtlinie gibt, die Aktionen ablehnt:

    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "BlockMostAccessUnlessSignedInWithMFA",
          "Effect": "Deny",
          "NotAction": [
            "iam:CreateVirtualMFADevice",
            "iam:EnableMFADevice",
            "iam:ListMFADevices",
            "iam:ListUsers",
            "iam:ListVirtualMFADevices",
            "iam:ResyncMFADevice",
            "sts:GetSessionToken"
          ],
          "Resource": "*",
          "Condition": {
            "BoolIfExists": {
              "aws:MultiFactorAuthPresent": "false"
            }
          }
        }
      ]
    }

    Da Sie ein MFA-Gerät verwenden, müssen Sie ein MFA-Token verwenden, um den Zugriff auf AWS-Ressourcen mit der AWS CLI zu authentifizieren. Befolgen Sie die Schritte im Artikel Wie verwende ich ein MFA-Token, um den Zugriff auf meine AWS-Ressourcen über die AWS CLI zu authentifizieren? Führen Sie dann den AWS CLI-Befehl sts get-session-token aus. Ersetzen Sie arn-of-the-mfa-device durch den ARN Ihres MFA-Geräts und code-from-token durch den Code Ihres Tokens:

    $ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

    Sie können temporäre Anmeldeinformationen verwenden, indem Sie die Werte in Umgebungsvariablen exportieren.

    Zum Beispiel:

    $ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output
  9. Führen Sie den Befehl update-kubeconfig aus und bestätigen Sie, dass die Konfigurationsdatei unter ~/.kube/config aktualisiert wird. Ersetzen Sie region-code durch den Code Ihrer AWS-Region und cluster\ _name durch den Namen Ihres Clusters:

    aws eks --region region-code update-kubeconfig --name cluster_name
AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr