Memecahkan masalah autentikasi identitas workload terkelola untuk GKE

Dokumen ini menjelaskan resolusi untuk error managed workload identity umum.

Anda dapat memeriksa status Pod dengan menjalankan perintah berikut:

kubectl describe pod

Pod gagal di-deploy dengan sertifikat

Jika Pod workload Google Kubernetes Engine (GKE) gagal di-deploy dengan sertifikat yang dipasang, gunakan perintah berikut untuk memeriksa status Pod:

kubectl describe pod POD_NAME -n POD_NAMESPACE

Error terkait izin

Bagian ini menjelaskan error yang terkait dengan izin yang salah.

Izin ditolak saat menerbitkan sertifikat: gagal menerbitkan sertifikat dari GKE Auth

Error ini terlihat mirip dengan yang berikut ini:

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'

Error terjadi karena kumpulan workload identity tidak memiliki peran CA Service Workload Certificate Requester (roles/privateca.workloadCertificateRequester) di kumpulan CA subordinat.

Untuk mengatasi error ini, berikan peran ke kumpulan:

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"

Ganti kode berikut:

  • SUBORDINATE_CA_POOL_ID: ID pool CA subordinat
  • CA_POOL_PROJECT_ID: project ID dari root CA pool
  • REGION: region CA subordinasi
  • CA_POOL_PROJECT_NUMBER: nomor project pool CA
  • PROJECT_ID: ID project workload identity pool

MountVolume.SetUp gagal untuk volume

Error ini terlihat mirip dengan yang berikut ini:

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

Error ini terjadi karena workload identity pool tidak memiliki peran Pembaca Kumpulan CA Pribadi (roles/privateca.poolReader) di kumpulan CA subordinat.

Untuk mengatasi error ini, berikan peran ke kumpulan dan tunggu beberapa menit hingga paket kepercayaan dimuat:

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"

Ganti kode berikut:

  • SUBORDINATE_CA_POOL_ID: ID pool CA subordinat
  • REGION: region CA subordinasi
  • PROJECT_NUMBER: nomor project workload identity pool
  • PROJECT_ID: ID project workload identity pool

Anda dapat menggunakan perintah berikut untuk memeriksa keberadaan paket kepercayaan:

kubectl get gkeclustertrustbundle

Saat paket kepercayaan dimuat, responsnya akan terlihat seperti berikut:

NAME                                         AGE
svc.id.goog-PROJECT_ID.svc.id.goog   5m35s

Dalam output, PROJECT_ID adalah project ID fleet yang terkait dengan root kepercayaan Anda.

Error sertifikat

Error di bagian ini terkait dengan konfigurasi sertifikat.

Beberapa error dapat terjadi jika sertifikat identitas workload terkelola tidak dibuat. Untuk memeriksa keberadaan sertifikat ini di volume yang dipasang Pod, lakukan hal berikut:

  1. Menghubungkan ke pod.

    # Open the pod sh interface
    kubectl exec -it $pod_name -n $pod_namespace -- sh
    
  2. Cantumkan dan periksa file kredensial.

    # 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
    

Anda juga dapat memeriksa status penyediaan sertifikat Pod dengan memeriksa log k8s_container untuk penampung `gke-metadata-server melalui konsolTrusted Cloud .

Prasyarat gagal saat menerbitkan sertifikat

Deskripsi Pod dapat menyertakan pesan berikut:

Failed precondition while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition

Error ini terjadi karena pool identitas beban kerja tidak dikonfigurasi dengan konfigurasi penerbitan sertifikat (CIC).

Untuk mengatasi error ini, buat CIC dan gunakan untuk memperbarui workload identity pool.