Anda dapat menggunakan utilitas diagnostik untuk memecahkan masalah autentikasi berbasis FQDN di cluster anggota fleet. Jika Anda mengalami kesulitan melakukan autentikasi ke cluster menggunakan penyedia OIDC tertentu, Anda dapat mengaktifkan alat ini dan menggunakannya untuk mengidentifikasi masalah konfigurasi dengan cepat dengan menyimulasikan alur login dengan penyedia OIDC Anda. Dokumen ini hanya berlaku untuk jenis cluster yang didukung.
Utilitas diagnostik hanya tersedia di cluster individual yang menjalankan versi 1.32 atau yang lebih tinggi dan hanya mendukung OIDC.
Mengaktifkan utilitas diagnostik
Utilitas diagnostik dinonaktifkan secara default dan harus diaktifkan sebelum Anda dapat menggunakannya untuk memecahkan masalah. Untuk mengaktifkannya, gunakan petunjuk berikut:
Buka resource kustom ClientConfig untuk mengedit:
kubectl edit clientconfig default \ --kubeconfig CLUSTER_KUBECONFIG -n kube-publicManifesnya akan terlihat seperti berikut:
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: emailSeperti yang ditunjukkan dalam contoh berikut, tambahkan bagian
identityServiceOptionske manifes ClientConfig untuk menentukan konfigurasi utilitas diagnostik: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: emailGanti
TIMESTAMPdengan waktu habis masa berlaku dalam format RFC 3339. Misalnya,2025-05-01T17:05:00Z. Waktu habis masa berlaku menentukan kapan fitur utilitas diagnostik otomatis dinonaktifkan. Karena utilitas diagnostik tersedia untuk siapa saja yang memiliki akses cluster, menetapkan waktu habis masa berlaku dengan tepat akan membantu memastikan bahwa utilitas tidak tetap diaktifkan lebih lama dari yang diperlukan. Saat menetapkan waktu habis masa berlaku, sebaiknya tetapkan ke 12 jam ke depan, meskipun waktu apa pun di masa mendatang valid.Simpan perubahan Anda dan keluar dari editor teks untuk menerapkan manifes ke cluster.
Menggunakan utilitas diagnostik untuk menyimulasikan login
Setelah utilitas diagnostik diaktifkan, Anda dapat menyimulasikan peristiwa login dan mendapatkan informasi diagnostik yang sesuai yang dapat Anda gunakan untuk memecahkan masalah dengan penyedia tertentu.
Buka halaman diagnostik di browser dengan membuka URL berikut:
APISERVER-URL/diagnoseGanti
APISERVER_URLdengan nama domain yang sepenuhnya memenuhi syarat (FQDN) untuk cluster Anda. Misalnya,https://apiserver.example.com.Jika Anda mengalami error terlarang, seperti berikut:
forbidden: user \"system:anonymous\" cannot get path \"/diagnose\"Tambahkan nilai nomor port
:11001keAPISERVER_URL. Misalnya,https://apiserver.example.com:11001/diagnose.Halaman diagnostik menampilkan daftar penyedia OIDC yang dikonfigurasi untuk cluster Anda.
Pilih penyedia yang ingin Anda pecahkan masalahnya.
Login seperti biasa.
Di akhir proses login, utilitas akan menampilkan halaman dengan informasi diagnostik yang dapat membantu Anda memecahkan masalah.
Menggunakan halaman diagnostik untuk memecahkan masalah login
Halaman diagnostik menyediakan ringkasan autentikasi, yang dibagi menjadi tiga bagian:
Status: berisi
SuccessatauFailed, bergantung pada apakah autentikasi berhasil atau tidak.Identity Provider: berisi detail, seperti
Name,Client ID, danUserClaim, tentang penyedia yang digunakan untuk login.Token ID: berisi informasi tentang token ID yang diambil oleh cluster menggunakan penyedia yang diberikan. Token ID adalah objek JSON yang berisi kumpulan pasangan nilai-kunci. Kunci dapat mencakup
iss,aud,sub, danemail.
Memecahkan masalah keberhasilan autentikasi
Jika konten bagian Status menunjukkan bahwa autentikasi telah berhasil dan Anda masih mengalami masalah, kemungkinan penyebabnya adalah kontrol akses berbasis peran (RBAC) yang tidak ada. Untuk mengetahui informasi pemecahan masalah tambahan, lihat RBAC untuk grup yang tidak berfungsi untuk penyedia OIDC guna pemecahan masalah lebih lanjut.
Memecahkan masalah kegagalan autentikasi
Jika konten bagian Status menunjukkan bahwa autentikasi gagal, mulailah dengan mencari ketidakkonsistenan antara bagian Identity Provider dan ID Token.
Berikut beberapa persyaratan autentikasi yang harus Anda periksa:
Jika kolom
UserClaimdi Identity Provider kosong, bagian ID Token harus berisi kolom bernamasub. Kolomsubyang tidak ada menunjukkan bahwa ada masalah dengan token ID.Nilai kolom
UserClaimdi Identity Provider harus berupa kunci di bagian ID Token. Misalnya, jika kolomUserClaimditetapkan keemail, harus ada kolom bernamaemaildi ID Token.Nilai kolom
GroupsClaimdi Identity Provider harus berupa kunci di ID Token. Misalnya, jika kolomGroupsClaimditetapkan kegroupsList(untuk penyedia yang mendukung grup), harus ada kolom bernamagroupsListdi ID Token.Nilai kolom
Client IDdi Identity Provider harus terdapat dalam nilai kolomauddi bagian ID Token.
Jika salah satu kondisi sebelumnya tidak terpenuhi, lihat salah satu panduan berikut untuk mengetahui detail selengkapnya tentang cara mengonfigurasi cluster dengan benar untuk autentikasi:
Menggunakan log untuk pemecahan masalah lebih lanjut
Log Pod layanan identitas berisi informasi proses debug tambahan. Untuk menggunakan log ini: