Baca dalam bahasa Inggris

Bagikan melalui


Gunakan perlindungan penyebaran untuk menerapkan praktik terbaik di Azure Kubernetes Service (AKS) (Pratinjau)

Artikel ini menunjukkan cara menggunakan perlindungan penyebaran untuk memberlakukan praktik terbaik pada kluster Azure Kubernetes Service (AKS).

Gambaran Umum

Sepanjang siklus hidup pengembangan, umum bagi bug, masalah, dan masalah lain untuk muncul jika penyebaran awal sumber daya Kubernetes Anda termasuk kesalahan konfigurasi. Untuk meringankan beban pengembangan Kubernetes, Azure Kubernetes Service (AKS) menawarkan perlindungan penyebaran (pratinjau). Perlindungan penyebaran memberlakukan praktik terbaik Kubernetes di kluster AKS Anda melalui kontrol Azure Policy.

Perlindungan penyebaran menawarkan dua tingkat konfigurasi:

  • Warning: Menampilkan pesan peringatan di terminal kode untuk memberi tahu Anda tentang konfigurasi kluster yang tidak patuh tetapi masih memungkinkan permintaan untuk dilalui.
  • Enforcement: Memberlakukan konfigurasi yang sesuai dengan menolak dan memutasi penyebaran jika tidak mengikuti praktik terbaik.

Setelah Anda mengonfigurasi perlindungan penyebaran untuk 'Peringatan' atau 'Penegakan', Perlindungan penyebaran secara terprogram menilai kluster Anda pada waktu pembuatan atau pembaruan untuk kepatuhan. Perlindungan penyebaran juga menampilkan informasi kepatuhan agregat di seluruh beban kerja Anda pada tingkat per sumber daya melalui dasbor kepatuhan Azure Policy di portal Azure atau di CLI atau terminal Anda. Menjalankan beban kerja yang tidak patuh menunjukkan bahwa kluster Anda tidak mengikuti praktik terbaik dan beban kerja pada kluster Anda berisiko mengalami masalah yang disebabkan oleh konfigurasi kluster Anda.

Penting

Fitur pratinjau AKS tersedia berdasarkan layanan mandiri. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau AKS sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

Prasyarat

  • Anda perlu mengaktifkan add-on Azure Policy untuk AKS. Untuk informasi selengkapnya, lihat Mengaktifkan Azure Policy pada kluster AKS Anda.

  • Untuk mengonfigurasi perlindungan penyebaran, Anda harus memiliki versi 2.0.0b1 atau ekstensi yang lebih baru aks-preview . Untuk menginstal ekstensi, lihat Menginstal ekstensi CLI aks-preview. Sebaiknya perbarui Azure CLI untuk memastikan Anda memiliki versi terbaru yang terinstal.

  • Untuk membuat dan memodifikasi konfigurasi untuk perlindungan penyebaran, Anda memerlukan langganan dengan izin berikut pada kluster AKS Anda:

    • Microsoft.Authorization/policyAssignments/write
    • Microsoft.Authorization/policyAssignments/read
  • Anda perlu mendaftarkan bendera fitur perlindungan penyebaran. Untuk mendaftarkan bendera fitur, lihat Mendaftarkan bendera fitur untuk perlindungan penyebaran.

Menginstal ekstensi CLI aks-preview

  1. aks-preview Instal ekstensi CLI menggunakan az extension add perintah .

    az extension add --name aks-preview
    
  2. Perbarui ekstensi untuk memastikan Anda memiliki versi terbaru yang terinstal menggunakan az extension update perintah .

    az extension update --name aks-preview
    

Mendaftarkan bendera fitur perlindungan penyebaran

  1. Daftarkan SafeguardsPreview bendera fitur menggunakan az feature register perintah .

    az feature register --namespace Microsoft.ContainerService --name SafeguardsPreview
    

    Dibutuhkan beberapa menit agar status menampilkan Terdaftar.

  2. Verifikasi status pendaftaran menggunakan az feature show perintah .

    az feature show --namespace Microsoft.ContainerService --name SafeguardsPreview
    
  3. Saat status mencerminkan Terdaftar, refresh pendaftaran penyedia sumber daya Microsoft.ContainerService menggunakan az provider register perintah .

    az provider register --namespace Microsoft.ContainerService
    

Kebijakan perlindungan penyebaran

Catatan

Kebijakan ReadOnlyRootFilesystem dan RootfilesystemInitContainers saat ini hanya tersedia di Linux.

Tabel berikut mencantumkan kebijakan yang menjadi aktif dan sumber daya Kubernetes yang mereka targetkan saat Anda mengaktifkan perlindungan penyebaran. Anda dapat melihat perlindungan penyebaran yang saat ini tersedia di portal Azure sebagai definisi Azure Policy atau di definisi bawaan Azure Policy untuk Azure Kubernetes Service. Niat di balik koleksi ini adalah untuk membuat daftar umum dan umum praktik terbaik yang berlaku untuk sebagian besar pengguna dan kasus penggunaan.

Kebijakan perlindungan penyebaran Sumber daya Kubernetes yang ditargetkan Hasil mutasi jika tersedia
[Pratinjau]: Tidak dapat mengedit simpul individual Simpul T/A
Batas CPU kontainer kluster Kubernetes dan sumber daya memori tidak boleh melebihi batas yang ditentukan Pod Mengatur batas sumber daya CPU ke 500m jika tidak diatur dan mengatur batas memori ke 500Mi jika tidak ada jalur
[Pratinjau]: Harus Memiliki Seperangkat Aturan Anti Afinitas Penyebaran, StatefulSet, ReplicationController, ReplicaSet T/A
[Pratinjau]: Tidak Ada Label Spesifik AKS Penyebaran, StatefulSet, Replicaset T/A
Kontainer kluster Kube hanya boleh menggunakan gambar yang diizinkan Pod T/A
[Pratinjau]: Taint Kumpulan Sistem Terpesan Simpul CriticalAddonsOnly Menghapus taint dari kumpulan simpul pengguna jika tidak diatur. AKS menggunakan CriticalAddonsOnly taint untuk menjauhkan pod pelanggan dari kumpulan sistem. Konfigurasi ini memastikan pemisahan yang jelas antara komponen AKS dan pod pelanggan dan mencegah pengeluaran pod pelanggan yang tidak mentolerir CriticalAddonsOnly taint.
Pastikan kontainer kluster memiliki probe kesiapan atau keaktifan yang dikonfigurasi Pod T/A
Kluster Kubernetes harus menggunakan StorageClass driver Container Storage Interface (CSI) StorageClass T/A
[Pratinjau]: Kontainer kluster Kube hanya boleh menarik gambar ketika rahasia penarikan gambar ada Pod T/A
[Pratinjau]: Kluster Kubernetes harus menerapkan Anggaran Gangguan Pod yang akurat Penyebaran, ReplicaSet, StatefulSet maxUnavailable Mengatur dalam sumber daya PodDisruptionBudget ke 1.
[Pratinjau]: Layanan kluster Kube harus menggunakan pemilih unik Layanan T/A
[Pratinjau]: ReadOnlyRootFilesystem dalam spesifikasi Pod diatur ke true Pod readOnlyRootFilesystem Mengatur dalam spesifikasi Pod ke true jika tidak diatur. Konfigurasi ini mencegah kontainer menulis ke sistem file akar.
[Pratinjau]: RootfilesystemInitContainers dalam spesifikasi Pod diatur ke true Pod rootFilesystemInitContainers Mengatur dalam spesifikasi Pod ke true jika tidak diatur.
[Pratinjau]: Gambar kontainer kluster Kube tidak boleh menyertakan tag gambar terbaru Penyebaran, StatefulSet, ReplicationController, ReplicaSet T/A
[Pratinjau]: Gambar kontainer kluster Kube harus menyertakan hook preStop Penyebaran, StatefulSet, ReplicationController, ReplicaSet T/A

Jika Anda ingin mengirimkan ide atau permintaan perlindungan penyebaran, buka masalah di repositori GitHub AKS dan tambahkan [deployment safeguards request] ke awal judul.

Mengaktifkan perlindungan penyebaran

Catatan

Jika Anda mengaktifkan Azure Policy untuk pertama kalinya menggunakan perlindungan penyebaran, Anda mungkin perlu menunggu hingga 20 menit agar Azure Policy berlaku.

Menggunakan tingkat perlindungan Enforcement penyebaran berarti Anda memilih untuk penyebaran yang diblokir dan dimutasi. Harap pertimbangkan bagaimana kebijakan ini dapat bekerja dengan kluster AKS Anda sebelum mengaktifkan Enforcement.

Mengaktifkan perlindungan penyebaran pada kluster baru

Aktifkan perlindungan penyebaran pada kluster baru menggunakan az aks create perintah dengan --safeguards-level bendera dan --safeguards-version .

Jika Anda ingin menerima peringatan ketidakpatuh, atur ke --safeguards-level Warning. Jika Anda ingin menolak atau membisukan semua penyebaran yang tidak patuh, atur ke Enforcement. Untuk menerima peringatan, atur ke --safeguards-level "Peringatan". Untuk menolak atau memutasi semua penyebaran yang tidak mematuhi perlindungan penyebaran, atur --safeguards-level ke "Penegakan". Untuk mengatur versi perlindungan penyebaran, gunakan --safeguards-version bendera . Saat ini, V2.0.0 adalah versi terbaru dari perlindungan penyebaran.

az aks create \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --enable-addons azure-policy \
    --safeguards-level Warning \
    --safeguards-version v2.0.0 \
    --generate-ssh-keys

Mengaktifkan perlindungan penyebaran pada kluster yang ada

Aktifkan perlindungan penyebaran pada kluster yang ada yang mengaktifkan add-on Azure Policy menggunakan az aks update perintah dengan --safeguards-level bendera dan --safeguards-version . Jika Anda ingin menerima peringatan ketidakpatuh, atur ke --safeguards-level Warning. Jika Anda ingin menolak atau membisukan semua penyebaran yang tidak patuh, atur ke Enforcement.

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement --safeguards-version v2.0.0

Jika Anda ingin memperbarui tingkat perlindungan penyebaran dari kluster yang ada, gunakan az aks update perintah dengan bendera yang --safeguards-level diatur ke Warning atau Enforcement.

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement

Mengecualikan namespace

Anda juga dapat mengecualikan namespace tertentu dari perlindungan penyebaran. Saat Anda mengecualikan namespace layanan, aktivitas di namespace layanan tersebut tidak terpengaruh oleh penyebaran akan melindungi peringatan atau penerapan.

Misalnya, untuk mengecualikan namespace ns1 layanan dan ns2, gunakan daftar namespace yang dipisahkan koma dengan --safeguards-excluded-ns bendera, seperti yang ditunjukkan dalam contoh berikut:

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Warning --safeguards-version v2.0.0 --safeguards-excluded-ns ns1,ns2 

Memperbarui versi perlindungan penyebaran Anda

Catatan

v2.0.0 adalah versi terbaru perlindungan penyebaran.

Perbarui versi perlindungan penyebaran Anda menggunakan az aks update perintah dengan bendera yang --safeguards-version diatur ke versi baru. Contoh berikut memperbarui kluster yang ada untuk menggunakan versi 2.0.0:

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-version v2.0.0

Memverifikasi kepatuhan di seluruh kluster

Setelah menyebarkan manifes Kubernetes, Anda akan melihat peringatan atau pesan penolakan potensial di CLI atau terminal jika kluster tidak sesuai dengan perlindungan penyebaran, seperti yang ditunjukkan dalam contoh berikut:

Peringatan

$ kubectl apply -f pod.yml
Warning: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <livenessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
Warning: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <readinessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
Warning: [azurepolicy-k8sazurev1restrictedlabels-67c4210cc58f28acdfdb] Label <{"kubernetes.azure.com"}> is reserved for AKS use only
Warning: [azurepolicy-k8sazurev3containerlimits-a8754961dbd4c1d8b49d] container <my-container> has no resource limits
Warning: [azurepolicy-k8sazurev1containerrestrictedi-bde07e1776cbcc9aa8b8] my-pod in default does not have imagePullSecrets. Unauthenticated image pulls are not recommended.
pod/my-pod created

Penegakan

Dengan mutasi perlindungan penyebaran, tingkat tersebut Enforcement akan memutasi sumber daya Kubernetes Anda jika berlaku. Namun, sumber daya Kubernetes Anda masih perlu melewati semua perlindungan agar berhasil disebarkan. Jika ada kebijakan perlindungan yang gagal, sumber daya Anda ditolak dan tidak akan disebarkan.

$ kubectl apply -f pod.yml
Error from server (Forbidden): error when creating ".\pod.yml": admission webhook "validation.gatekeeper.sh" denied the request: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <livenessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
[azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <readinessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
[azurepolicy-k8sazurev2containerallowedimag-1ff6d14b2f8da22019d7] Container image my-image for container my-container has not been allowed.
[azurepolicy-k8sazurev1restrictedlabels-67c4210cc58f28acdfdb] Label <{"kubernetes.azure.com"}> is reserved for AKS use only
[azurepolicy-k8sazurev1containerrestrictedi-bde07e1776cbcc9aa8b8] my-pod in default does not have imagePullSecrets. Unauthenticated image pulls are not recommended.

Jika sumber daya Kubernetes Anda mematuhi perlindungan mutasi yang berlaku dan memenuhi semua persyaratan perlindungan lainnya, sumber daya tersebut akan berhasil disebarkan, seperti yang ditunjukkan pada contoh berikut:

$ kubectl apply -f pod.yml
pod/my-pod created

Memverifikasi kepatuhan di seluruh kluster menggunakan dasbor Azure Policy

Untuk memverifikasi bahwa perlindungan penyebaran telah diterapkan dan untuk memeriksa kepatuhan kluster Anda, navigasikan ke halaman portal Azure untuk kluster Anda dan pilih Kebijakan, lalu pilih buka Azure Policy.

Dari daftar kebijakan dan inisiatif, pilih inisiatif yang terkait dengan perlindungan penyebaran. Anda melihat dasbor yang menunjukkan status kepatuhan di seluruh kluster AKS Anda.

Catatan

Untuk menilai kepatuhan dengan benar di seluruh kluster AKS Anda, inisiatif Azure Policy harus dilingkupkan ke grup sumber daya kluster Anda.

Menonaktifkan perlindungan penyebaran

Nonaktifkan perlindungan penyebaran pada kluster Anda menggunakan az aks update perintah dan atur ke --safeguards-level Off.

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Off

--

FAQ

Saya mengaktifkan perlindungan penyebaran dengan Azure Policy untuk pertama kalinya. Mengapa saya tidak melihat peringatan? Mengapa pod saya tidak ditolak?

Azure Policy dapat memakan waktu hingga 35 menit untuk disinkronkan dengan kluster Anda setelah diaktifkan untuk pertama kalinya.

Aku baru saja beralih dari Peringatan ke Penegakan. Apakah ini akan segera berlaku?

Saat mengalihkan tingkat perlindungan penyebaran, Anda mungkin perlu menunggu hingga 15 menit agar tingkat baru berlaku.

Dapatkah saya membuat mutasi saya sendiri?

Tidak. Jika Anda memiliki ide untuk perlindungan, buka masalah di repositori GitHub AKS dan tambahkan [deployment safeguards request] ke awal judul.

Dapatkah saya memilih dan memilih mutasi mana yang saya inginkan di Penegakan?

Tidak. Perlindungan penyebaran adalah semua atau tidak sama sekali. Setelah Anda mengaktifkan Peringatan atau Penegakan, semua perlindungan akan aktif.

Mengapa sumber daya penyebaran saya diterima meskipun tidak mengikuti praktik terbaik?

Perlindungan penyebaran memberlakukan standar praktik terbaik melalui kontrol Azure Policy dan memiliki kebijakan yang memvalidasi terhadap sumber daya Kubernetes. Untuk mengevaluasi dan menerapkan komponen kluster, Azure Policy memperluas Gatekeeper. Penegakan Gatekeeper juga saat ini beroperasi dalam modelfail-open. Karena tidak ada jaminan bahwa Gatekeeper akan merespons panggilan jaringan kami, kami memastikan bahwa dalam hal ini, validasi dilewati sehingga penolakan tidak memblokir penyebaran Anda.

Untuk mempelajari selengkapnya, lihat validasi beban kerja di Gatekeeper.

Langkah berikutnya

  • Pelajari selengkapnya tentang praktik terbaik untuk mengoperasikan kluster AKS.