Dokumen ini memberikan panduan pemecahan masalah untuk masalah penyedia identitas OIDC dan AzureAD di GKE Identity Service.
Pemformatan sertifikat salah
Masalah ini terjadi saat nilai sertifikat memiliki error pemformatan. Masalah pemformatan dapat sesuai dengan nilai sertifikat yang tidak dienkode base64 dan nilai yang dienkode base64 tetapi salah. Masalah ini juga dapat muncul jika sertifikat tidak ditandatangani oleh certificate authority root atau rantai kepercayaan yang diformat dengan benar tidak diberikan.
Pesan error
Berikut adalah contoh pesan error untuk skenario saat format sertifikat salah:
Sertifikat yang tidak dienkode base64:
Failed creating HTTP client to fetch the Discovery URI "<Discovery-document URI>" with error: Unable to decode data field, the value should be Base64 encoded
Sertifikat yang tidak diformat dengan benar atau dienkode base64 tetapi salah:
Unable to connect to 'https://example.com', encountered the following error: Problem with the SSL CA cert (path? access rights?). Details: error setting certificate verify locations: CAfile: /tmp/example.pem CApath: none (The certificate could not be read, this is most likely because it's empty or contains a formatting error. Please check your configuration.)
Sertifikat yang tidak diformat dengan benar atau dienkode base64 tetapi salah:
Failed fetching the Discovery URI "<Discovery-document URI>" with error: Unable to load TLS certificates.
Solusi
Anda dapat mengatasi masalah ini dengan salah satu cara berikut:
- Nilai sertifikat yang Anda berikan di ClientConfig harus berupa string yang dienkode base64 dan string berformat PEM. Untuk mengetahui informasi selengkapnya, lihat Encode sertifikat CA.
- Jika penyedia Anda tidak menggunakan sertifikat yang ditandatangani oleh certificate authority root, Anda harus mengonfigurasi Layanan Identitas GKE dengan rantai kepercayaan sertifikat. Untuk mengetahui informasi selengkapnya, lihat Sertifikat perantara.
Nilai sertifikat salah
Masalah ini terjadi saat sertifikat memiliki nilai yang tidak cocok. Dalam hal ini, pemformatan sertifikat sudah benar, tetapi tidak cocok dengan server. Error ini juga dapat menunjukkan bahwa tidak ada sertifikat dalam konfigurasi.
Nilai sertifikat dapat dianggap tidak akurat dalam salah satu skenario berikut:
- Nilai sertifikat yang salah dibagikan di ClientConfig. Nilai sertifikat salah jika
issuer
sertifikat server tidak cocok dengansubject
sertifikat yang dikonfigurasi. - Sertifikat di ClientConfig bukan string berenkode base64.
- Rantai sertifikat tidak disediakan saat sertifikat perantara digunakan untuk menerbitkan sertifikat server.
Pesan error
Contoh berikut adalah pesan error untuk skenario saat terjadi ketidakcocokan pada nilai sertifikat:
Rantai sertifikat tidak lengkap atau tidak cocok dengan server:
SSL peer certificate was not OK. Details: SSL certificate problem: unable to get local issuer certificate
Rantai sertifikat tidak lengkap (sesuai dengan rantai parsial yang tidak valid yang tidak dimulai dari root atau tidak berdekatan):
Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.
Rantai sertifikat valid, tetapi tidak cocok dengan server OIDC:
AIS was expecting the server to have a different certificate
Rantai sertifikat valid, tetapi tidak cocok dengan server OIDC:
Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.
Solusi
Nilai sertifikat yang Anda berikan di ClientConfig harus menyertakan rantai sertifikat yang diformat dengan benar dan cocok dengan penyedia identitas. Untuk mengetahui informasi selengkapnya tentang cara memformat dan mengenkode sertifikat, lihat Mengenkode sertifikat CA.
Perintah kubectl
gagal saat menggunakan file kubeconfig yang dihasilkan oleh perintah gcloud anthos auth login
Saat Anda menggunakan perintah gcloud anthos auth login
dengan OIDC di komputer Windows untuk membuat file kubeconfig untuk akses cluster, perintah kubectl
mungkin gagal dengan pesan error berikut: The command line is too long.
Masalah ini terjadi secara khusus di sistem Windows dan tidak memengaruhi komputer Linux yang menggunakan file kubeconfig yang sama. Penyebab utamanya terkait dengan ukuran token autentikasi yang dibuat oleh Azure Active Directory (Azure AD) saat pengguna tergabung dalam sejumlah besar grup (sekitar 70 hingga 200 grup, bergantung pada panjang nama grup).
Token besar ini menyebabkan eksekusi perintah kubectl
gagal karena melebihi panjang maksimum command line yang diizinkan oleh Windows, yaitu 8.191 karakter.
Pesan error
$ kubectl --kubeconfig test-kubeconfig.yml get nodes The command line is too long. The command line is too long. E0102 11:02:29.115256 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1 The command line is too long. E0102 11:02:29.350238 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1 The command line is too long. E0102 11:02:30.062811 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1 Unable to connect to the server: getting credentials: exec: executable gcloud failed with exit code 1
Solusi
Untuk menyelesaikan masalah ini, lakukan tindakan berikut:
Upgrade ke cluster GKE versi 1.28 atau yang lebih baru
Jika Anda menjalankan versi cluster GKE yang lebih lama dari 1.28, sebaiknya upgrade ke versi yang didukung.
Mengurangi keanggotaan grup pengguna yang terpengaruh
Mengurangi jumlah grup yang diikuti pengguna yang melakukan autentikasi hingga di bawah batas masalah (sekitar 70 grup) dapat menyelesaikan masalah ini.
Menambah keanggotaan grup pengguna yang terpengaruh
Fitur Microsoft Entra ID memiliki batas untuk jumlah grup yang dikeluarkan dalam token. Memiliki keanggotaan grup antara 70 hingga 200 dapat menyebabkan masalah autentikasi. Namun, Anda dapat menyelesaikan masalah penyedia identitas dengan meningkatkan jumlah keanggotaan grup di luar batas ini. Karena perilaku batas ini, Azure AD menghilangkan grup dari
id_token
saat jumlah keanggotaan menjadi terlalu besar, sehingga mencegah command line menjadi terlalu panjang dan menyelesaikan masalah penyedia identitas. Tinjau dokumentasi Microsoft Entra ID untuk mengonfirmasi batas dan mengetahui detail selengkapnya.