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, , watchatau 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 (misalnya. ApiServer gagal panggilan webhook), 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.

  1. 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.

  2. 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.

  3. 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:

Kontributor lain:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.