Memecahkan masalah penyedia OIDC di cluster anggota armada

Dokumen ini memberikan panduan pemecahan masalah untuk masalah penyedia identitas OIDC dan AzureAD saat mengakses cluster anggota fleet Anda. Dokumen ini hanya berlaku untuk jenis cluster yang didukung.

Format sertifikat salah

Masalah ini terjadi jika 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

Contoh berikut adalah 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 menyelesaikan masalah ini dengan salah satu cara berikut:

  • Nilai sertifikat yang Anda berikan di ClientConfig harus berupa string yang dienkode base64 dan string yang diformat PEM. Untuk mengetahui informasi selengkapnya, lihat Mengenkode sertifikat CA.
  • Jika penyedia Anda tidak menggunakan sertifikat yang ditandatangani oleh certificate authority root, Anda harus mengonfigurasi rantai kepercayaan sertifikat. Untuk mengetahui informasi selengkapnya, lihat Sertifikat perantara.

Nilai sertifikat salah

Masalah ini terjadi jika sertifikat memiliki nilai yang tidak cocok. Dalam hal ini, pemformatan sertifikat sudah benar, tetapi tidak cocok dengan server. Hal ini juga dapat menunjukkan bahwa tidak ada sertifikat dalam konfigurasi.

Nilai sertifikat dapat dianggap salah dalam salah satu skenario berikut:

  • Nilai sertifikat yang salah dibagikan di ClientConfig. Nilai sertifikat salah jika issuer sertifikat server tidak cocok dengan subject sertifikat yang dikonfigurasi.
  • Sertifikat di ClientConfig bukan string yang dienkode base64.
  • Rantai sertifikat tidak diberikan saat sertifikat perantara digunakan untuk menerbitkan sertifikat server.

Pesan error

Contoh berikut adalah pesan error untuk skenario saat ada ketidakcocokan dalam 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 dibuat oleh perintah gcloud anthos auth login

Saat Anda menggunakan perintah gcloud anthos auth login dengan OIDC di mesin 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 pada sistem Windows dan tidak memengaruhi mesin Linux yang menggunakan file kubeconfig yang sama. Penyebab dasarnya 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 versi 1.28 atau yang lebih baru

    Jika Anda menjalankan versi yang lebih lama dari 1.28, sebaiknya upgrade ke versi yang didukung.

  • Kurangi keanggotaan grup pengguna yang terpengaruh

    Mengurangi jumlah grup yang diikuti pengguna yang diautentikasi di bawah batas masalah (sekitar 70 grup) dapat menyelesaikan masalah ini.

  • Tingkatkan keanggotaan grup pengguna yang terpengaruh

    Fitur Microsoft Entra ID memiliki batas untuk jumlah grup yang ditampilkan dalam token. Memiliki antara 70 hingga 200 keanggotaan grup 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 akan menghapus 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.