Sie können ein Diagnosedienstprogramm verwenden, um Probleme mit der FQDN-basierten Authentifizierung in Flottenmitgliedsclustern zu beheben. Wenn Sie Probleme bei der Authentifizierung in einem Cluster mit einem bestimmten OIDC-Anbieter haben, können Sie das Tool aktivieren und damit schnell Konfigurationsprobleme identifizieren, indem Sie Anmeldeabläufe mit Ihrem OIDC-Anbieter simulieren. Dieses Dokument gilt nur für unterstützte Clustertypen.
Das Diagnosedienstprogramm ist nur für einzelne Cluster mit Version 1.32 oder höher verfügbar und unterstützt nur OIDC.
Diagnosedienstprogramm aktivieren
Das Diagnosedienstprogramm ist standardmäßig deaktiviert und muss aktiviert werden, bevor Sie es zur Fehlerbehebung verwenden können. So aktivieren Sie es:
Öffnen Sie die benutzerdefinierte Ressource „ClientConfig“ zur Bearbeitung:
kubectl edit clientconfig default \ --kubeconfig CLUSTER_KUBECONFIG -n kube-publicDas Manifest sollte in etwa so aussehen:
apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: emailFügen Sie dem ClientConfig-Manifest einen Abschnitt
identityServiceOptionshinzu, um die Konfiguration des Diagnosedienstprogramms anzugeben, wie im folgenden Beispiel gezeigt:apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: identityServiceOptions: diagnosticInterface: enabled: true expirationTime: TIMESTAMP authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: emailErsetzen Sie
TIMESTAMPdurch eine Ablaufzeit im RFC 3339 Format. Beispiel:2025-05-01T17:05:00Z. Die Ablaufzeit bestimmt, wann die Funktion des Diagnosedienstprogramms automatisch deaktiviert wird. Da das Diagnosedienstprogramm für alle Nutzer mit Clusterzugriff verfügbar ist, können Sie mit der entsprechenden Ablaufzeit dafür sorgen, dass das Dienstprogramm nicht länger als nötig aktiviert bleibt. Beim Festlegen der Ablaufzeit wird empfohlen, sie auf 12 Stunden in der Zukunft zu setzen. Jede andere Zeit in der Zukunft ist jedoch gültig.Speichern Sie die Änderungen und beenden Sie den Texteditor, um das Manifest auf den Cluster anzuwenden.
Diagnosedienstprogramm zum Simulieren einer Anmeldung verwenden
Nachdem das Diagnosedienstprogramm aktiviert wurde, können Sie ein Anmeldeereignis simulieren und die entsprechenden Diagnoseinformationen abrufen, mit denen Sie Probleme mit einem bestimmten Anbieter beheben können.
Öffnen Sie die Diagnoseseite in einem Browser, indem Sie die folgende URL aufrufen:
APISERVER-URL/diagnoseErsetzen Sie
APISERVER_URLdurch den vollqualifizierten Domainnamen (FQDN) für Ihren Cluster. Beispiel:https://apiserver.example.com.Wenn ein Fehler vom Typ „Verboten“ auftritt, wie im folgenden Beispiel:
forbidden: user \"system:anonymous\" cannot get path \"/diagnose\"Hängen Sie den Portnummernwert
:11001an dieAPISERVER_URLan. Beispiel:https://apiserver.example.com:11001/diagnose.Auf der Diagnoseseite wird eine Liste der für Ihren Cluster konfigurierten OIDC-Anbieter angezeigt.
Wählen Sie den Anbieter aus, für den Sie eine Fehlerbehebung ausführen möchten.
Melden Sie sich wie gewohnt an.
Am Ende des Anmeldevorgangs zeigt das Dienstprogramm eine Seite mit Diagnoseinformationen an, die Ihnen bei der Fehlerbehebung helfen können.
Diagnoseseite zur Fehlerbehebung bei Anmeldeproblemen verwenden
Auf der Diagnoseseite finden Sie eine Zusammenfassung der Authentifizierung, die in drei Abschnitte unterteilt ist:
Status: Enthält je nachdem, ob die Authentifizierung erfolgreich war oder nicht, entweder
SuccessoderFailed.Identitätsanbieter: Enthält Details wie
Name,Client IDundUserClaimzum Anbieter, der für die Anmeldung verwendet wurde.ID-Token: Enthält Informationen zum ID-Token, das von dem Cluster mit dem angegebenen Bereitsteller abgerufen wurde. Das ID-Token ist ein JSON-Objekt, das eine Reihe von Schlüssel/Wert-Paaren enthält. Schlüssel können beispielsweise
iss,aud,subundemailsein.
Fehlerbehebung bei erfolgreicher Authentifizierung
Wenn der Inhalt des Abschnitts Status angibt, dass die Authentifizierung erfolgreich war, aber weiterhin Probleme auftreten, können fehlende rollenbasierte Zugriffssteuerungen (Role-Based Access Controls, RBACs) die Ursache sein. Weitere Informationen zur Fehlerbehebung finden Sie unter RBACs für Gruppen funktionieren nicht für OIDC Anbieter.
Fehlerbehebung bei fehlgeschlagener Authentifizierung
Wenn der Inhalt des Abschnitts Status angibt, dass die Authentifizierung fehlgeschlagen ist, suchen Sie zuerst nach Inkonsistenzen zwischen den Abschnitten Identitätsanbieter und ID-Token.
Hier sind einige Authentifizierungsanforderungen, die Sie prüfen sollten:
Wenn das Feld
UserClaimunter Identitätsanbieter leer ist, muss der Abschnitt ID-Token ein Feld mit dem Namensubenthalten. Ein fehlendes Feldsubdeutet auf ein Problem mit dem ID-Token hin.Der Wert des Felds
UserClaimunter Identitätsanbieter muss ein Schlüssel im Abschnitt ID-Token sein. Wenn das FeldUserClaimbeispielsweise aufemailgesetzt ist, muss im Abschnitt ID-Token ein Feld mit dem Namenemailvorhanden sein.Der Wert des Felds
GroupsClaimunter Identitätsanbieter muss ein Schlüssel im Abschnitt ID-Token sein. Wenn das FeldGroupsClaimbeispielsweise aufgroupsListgesetzt ist (für einen Anbieter, der Gruppen unterstützt), muss im Abschnitt ID-Token ein Feld mit dem NamengroupsListvorhanden sein.Der Wert des Felds
Client IDunter Identitätsanbieter muss im Wert des Feldsaudim Abschnitt ID-Token enthalten sein.
Wenn eine der oben genannten Bedingungen nicht erfüllt ist, finden Sie in einem der folgenden Leitfäden weitere Informationen zum korrekten Konfigurieren Ihrer Cluster für die Authentifizierung:
Wenn Sie die Authentifizierung für einzelne Cluster einrichten, folgen Sie der Anleitung zum Konfigurieren einzelner Cluster.
Wenn Sie die Authentifizierung auf Flottebene einrichten, folgen Sie der Anleitung zum Konfigurieren einer Flotte von Clustern.
Logs für weitere Fehlerbehebung verwenden
Die Logs des Identitätsdienst-Pods enthalten zusätzliche Debugging-Informationen. So verwenden Sie diese Logs: