Kyverno adalah mesin kebijakan native Kubernetes yang memungkinkan Anda mengelola kebijakan keamanan, kepatuhan, dan otomatisasi melalui pendekatan Policy-as-Code. Sebagai alternatif dari Open Policy Agent (OPA) Gatekeeper—mesin kebijakan default di ACK—Kyverno memungkinkan definisi kebijakan menggunakan YAML standar, sehingga tidak perlu mempelajari bahasa khusus seperti Rego. Kyverno juga mendukung operasi mutating dan generating resource selama proses admission control, menjadikannya ideal untuk skenario yang memerlukan kebijakan sangat kustom, otomatisasi O&M, atau tata kelola kebijakan multi-kluster.
Cara kerja
Kyverno berjalan sebagai dynamic admission controller di kluster Kubernetes. Kyverno mencegat permintaan admission webhook dari API server, melakukan validasi atau mutasi, lalu mengembalikan keputusan untuk mengizinkan atau menolak permintaan tersebut.
Gambar berikut menunjukkan bagaimana Kyverno menggunakan admission webhook untuk memvalidasi kebijakan dan memutasi resource selama fase admission API server.
Kasus penggunaan
Fitur Security Policy Management default ACK dibangun di atas OPA Gatekeeper. Fitur ini dilengkapi dengan container security policy policy library bawaan untuk kasus penggunaan kepatuhan dan O&M umum, memenuhi kebutuhan audit dan penegakan umum. Fitur ini juga mendukung penerapan beberapa instance kebijakan dan terintegrasi dengan Simple Log Service (SLS) untuk observabilitas yang lebih baik.
Kyverno adalah mesin kebijakan native Kubernetes yang menggunakan CustomResourceDefinitions (CRDs) standar untuk mendefinisikan dan mengelola kebijakan, memberikan pengalaman yang sederhana dan ramah pengguna. Keunggulan utamanya meliputi:
Kebijakan berbasis YAML: Kebijakan ditulis dalam YAML standar, konsisten dengan manifes Kubernetes lainnya. Hal ini menurunkan kurva pembelajaran karena tidak perlu mempelajari bahasa khusus seperti Rego.
Fitur lengkap: Kyverno secara native mendukung operasi
validate,mutate, dangenerate. Ini mencakup cakupan yang lebih luas untuk otomatisasi dan kasus penggunaan Policy-as-Code.Pemindaian resource yang ada: Selain menegakkan kebijakan saat admission, Kyverno juga dapat memindai, melaporkan, memutasi, dan menghasilkan konfigurasi untuk resource yang sudah ada di kluster.
Generasi resource otomatis: Kebijakan dapat secara otomatis membuat resource terkait seperti
NetworkPoliciesatauConfigMaps, memungkinkan konfigurasi otomatis.
Meskipun Kubernetes kini menyediakan ValidatingAdmissionPolicy dan MutatingAdmissionPolicy native, Kyverno menyediakan kemampuan tata kelola kebijakan yang lebih komprehensif dan tingkat enterprise.
Kasus penggunaan yang direkomendasikan:
Kebijakan kustom: Tulis dan terapkan kebijakan dengan cepat untuk CRD Anda.
Kebijakan mutating dan generating: Saat Anda perlu menggunakan kebijakan
mutateataugenerate.Kyverno memiliki mekanisme caching, integrasi data eksternal, dan pelaporan yang komprehensif. Pustaka sintaks Common Expression Language (CEL) yang diperluasnya dapat memenuhi kebutuhan Policy-as-Code tingkat lanjut untuk skenario enterprise tertentu.
Tata kelola kebijakan multi-kluster: Gunakan CLI Kyverno, API, atau integrasi dengan alat GitOps seperti ArgoCD untuk mencapai distribusi dan manajemen kebijakan terpadu di beberapa kluster.
Prasyarat
Anda memiliki Kluster ACK yang dikelola atau Cluster khusus ACK yang menjalankan Kubernetes versi 1.30 atau lebih baru. Tingkatkan kluster Anda jika diperlukan.
Kyverno mengikuti N-2 Version Skew Policy komunitas Kubernetes, yang secara resmi mendukung rilis saat ini dan dua rilis minor sebelumnya. Versi yang lebih lama dari N-2 belum diuji secara menyeluruh dan tidak dijamin kompatibel. Untuk rincian lengkap, lihat matriks kompatibilitas Kyverno resmi.
Instal Kyverno
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Klik Deploy, lalu ikuti petunjuk di layar untuk mencari dan memilih kyverno. Pilih versi chart terbaru, konfigurasikan parameter sesuai kebutuhan (lihat Custom parameters), lalu selesaikan instalasi.
Jenis kebijakan
Kyverno versi 1.15 memperkenalkan beberapa jenis kebijakan baru. Untuk detailnya, lihat Policy types.
Jenis kebijakan | Deskripsi |
| Jenis kebijakan serbaguna yang mendukung aturan |
| Memvalidasi resource Kubernetes atau templat workload. Ini memperluas kemampuan |
| Memodifikasi resource Kubernetes atau templat workload. Ini memperluas kemampuan |
| Menghasilkan dan menyinkronkan resource Kubernetes tertentu berdasarkan ekspresi CEL. |
| Membersihkan resource tertentu di tingkat kluster atau namespace. |
| Memverifikasi signature dan attestation citra. Mendukung pemeriksaan signature |
Terapkan di produksi
Konfigurasikan kebijakan kegagalan
failurePolicymenentukan bagaimana API server berperilaku ketika panggilan webhook ke Kyverno gagal. Konfigurasikan kebijakan ini berdasarkan kebutuhan keamanan dan O&M spesifik Anda. Untuk detail konfigurasi, lihat Security vs. Operability.Fail-open: Mengizinkan permintaan API dilanjutkan meskipun webhook gagal. Ini menjaga ketersediaan kluster tetapi dapat menimbulkan risiko keamanan.Fail-closed: Memblokir permintaan API jika webhook gagal. Ini menjamin keamanan tetapi dapat mengganggu operasi kluster.
Konfigurasikan ketersediaan tinggi dan observabilitas
Penerapan ketersediaan tinggi: Jalankan Kyverno dengan beberapa replika. Gunakan kombinasi pod anti-affinity dan topology spread constraints untuk mendistribusikan replika di berbagai node atau zona ketersediaan.
Perencanaan resource: Tetapkan
requestsdanlimitsresource yang jelas untuk Pod Kyverno guna memastikan kinerja yang dapat diprediksi.Pemantauan dan peringatan: Aktifkan pemantauan dengan Managed Service for Prometheus untuk melacak metrik utama, seperti status Pod, pemanfaatan resource, latensi webhook, dan laju error. Kemudian, konfigurasikan peringatan untuk metrik tersebut agar segera diberitahu tentang potensi masalah.
Untuk rekomendasi ketersediaan tinggi lainnya, lihat High availability.