Memvalidasi pengontrol penerimaan
Artikel ini adalah bagian dari beberapa seri. Mulailah dengan gambaran umum.
Pengontrol penerimaan jarang menyebabkan masalah, tetapi sangat penting untuk memastikan fungsionalitasnya yang tepat. Artikel ini membahas bagaimana pengontrol penerimaan dapat memengaruhi komponen lain saat tidak berfungsi dengan baik. Ini juga menjelaskan perintah yang dapat Anda gunakan untuk memvalidasi performa pengontrol penerimaan.
Pengontrol penerimaan
Pengontrol penerimaan adalah bagian dari kode yang mencegat permintaan ke server API Kubernetes sebelum persistensi objek tetapi setelah permintaan diautentikasi dan diotorisasi.
Pengontrol penerimaan dapat memvalidasi, bermutasi, atau kombinasi keduanya. Mengubah pengontrol dapat memodifikasi objek terkait sebelum mengakui permintaan. Memvalidasi pengontrol hanya memastikan bahwa permintaan memenuhi kriteria tertentu yang telah ditentukan sebelumnya.
Salah satu fungsi utama pengontrol penerimaan adalah mengatur permintaan untuk pembuatan, penghapusan, dan modifikasi objek. Selain itu, pengontrol penerimaan dapat membatasi kata kerja kustom, seperti meminta koneksi ke pod melalui proksi server API. Namun, pengontrol penerimaan tidak dapat memblokir permintaan untuk membaca objek, termasuk operasi seperti get
, , watch
atau list
.
Beberapa komponen dapat memengaruhi pengontrol penerimaan, seperti bermutasi dan memvalidasi webhook. Saat Anda menggabungkan bermutasi dan memvalidasi webhook di kluster Kubernetes, sangat penting untuk memastikan ketersediaan tinggi. Simpul yang tidak sehat tidak boleh memblokir permintaan server API. Sangat penting untuk memantau alur kontrol penerimaan sehingga permintaan ke server API tidak diblokir. Pengontrol penerimaan yang tidak sehat dapat memengaruhi bermutasi dan memvalidasi webhook. Pengontrol penerimaan berbasis webhook yang harus Anda pantau meliputi:
Add-on Azure Policy untuk kluster Azure Kubernetes Service (AKS), yang memperluas Gatekeeper. Gatekeeper adalah webhook pengontrol penerimaan untuk Agen Kebijakan Terbuka.
Kyverno, yang berjalan sebagai pengontrol penerimaan dinamis dalam kluster Kubernetes. Kyverno menerima panggilan balik HTTP webhook penerimaan validasi dan mutasi dari server API Kubernetes dan menerapkan kebijakan yang cocok untuk mengembalikan hasil yang memberlakukan kebijakan penerimaan atau menolak permintaan. Untuk referensi pemecahan masalah (seperti panggilan webhook APIServer yang gagal), lihat dokumentasi pemecahan masalah Kyverno.
Atau, pengontrol penerimaan yang tidak berfungsi dengan baik dapat memengaruhi berbagai komponen, seperti jala layanan. Jala layanan, seperti Istio dan Linkerd, menggunakan pengontrol penerimaan untuk mengotomatiskan injeksi kontainer sidecar di dalam pod, di antara fungsionalitas lainnya. Penting untuk mengevaluasi dan memverifikasi bahwa pengontrol penerimaan berfungsi dengan baik untuk memastikan pengoperasian jala layanan yang lancar.
Periksa status add-on Azure Policy untuk kluster AKS
Jika Anda menginstal add-on Azure Policy untuk AKS, Anda dapat menggunakan perintah kubectl berikut untuk memvalidasi penginstalan dan fungsionalitas pengontrol penerimaan Azure Policy di kluster Anda:
# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system
# Sample output
...
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-65844778cb-rkflg 1/1 Running 0 163m
gatekeeper-controller-78797d4687-4pf6w 1/1 Running 0 163m
gatekeeper-controller-78797d4687-splzh 1/1 Running 0 163m
...
Jalankan perintah sebelumnya untuk memverifikasi ketersediaan pod agen Azure Policy di namespace layanan gatekeeper-system . Jika output tidak seperti yang Anda harapkan, output mungkin menunjukkan masalah dengan pengontrol penerimaan, layanan API, atau definisi sumber daya kustom (CRD).
# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources
# Sample output
...
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
...
Perintah sebelumnya membantu Anda memverifikasi bahwa semua sumber daya API berfungsi dengan benar. Pastikan bahwa output menyertakan sumber daya yang diharapkan tanpa kesalahan atau komponen yang hilang. kubectl get pod
Gunakan perintah dan kubectl api-resources
untuk memeriksa status add-on Azure Policy untuk AKS, dan validasi fungsionalitas pengontrol penerimaan di kluster Kubernetes Anda. Pantau pengontrol penerimaan secara teratur untuk memastikan bahwa pengontrol tersebut berfungsi dengan baik sehingga Anda dapat menjaga kesehatan dan stabilitas kluster Anda secara keseluruhan.
Gunakan perintah berikut kubectl get
untuk mengonfirmasi bahwa penetapan kebijakan diterapkan ke kluster Anda:
kubectl get constrainttemplates
Catatan
Penetapan kebijakan dapat memakan waktu hingga 20 menit untuk disinkronkan dengan setiap kluster.
Output Anda harus mirip dengan contoh berikut:
NAME AGE
k8sazureallowedcapabilities 23m
k8sazureallowedusersgroups 23m
k8sazureblockhostnamespace 23m
k8sazurecontainerallowedimages 23m
k8sazurecontainerallowedports 23m
k8sazurecontainerlimits 23m
k8sazurecontainernoprivilege 23m
k8sazurecontainernoprivilegeescalation 23m
k8sazureenforceapparmor 23m
k8sazurehostfilesystem 23m
k8sazurehostnetworkingports 23m
k8sazurereadonlyrootfilesystem 23m
k8sazureserviceallowedports 23m
Untuk informasi selengkapnya, lihat sumber daya berikut:
Memvalidasi webhook
Untuk memastikan bahwa memvalidasi dan bermutasi webhook berfungsi seperti yang diharapkan di kluster Kubernetes Anda, ikuti langkah-langkah berikut.
Jalankan perintah berikut untuk mencantumkan webhook yang memvalidasi di kluster:
kubectl get ValidatingWebhookConfiguration -o wide
Output Anda harus mirip dengan contoh berikut:
NAME WEBHOOKS AGE aks-node-validating-webhook 1 249d azure-policy-validating-webhook-configuration 1 249d gatekeeper-validating-webhook-configuration 1 249d
Tinjau output untuk memverifikasi bahwa webhook yang memvalidasi ada dan konfigurasinya seperti yang diharapkan. Output mencakup nama setiap webhook validasi, jumlah webhook, dan usia setiap webhook.
Jalankan perintah berikut untuk mencantumkan webhook yang bermutasi di kluster:
kubectl get MutatingWebhookConfiguration -o wide
Output Anda harus mirip dengan contoh berikut:
NAME WEBHOOKS AGE aks-node-mutating-webhook 1 249d azure-policy-mutating-webhook-configuration 1 249d gatekeeper-mutating-webhook-configuration 1 249d
Periksa output untuk memastikan bahwa webhook yang bermutasi tercantum dengan benar dan konfigurasinya sesuai keinginan. Output mencakup nama setiap webhook yang bermutasi, jumlah webhook, dan usia setiap webhook.
Jalankan perintah berikut untuk mengambil detail tertentu untuk pengontrol penerimaan tertentu:
kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
Ganti
<mutating-webhook-name>
dengan nama webhook bermutasi yang ingin Anda ambil detailnya. Output perintah ini menampilkan representasi YAML dari konfigurasi webhook bermutasi yang ditentukan.
Jalankan perintah di bagian ini, dan tinjau output sehingga Anda dapat mengonfirmasi bahwa webhook yang memvalidasi dan bermutasi di kluster Kubernetes ada dan dikonfigurasi seperti yang diharapkan. Validasi ini penting untuk memastikan berfungsi dengan baik. Penting juga untuk memastikan bahwa webhook mematuhi kebijakan untuk memvalidasi dan memodifikasi sumber daya dalam kluster.
Kontributor
Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.
Penulis utama:
- Paolo Salvatori | Insinyur Pelanggan Utama
Kontributor lain:
- Francis Simy Nazareth | Spesialis Teknis Senior
Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.
Sumber daya terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk