Mengonfigurasi kebijakan kuota sumber daya AKS dengan menggunakan Azure Policy untuk Kubernetes

Selesai

Azure Policy membantu Anda menerapkan standar dan menilai kepatuhan dalam skala besar untuk lingkungan cloud Anda. Praktik yang baik bagi perusahaan untuk menerapkan aturan bisnis untuk menentukan bagaimana karyawan diizinkan untuk menggunakan perangkat lunak perusahaan, perangkat keras, dan sumber daya lain dalam organisasi. Oleh karena itu, bisnis menggunakan kebijakan untuk menegakkan, meninjau, dan menentukan akses. Kebijakan membantu organisasi memenuhi persyaratan tata kelola dan hukum, menerapkan praktik terbaik, dan menetapkan konvensi organisasi.

Azure Kubernetes Service (AKS) memungkinkan Anda mengatur aplikasi cloud-native secara efisien dengan kebijakan. Anda menyadari bahwa Anda perlu menerapkan aturan bisnis untuk mengelola bagaimana tim menggunakan AKS untuk memastikan pendekatan hemat biaya. Anda memutuskan untuk menggunakan Azure Policy untuk menerapkan ide ini pada sumber daya cloud berbasis Azure Anda.

Sebelum membahas cara menggunakan Azure Policy untuk Kubernetes, Anda harus memahami beberapa konsep lagi yang mengaktifkan fitur ini dari dalam Kubernetes.

Apa yang dimaksud dengan pengontrol penerimaan Kubernetes?

Pengontrol penerimaan adalah plug-in Kubernetes yang mencegat permintaan yang diautentikasi dan diotorisasi ke API Kubernetes sebelum persistensi objek Kubernetes yang diminta. Misalnya, Anda menyebarkan beban kerja baru dan penyebaran tersebut menyertakan permintaan pod dengan persyaratan memori tertentu. Pengontrol penerimaan mencegat permintaan penyebaran dan harus mengotorisasi penyebaran tersebut sebelum dilanjutkan ke kluster.

Anda dapat menganggap pengontrol penerimaan sebagai perangkat lunak yang mengatur dan memberlakukan bagaimana kluster digunakan dan dirancang. Ini membatasi permintaan untuk membuat, menghapus, dan mengubah objek Kubernetes.

Apa yang dimaksud dengan pengontrol penerimaan webhook?

Pengontrol penerimaan webhook adalah fungsi panggilan balik HTTP yang menerima permintaan penerimaan dan kemudian bertindak berdasarkan permintaan ini. Pengontrol penerimaan perlu dikonfigurasi saat runtime. Pengontrol ini ada baik untuk plug-in penerimaan yang dikompilasi atau ekstensi yang disebarkan yang berjalan sebagai webhook.

Webhook penerimaan tersedia dalam dua jenis: webhook yang memvalidasi atau webhook yang bermutasi. Webhook yang bermutasi dipanggil terlebih dahulu dan dapat mengubah serta menerapkan default pada objek yang dikirim ke server API. Webhook validasi memvalidasi nilai objek dan dapat menolak permintaan.

Apa yang dimaksud dengan Open Policy Agent (OPA)?

Open Policy Agent (OPA) adalah mesin kebijakan sumber terbuka untuk tujuan umum yang memberi Anda bahasa deklaratif tingkat tinggi untuk kebijakan pembuat. Kebijakan ini memungkinkan Anda menentukan aturan yang mengawasi perilaku sistem Anda.

Apa yang dimaksud dengan OPA Gatekeeper?

OPA Gatekeeper adalah webhook pengontrol penerimaan Kubernetes sumber terbuka, memvalidasi, yang memberlakukan kebijakan berbasis Definisi Sumber Daya Kustom (CRD) yang mengikuti sintaks OPA.

Tujuan dari OPA Gatekeeper adalah untuk memungkinkan Anda menyesuaikan kebijakan penerimaan dengan menggunakan konfigurasi alih-alih aturan kebijakan yang dikodekan secara permanen untuk layanan. Ini juga memberi Anda gambaran lengkap tentang kluster Anda untuk mengidentifikasi sumber daya yang melanggar kebijakan.

Gunakan OPA Gatekeeper untuk menentukan kebijakan di seluruh organisasi dengan aturan:

  • Batas sumber daya maksimum, seperti CPU dan batas memori, diberlakukan untuk semua pod yang dikonfigurasi.

  • Penyebaran gambar hanya diperbolehkan dari repositori yang disetujui.

  • Konvensi penamaan untuk label untuk semua namespace dalam kluster harus menentukan titik kontak untuk setiap namespace layanan.

  • Mandat bahwa layanan kluster memiliki pemilih yang unik secara global.

Azure Policy untuk AKS

Azure Policy memperluas OPA Gatekeeper versi 3 dan terintegrasi dengan AKS melalui kebijakan bawaan. Kebijakan ini menerapkan penegakan dan perlindungan dalam skala besar di kluster Anda secara terpusat dan konsisten.

Tim pengembangan perusahaan Anda ingin mengoptimalkan pengembangan dan memperkenalkan alat pengembangan seperti DevSpaces untuk menyederhanakan alur kerja pengembangan Kubernetes mereka. Anda ingin memastikan bahwa anggota tim mematuhi batas sumber daya tertentu untuk proyek mereka. Anda memutuskan untuk menerapkan kebijakan yang menentukan sumber daya komputasi, sumber daya penyimpanan, dan jumlah objek yang diizinkan dalam namespace pengembangan.

Untuk menyiapkan batas sumber daya, Anda dapat menerapkan kuota sumber daya di tingkat namespace dan memantau penggunaan sumber daya untuk menyesuaikan kuota kebijakan. Gunakan strategi ini untuk mencadangkan dan membatasi sumber daya di seluruh tim pengembangan.

Cara mengaktifkan Add-on Azure Policy untuk AKS

Ada beberapa langkah untuk mendaftarkan Add-on Azure Policy untuk fitur AKS. Kami akan memberikan contoh di sini, tetapi Anda benar-benar akan menyelesaikan langkah-langkah di unit berikutnya.

  1. Daftarkan dua penyedia sumber dengan menggunakan perintah az provider register:

    • Microsoft.ContainerService dan Microsoft.PolicyInsights: Penyedia sumber daya ini mendukung tindakan seperti mengkueri informasi tentang peristiwa kebijakan dan mengelola kontainer. Ini adalah tindakan untuk mengkueri, membuat, memperbarui, atau menghapus remediasi kebijakan.

    Berikut adalah contoh dari dua perintah pendaftaran:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Daftarkan fitur AKS-AzurePolicyAutoApprove dengan penyedia sumber Microsoft. ContainerService. Berikut contoh perintahnya:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. Setelah Anda mengonfirmasi pendaftaran fitur yang berhasil, jalankan az provider register perintah dengan --namespace parameter untuk menyebarluaskan pendaftaran fitur baru. Berikut contoh perintahnya:

    az provider register -n Microsoft.ContainerService
    
  4. Aktifkan add-on azure-policy:

    az aks enable-addons \
        --addons azure-policy \
        --name myAKSCluster \
        --resource-group myResourceGroup
    

    Mengaktifkan addon menjadwalkan beban kerja di dua namespace pada kluster Anda. Namespace pertama adalah kube-system, yang berisi azure-policy dan azure-policy-webhook. Namespace kedua adalah gatekeeper-system, yang berisi gatekeeper-controller-manager. Beban kerja ini bertanggung jawab untuk mengevaluasi permintaan yang dikirimkan ke sarana kontrol AKS. Berdasarkan kebijakan yang dikonfigurasi, webhook kebijakan Anda dapat mengizinkan atau menolak permintaan.

Menetapkan definisi kebijakan bawaan

Anda mengelola kebijakan lingkungan Azure Anda dengan menggunakan dasbor kepatuhan kebijakan Azure. Dasbor memungkinkan Anda menelusuri paling detail per sumber daya per sumber daya per kebijakan. Ini membantu untuk mewujudkan kepatuhan sumber daya dengan menggunakan remediasi massal untuk sumber daya yang ada dan remediasi otomatis untuk sumber daya baru.

Untuk setiap kebijakan, informasi gambaran umum berikut dicantumkan:

Item Deskripsi Contoh
Nama Nama kebijakan. [Pratinjau]: Pastikan batas CPU kontainer dan sumber daya memori tidak melebihi batas yang ditentukan dalam kluster Kubernetes.
Cakupan Grup sumber daya langganan yang menerapkan kebijakan ini. mySubscription/rg-akscostsaving.
Status kepatuhan Status kebijakan yang ditetapkan. Sesuai, Berkonflik, Tidak dimulai, atau Tidak Terdaftar.
Kepatuhan sumber daya Persentase sumber daya yang sesuai dengan kebijakan. Penghitungan ini memperhitungkan sumber daya yang sesuai, tidak sesuai, dan bertentangan. 100
Sumber daya yang tidak sesuai Jumlah sumber daya unik yang melanggar satu atau beberapa aturan kebijakan. 3
Kebijakan yang tidak sesuai Jumlah kebijakan yang tidak sesuai. 5

Dari sini, Anda dapat menelusuri detail per sumber daya dan per kebijakan untuk peristiwa yang dipicu. Misalnya, Anda dapat memeriksa detail penyebaran beban kerja yang ditolak.

Menetapkan kebijakan

Untuk menetapkan kebijakan, pilih opsi Penugasan di bawah bagian Penulisan di panel navigasi Azure Policy.

Anda menetapkan kebijakan Azure dengan salah satu dari dua cara: sebagai sekelompok kebijakan yang disebut inisiatif, atau sebagai kebijakan tunggal.

Penetapan inisiatif

Penetapan inisiatif adalah kumpulan definisi kebijakan Azure yang dikelompokkan bersama untuk memenuhi tujuan atau maksud tertentu. Misalnya, tujuannya mungkin untuk menerapkan Standar Keamanan Data Industri Kartu Pembayaran di seluruh sumber daya Anda.

Penetapan kebijakan

Penetapan kebijakan menetapkan satu kebijakan, seperti Jangan izinkan kontainer dengan hak istimewa di kluster Kubernetes.

Cara menetapkan kebijakan

Setiap kebijakan ditentukan dengan menggunakan serangkaian langkah konfigurasi. Jumlah informasi yang Anda ambil bergantung pada jenis kebijakan yang Anda pilih.

Misalnya, untuk membatasi penyebaran sumber daya oleh pengembang di lingkungan cloud perusahaan, Anda dapat menetapkan salah satu kebijakan Azure bawaan untuk Azure Kubernetes Service. Nama kebijakan adalah Pastikan batas CPU kontainer dan sumber daya memori tidak melebihi batas yang ditentukan di kluster Kubernetes.

Kebijakan ini mengharuskan Anda mengatur batas pada sumber daya yang diizinkan yang diminta oleh permintaan penyebaran.

Mari kita lihat opsi yang dapat dikonfigurasi saat Anda menetapkan kebijakan.

Informasi kebijakan dasar

Langkah pertama mengharuskan Anda untuk memilih dan memasukkan informasi dasar yang menentukan kebijakan baru. Misalnya, informasi ini dapat menjadi kebijakan dan cakupan sumber daya. Tabel ini memperlihatkan setiap item yang bisa Anda konfigurasi:

Item Deskripsi
Cakupan Cakupan menentukan sumber daya atau grup sumber daya apa yang diberlakukan penetapan kebijakan. Nilai ini didasarkan pada langganan atau grup manajemen. Anda dapat mengecualikan sumber daya dari pilihan Anda pada satu tingkat lebih rendah dari tingkat cakupan.
Definisi Kebijakan Kebijakan yang ingin Anda terapkan. Anda dapat memilih dari beberapa opsi kebijakan bawaan.
Nama penugasan Nama yang digunakan untuk mengidentifikasi kebijakan yang ditetapkan.
Keterangan Deskripsi teks bebas yang menjelaskan kebijakan tersebut.
Penerapan Azure Policy Anda dapat memilih Diaktifkan dan Dinonaktifkan. Jika opsinya adalah Dinonaktifkan, kebijakan tidak diterapkan dan permintaan tidak ditolak dengan ketidakpatuhan.
Ditetapkan oleh Nilai teks bebas yang default ke pengguna terdaftar. Anda dapat mengubah nilai ini.

Parameter Azure Policy

Kebijakan mengharuskan Anda mengonfigurasi aturan bisnis yang berlaku untuk setiap kebijakan tertentu. Tidak semua kebijakan memiliki aturan bisnis yang sama, itulah sebabnya setiap kebijakan memiliki parameter yang berbeda.

Misalnya, kebijakan Pastikan batas CPU kontainer dan sumber daya memori tidak melebihi batas yang ditentukan di kluster Kubernetes mengharuskan Anda mengatur tiga parameter:

  • Unit CPU maksimum yang diizinkan untuk kontainer
  • Byte memori maksimum yang diizinkan untuk kontainer
  • Daftar namespace Layanan Kube yang akan dikecualikan dari kebijakan

Bandingkan kebijakan tersebut dengan kebijakan Aplikasi Web yang seharusnya hanya dapat diakses melalui HTTPS, yang tidak memiliki parameter khusus untuk dikonfigurasi.

Semua kebijakan memiliki pengaturan Efek. Pengaturan ini mengaktifkan atau menonaktifkan eksekusi kebijakan. Seperti halnya parameter, kebijakan juga dapat memiliki opsi Efek yang berbeda.

Misalnya, untuk kebijakan manajemen sumber daya, Anda dapat memilih audit, tolak, atau nonaktifkan sebagai nilai Efek. Untuk kebijakan aplikasi web, Anda hanya dapat memilih audit atau nonaktifkan.

Tabel ini mencantumkan semua efek yang saat ini didukung dalam definisi kebijakan:

Efek Deskripsi
Tambah Menambahkan lebih banyak bidang ke sumber daya yang diminta
Audit Membuat peristiwa peringatan di log aktivitas
AuditIfNotExists Memungkinkan audit sumber daya yang terkait dengan sumber daya yang cocok dengan kondisi
Tolak Mencegah permintaan sumber daya yang tidak cocok dengan standar yang ditentukan melalui definisi kebijakan, dan gagal dalam permintaan
DeployIfNotExists Menjalankan penyebaran templat saat kondisi terpenuhi
Nonaktif Berguna untuk menguji situasi atau ketika definisi kebijakan telah membuat parameter efek, dan Anda ingin menonaktifkan satu penugasan
Ubah Menambahkan, memperbarui, atau menghapus tag pada sumber daya selama pembuatan atau pembaruan

Remediasi Azure Policy

Langkah terakhir adalah mempertimbangkan remediasi kebijakan. Saat Anda menetapkan kebijakan, ada kemungkinan sumber daya sudah ada dan melanggar kebijakan baru. Secara default, hanya sumber daya yang baru dibuat yang diterapkan ke kebijakan baru. Gunakan remediasi untuk memeriksa sumber daya yang ada setelah Anda menetapkan kebijakan baru. Tugas remediasi dapat berbeda tergantung pada jenis kebijakan yang diterapkan.

Pada latihan berikutnya, Anda menggunakan batas Pastikan CPU kontainer dan sumber daya memori tidak melebihi batas yang ditentukan dalam kebijakan kluster Kubernetes untuk menurunkan biaya lebih lanjut.