Wie behebe ich den Fehler „Fehler: Sie müssen am Server angemeldet sein (nicht autorisiert)“, wenn ich von CodeBuild eine Verbindung zu einem Amazon-EKS-Cluster herstelle?

Letzte Aktualisierung: 04.11.2021

Ich versuche, von AWS CodeBuild aus eine Verbindung zu einem Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster herzustellen, indem ich die CodeBuild-Servicerolle verwende. Warum geben meine kubectl-Befehle den Fehler „Fehler: Sie müssen am Server angemeldet sein (nicht autorisiert)“ zurück und wie kann ich das Problem beheben?

Kurzbeschreibung

AWS Identity and Access Management (IAM) Authenticator erlaubt keinen Pfad in der Rolle Amazon-Ressourcenname (ARN), der in der Konfigurationszuordnung verwendet wird. Wenn der Rollen-ARN (rolearn) in Ihrer aws-Auth ConfigMap einen Pfad enthält, gibt Amazon EKS den folgenden Fehler zurück:

„Fehler: Sie müssen am Server angemeldet sein (nicht autorisiert)“

Der CodeBuild-Servicerollen-ARN umfasst den folgenden Pfad: /service-role. Wenn Sie den Wert rolearn in Ihrer aws-auth ConfigMap angeben, müssen Sie den Pfad /service-role entfernen – oder jeden anderen Pfad, wenn Sie eine andere Rolle verwenden. Weitere Informationen finden Sie unter Verwalten von Benutzern oder IAM-Rollen für Ihren Cluster.

Wenn Sie Fehler erhalten, nachdem Sie Pfade aus dem Rollen-ARN in Ihrer aws-Auth-ConfigMap entfernt haben, befolgen Sie die Anweisungen im folgenden Artikel: Wie behebe ich einen nicht autorisierten Serverfehler, wenn ich eine Verbindung zum Amazon-EKS-API-Server herstelle?

Auflösung

Identifizieren Sie den ARN Ihrer CodeBuild-Servicerolle und entfernen Sie den Pfad /service-role

1.    Öffnen Sie die CodeBuild-Konsole.

2.    Wählen Sie im linken Navigationsbereich Erstellen aus. Wählen Sie dann Projekte erstellen.

3.    Wählen Sie Ihren Projektnamen aus. Wählen Sie dann Details erstellen.

4.    Kopieren Sie im Abschnitt Umgebung im Bereich Erstellungsdetails den CodeBuild-Servicerollen-ARN.

5.    Fügen Sie in einem Texteditor den CodeBuild-Servicerollen-ARN ein und entfernen Sie den Pfad /service-role. Kopieren Sie dann den bearbeiteten ARN.

Beispiel für den CodeBuild-Servicerollen-ARN

arn:aws:iam::123456789012:role/service-role/codebuild-project-service-role

Beispiel für den CodeBuild-Servicerollen-ARN mit dem entfernten Pfad /service-role

arn:aws:iam::123456789012:role/codebuild-project-service-role

Fügen Sie den ARN der bearbeiteten CodeBuild-Servicerolle zu Ihrer aws-auth ConfigMap hinzu

1.    Um die aws-auth ConfigMap in einem Texteditor zu bearbeiten, muss der Clusterbesitzer oder Administrator den folgenden kubectl-Befehl ausführen:

Hinweis: Sie können den Befehl von Ihrem lokalen Computer oder einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance ausführen, die Zugriff auf den EKS-Cluster hat. Der Benutzer, der den Cluster erstellt hat, hat standardmäßig Zugriff auf den Cluster.

$ kubectl edit -n kube-system cm aws-auth

Die aws-auth ConfigMap wird im vi-Editor geöffnet.

Hinweis: Wenn Sie einen Fehler vom Server (NotFound) erhalten: configmaps „aws-auth“ wurde nicht gefunden-Fehler erhalten, verwenden Sie das Beispiel aws-auth ConfigMap, das im folgenden Artikel bereitgestellt wird: Verwalten von Benutzern oder IAM-Rollen für Ihren Cluster.

2.    Fügen Sie im vi-Editor den ARN der bearbeiteten CodeBuild-Servicerolle zur aws-auth ConfigMap hinzu, indem Sie Folgendes tun:
Aktivieren Sie den Einfügemodus durch Drücken von i.
Geben Sie in der mapRoles-Anweisung unter system:masters für den Wert Rolearn den ARN der bearbeiteten CodeBuild-Servicerolle ein.
Aktiviere den Befehlsmodus durch Drücken von Esc. Speichern und schließen Sie dann die Datei, indem Sie eingeben :wq.

Beispiel einer mapRoles-Anweisung, die eine korrekt formatierte CodeBuild-Servicerolle ARN enthält

```
mapRoles: |
   - groups:
     - system:masters
     rolearn: arn:aws:iam::123456789012:role/codebuild-project-service-role
     username: codebuild-project-service-role
```

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?