Custom Resource
Definitions
(CRD) adalah alat canggih untuk memperluas kemampuan Kubernetes.
Namun, jika CRD berisi paket Certificate Authority (CA) yang tidak valid atau salah format dalam konfigurasi webhook konversinya spec.conversion.webhook.clientConfig.caBundle
, hal ini dapat mengganggu operasi cluster. Hal ini dapat menyebabkan error selama pembuatan, pembaruan, atau penghapusan resource. Google Kubernetes Engine (GKE) memantau cluster Anda dan menggunakan layanan Pemberi rekomendasi untuk memberikan panduan tentang cara mengoptimalkan penggunaan platform.
Untuk membantu memastikan cluster Anda tetap stabil dan memiliki performa tinggi, lihat rekomendasi dari GKE untuk CRD yang beroperasi, tetapi memiliki CA bundle yang tidak valid. Gunakan panduan ini untuk memeriksa CRD yang berpotensi salah dikonfigurasi dan memperbaruinya jika perlu. Untuk mempelajari lebih lanjut cara mengelola insight dan rekomendasi dari Pemberi Rekomendasi, lihat Mengoptimalkan penggunaan GKE dengan insight dan rekomendasi.
Mengidentifikasi cluster yang terpengaruh
Untuk mendapatkan insight yang mengidentifikasi cluster yang terpengaruh oleh CRD dengan paket CA yang tidak valid, ikuti petunjuk untuk melihat insight dan rekomendasi untuk subjenis K8S_CRD_WITH_INVALID_CA_BUNDLE
. Anda bisa mendapatkan insight dengan cara berikut:
- Gunakan Trusted Cloud console.
- Gunakan Google Cloud CLI atau Recommender API, dengan memfilter subjenis
K8S_CRD_WITH_INVALID_CA_BUNDLE
.
Setelah Anda mengidentifikasi CRD menggunakan insight, ikuti petunjuk untuk memecahkan masalah CA bundle yang salah dikonfigurasi.
Saat GKE mendeteksi CRD yang salah dikonfigurasi
GKE menghasilkan insight dan rekomendasi dengan subjenis K8S_CRD_WITH_INVALID_CA_BUNDLE
jika cluster GKE memiliki satu atau beberapa CRD yang melaporkan caBundle
yang salah dikonfigurasi untuk konfigurasi klien webhook di spec.conversion.webhook.clientConfig
.
Ikuti petunjuk untuk memeriksa CRD dengan paket CA yang salah dikonfigurasi.
Memecahkan masalah CRD yang terdeteksi
Bagian berikut berisi petunjuk bagi Anda untuk memecahkan masalah CRD yang dideteksi berpotensi salah dikonfigurasi oleh GKE.
Setelah Anda menerapkan petunjuk dan CRD dikonfigurasi dengan benar, rekomendasi akan diselesaikan dalam waktu 24 jam dan tidak lagi muncul di konsol. Jika belum 24 jam sejak Anda menerapkan panduan rekomendasi, Anda dapat menandai rekomendasi tersebut sebagai selesai. Jika tidak ingin menerapkan rekomendasi, Anda dapat menolaknya.
Mengidentifikasi CRD yang terpengaruh dalam cluster
Lihat insight dan rekomendasi untuk subjenis
K8S_CRD_WITH_INVALID_CA_BUNDLE
, pilih insight satu per satu untuk memecahkan masalah. GKE menghasilkan satu insight per cluster yang memiliki CRD rusak.Jalankan perintah berikut untuk menjelaskan Service guna menemukan CRD dengan paket CA yang berpotensi menimbulkan masalah:
kubectl get crd -o custom-columns=NAME:.metadata.name,CABUNDLE:.spec.conversion.webhook.clientConfig.caBundle
Menghasilkan output yang mencakup:
- Name: Nama CRD.
- CaBundle: Paket CA yang terkait dengan webhook konversi CRD, jika ada. Periksa outputnya. Jika kolom caBundle kosong untuk CRD yang Anda ketahui menggunakan webhook konversi, hal ini menandakan kemungkinan masalah pada caBundle.
Buat ulang CRD
Untuk mengatasi error ini, buat ulang CRD yang terpengaruh dengan CA bundle yang valid:
Cadangkan resource kustom yang ada dan terkait dengan CRD bermasalah ini, jika ada. Jalankan perintah berikut untuk mengekspor resource yang ada:
kubectl get <crd-name> -o yaml > backup.yaml
Hapus CRD yang ada:
kubectl delete crd <crd-name>
Pastikan kolom
caBundle
CRD berisi sertifikat PEM berenkode base-64 yang terbentuk dengan baik. Anda dapat melakukannya dengan mengedit CRD secara langsung atau dengan menghubungi penulisnya.Ubah definisi YAML CRD, perbarui kolom
spec.conversion.webhook.clientConfig.caBundle
dengan data CA bundle yang valid. Hasilnya akan terlihat seperti berikut:spec: conversion: webhook: clientConfig: caBundle: <base64-encoded-ca-bundle>
Terapkan CRD yang telah diperbaiki:
kubectl apply -f <corrected-crd-file.yaml>
Pulihkan resource kustom Anda:
kubectl apply -f backup.yaml