In diesem Dokument werden Lösungen für häufige Fehler bei verwalteten Arbeitslastidentitäten beschrieben.
Sie können den Status eines Pods mit dem folgenden Befehl prüfen:
kubectl describe pod
Pod kann nicht mit Zertifikaten bereitgestellt werden
Wenn der GKE-Arbeitslast-Pod (Google Kubernetes Engine) nicht mit den bereitgestellten Zertifikaten bereitgestellt werden konnte, verwenden Sie den folgenden Befehl, um den Pod-Status zu prüfen:
kubectl describe pod POD_NAME -n POD_NAMESPACE
Berechtigungsfehler
In diesem Abschnitt werden Fehler im Zusammenhang mit falschen Berechtigungen beschrieben.
Berechtigung beim Ausstellen des Zertifikats verweigert: Ausstellen des Zertifikats über GKE Auth fehlgeschlagen
Dieser Fehler sieht in etwa so aus:
Permission denied while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission 'privateca.certificates.createForSelf' denied on 'projects/PROJECT_NUMBER/locations/REGION/caPools/ CA_POOL_ID'
Der Fehler ist aufgetreten, weil dem Workload Identity-Pool die Rolle CA Service Workload Certificate Requester
(roles/privateca.workloadCertificateRequester
) für den untergeordneten CA-Pool fehlt.
Um diesen Fehler zu beheben, gewähren Sie die Rolle dem Pool:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--project=CA_POOL_PROJECT_ID \
--location=REGION \
--role=roles/privateca.workloadCertificateRequester \
--member="principal://iam.googleapis.com/projects/CA_POOL_PROJECT_NUMBER/name/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog"
Ersetzen Sie Folgendes:
SUBORDINATE_CA_POOL_ID
: die ID des untergeordneten CA-PoolsCA_POOL_PROJECT_ID
: die Projekt-ID des Stamm-CA-PoolsREGION
: die Region der untergeordneten ZertifizierungsstelleCA_POOL_PROJECT_NUMBER
: die Projektnummer des CA-PoolsPROJECT_ID
: die Projekt-ID des Workload Identity-Pools
MountVolume.SetUp ist für das Volume fehlgeschlagen
Dieser Fehler sieht in etwa so aus:
MountVolume.SetUp failed for volume "fleet-spiffe-credentials" : rpc error: code = Internal desc = unable to mount volume: while creating volume: while loading trust bundles: rpc error: code = Internal desc = while getting trust map from the trustBundleWatcher: rpc error: code = Internal desc = no GKEClusterTrustBundle objects found with fleet WIP nickname fleet-project/svc.id.goog
Dieser Fehler ist aufgetreten, weil dem Workload Identity-Pool die Rolle „Private CA Pool Reader“ (roles/privateca.poolReader
) für den untergeordneten CA-Pool fehlt.
Um diesen Fehler zu beheben, gewähren Sie die Rolle dem Pool und warten Sie einige Minuten, bis die Trust Bundles geladen wurden:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--location=REGION \
--role=roles/privateca.poolReader \
--member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog"
Ersetzen Sie Folgendes:
SUBORDINATE_CA_POOL_ID
: die ID des untergeordneten CA-PoolsREGION
: die Region der untergeordneten ZertifizierungsstellePROJECT_NUMBER
: die Projektnummer des Workload Identity-PoolsPROJECT_ID
: die Projekt-ID des Workload Identity-Pools
Mit dem folgenden Befehl können Sie prüfen, ob die Trust Bundles vorhanden sind:
kubectl get gkeclustertrustbundle
Wenn die Trust Bundles geladen sind, sieht die Antwort so aus:
NAME AGE
svc.id.goog-PROJECT_ID.svc.id.goog 5m35s
In der Ausgabe ist PROJECT_ID
die Projekt-ID der Flotte, mit der Ihre Trust Root verknüpft ist.
Zertifikatsfehler
Die Fehler in diesem Abschnitt beziehen sich auf die Zertifikatskonfiguration.
Wenn keine Zertifikate für verwaltete Arbeitslastidentitäten generiert werden, können mehrere Fehler auftreten. So prüfen Sie, ob diese Zertifikate auf Pod-gemounteten Volumes vorhanden sind:
Stellen Sie eine Verbindung zum Pod her.
# Open the pod sh interface kubectl exec -it $pod_name -n $pod_namespace -- sh
Listen Sie die Anmeldedatendateien auf und prüfen Sie sie.
# Look up the volume contents: ls -la /var/run/secrets/workload-spiffe-credentials cat /var/run/secrets/workload-spiffe-credentials/certificates.pem cat /var/run/secrets/workload-spiffe-credentials/ca_certificates.pem cat /var/run/secrets/workload-spiffe-credentials/private_key.pem cat /var/run/secrets/workload-spiffe-credentials/trust_bundles.json
Sie können den Status der Zertifizierungsbereitstellung eines Pods auch prüfen, indem Sie die k8s_container
-Protokolle für den Container „gke-metadata-server“ über dieTrusted Cloud -Konsole aufrufen.
Fehlgeschlagene Voraussetzung bei der Ausstellung des Zertifikats
Die Pod-Beschreibung kann die folgende Meldung enthalten:
Failed precondition while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition
Dieser Fehler ist aufgetreten, weil der Workload Identity-Pool nicht mit einer Konfiguration für die Zertifikatausstellung konfiguriert wurde.
Um diesen Fehler zu beheben, erstellen Sie eine Cloud Identity Connect-Gruppe und aktualisieren Sie damit den Workload Identity-Pool.