Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: ✔️ AKS Automatic ✔️ AKS Standard
Saat mengelola kluster di Azure Kubernetes Service (AKS), Anda sering kali perlu mengisolasi tim dan beban kerja. Dengan isolasi logis, Anda dapat menggunakan satu kluster AKS untuk beberapa beban kerja, tim, atau lingkungan. Namespace layanan Kubernetes membentuk batas isolasi logis untuk beban kerja dan sumber daya. Melakukan isolasi logis melibatkan penerapan skrip dan proses untuk membuat namespace, menetapkan batas sumber daya, menerapkan kebijakan jaringan, dan memberikan akses tim melalui kontrol akses berbasis peran. Pelajari cara menggunakan namespace terkelola di Azure Kubernetes Service (AKS) untuk menyederhanakan manajemen namespace, multi-penyewaan kluster, dan isolasi sumber daya.
Pemilahan kluster secara logis biasanya memberikan kepadatan pod yang lebih tinggi dibandingkan kluster yang terisolasi secara fisik, dengan kapasitas komputasi berlebih yang lebih sedikit terbuang tidak terpakai di dalam kluster. Ketika dikombinasikan dengan pengubah skala klaster atau Pengadaan Otomatis Node, Anda dapat menaikkan atau menurunkan jumlah simpul untuk memenuhi permintaan. Pendekatan praktik terbaik ini meminimalkan biaya dengan hanya menjalankan jumlah simpul yang diperlukan.
Kebijakan jaringan
Kebijakan Jaringan adalah sumber daya Kubernetes yang dapat Anda gunakan untuk mengontrol arus lalu lintas antara pod, namespace layanan, dan titik akhir eksternal. Kebijakan jaringan memungkinkan Anda menentukan aturan untuk lalu lintas masuk (masuk) dan keluar (keluar), memastikan bahwa hanya komunikasi resmi yang diizinkan. Dengan menerapkan kebijakan jaringan, Anda dapat meningkatkan keamanan dan isolasi beban kerja dalam kluster Anda.
Nota
Aturan kebijakan jaringan masuk default Izinkan namespace yang sama mengadopsi sikap aman secara default. Jika Anda memerlukan Layanan Kubernetes, ingress, atau gateway agar dapat diakses dari luar namespace tempat mereka disebarkan, misalnya dari pengontrol ingress yang disebarkan di namespace terpisah, Anda harus memilih Izinkan semua. Anda kemudian dapat menerapkan kebijakan jaringan Anda sendiri untuk membatasi akses masuk hanya dari namespace tersebut.
Namespace terkelola dilengkapi dengan serangkaian kebijakan bawaan.
- Izinkan semua: Mengizinkan semua lalu lintas jaringan.
- Izinkan namespace yang sama: Mengizinkan semua lalu lintas jaringan dalam namespace yang sama.
- Tolak semua: Menolak semua lalu lintas jaringan.
Anda dapat menerapkan salah satu kebijakan bawaan pada aturan masuk dan keluar dan mereka memiliki nilai default berikut.
| Policy | Nilai standar |
|---|---|
| Akses Masuk | Izinkan namespace yang sama |
| Jalur Keluar | Izinkan semua |
Nota
Pengguna dengan tindakan Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write, seperti Azure Kubernetes Service RBAC Writer, pada peran ID Microsoft Entra yang ditugaskan kepada mereka dapat menambahkan kebijakan jaringan tambahan melalui API Kubernetes.
Misalnya, jika admin menerapkan kebijakan Deny All untuk ingress/egress, dan pengguna menerapkan kebijakan Allow untuk namespace melalui API Kubernetes, kebijakan Allow lebih diprioritaskan daripada kebijakan Deny All, dan lalu lintas diizinkan mengalir dalam namespace.
Kuota sumber daya
Kuota Sumber Daya adalah sumber daya Kubernetes yang digunakan untuk mengelola dan membatasi konsumsi sumber daya namespace dalam kluster. Mereka memungkinkan administrator untuk menentukan batasan pada jumlah CPU, memori, penyimpanan, atau sumber daya lain yang digunakan oleh beban kerja di namespace layanan. Dengan menerapkan kuota sumber daya, Anda dapat memastikan distribusi sumber daya yang adil, mencegah penggunaan sumber daya secara berlebihan, dan menjaga stabilitas kluster.
Namespace layanan terkelola dapat dibuat dengan kuota sumber daya berikut:
- Permintaan dan batasan CPU: Tentukan jumlah minimum dan maksimum sumber daya CPU yang dapat diminta atau digunakan oleh beban kerja di namespace layanan. Kuota memastikan bahwa beban kerja memiliki sumber daya CPU yang memadai untuk beroperasi sambil mencegah penggunaan berlebih yang dapat memengaruhi namespace lain. Kuota didefinisikan dalam bentuk miliCPU.
-
Permintaan dan batas memori: Tentukan jumlah minimum dan maksimum sumber daya memori yang dapat diminta atau digunakan oleh beban kerja di namespace layanan. Kuota membantu menjaga stabilitas dengan menghindari penggunaan berlebihan atas memori dan memastikan alokasi sumber daya yang adil pada setiap namespace. Kuota didefinisikan dalam bentuk yang setara dengan pangkat dua, seperti ,
Ei,Pi,Ti,Gi,Mi.
Label dan anotasi
Label dan Anotasi Kubernetes adalah metadata yang dilampirkan ke objek Kubernetes, seperti namespace, untuk memberikan informasi tambahan. Label adalah pasangan kunci-nilai yang digunakan untuk mengatur dan memilih sumber daya, memungkinkan pengelompokan dan kueri yang efisien. Anotasi menyimpan metadata yang tidak mengidentifikasi, seperti detail konfigurasi atau instruksi operasional, yang digunakan oleh perangkat atau sistem.
Anda dapat secara opsional mengatur Label dan Anotasi Kubernetes untuk diterapkan pada namespace.
Kebijakan adopsi
Kebijakan adopsi menentukan bagaimana namespace yang ada di Kubernetes ditangani saat membuat namespace layanan terkelola.
Peringatan
Onboarding namespace yang sudah ada untuk dikelola dapat menyebabkan gangguan. Jika kuota sumber daya yang diterapkan kurang dari yang sudah diminta oleh pod, penyebaran dan pod baru yang melebihi kuota ditolak. Penyebaran yang ada tidak terpengaruh, tetapi peningkatan kapasitas ditolak. Menerapkan kebijakan jaringan ke namespace yang ada dapat memengaruhi lalu lintas yang ada. Pastikan bahwa kebijakan diuji dan divalidasi untuk menghindari gangguan yang tidak diinginkan terhadap komunikasi antara pod atau titik akhir eksternal.
Opsi berikut ini tersedia:
- Tidak Pernah: Jika namespace sudah ada di kluster, upaya untuk membuat namespace tersebut sebagai namespace layanan terkelola gagal.
- IfIdentical: Ambil alih namespace yang ada untuk dikelola, asalkan tidak ada perbedaan antara namespace yang ada dan konfigurasi yang diinginkan.
- Selalu: Selalu ambil alih namespace yang ada untuk dikelola, meskipun beberapa kolom dalam namespace mungkin akan ditimpa.
Menghapus kebijakan
Kebijakan penghapusan menentukan bagaimana namespace Kubernetes ditangani ketika sumber daya namespace yang dikelola dihapus.
Peringatan
Menghapus namespace terkelola dengan kebijakan Hapus menyebabkan semua sumber daya dalam namespace tersebut, seperti Penyebaran, Layanan, Ingress, dan objek Kubernetes lainnya, dihapus. Pastikan Anda mencadangkan atau memigrasikan sumber daya penting apa pun sebelum melanjutkan.
Opsi berikut ini tersedia:
-
Keep: Hanya hapus sumber daya namespace yang dikelola sambil menjaga namespace Kubernetes tetap utuh. Selain itu, label
ManagedByARMdihapus dari namespace. - Hapus: Hapus sumber daya namespace terkelola dan namespace Kubernetes secara bersamaan.
Peran bawaan untuk namespace yang dikelola
Namespace terkelola menggunakan peran bawaan berikut untuk sarana kontrol.
| Peranan | Deskripsi |
|---|---|
| Azure Kubernetes Service Namespace Kontributor | Memungkinkan akses untuk membuat, memperbarui, dan menghapus namespace terkelola pada kluster. |
| Pengguna Layanan Azure Kubernetes Namespace | Memungkinkan akses baca-saja ke namespace terkelola pada kluster. Memungkinkan akses untuk mencantumkan kredensial pada namespace. |
Namespace yang dikelola menggunakan fungsi bawaan berikut untuk bidang data.
| Peranan | Deskripsi |
|---|---|
| Pembaca Azure Kubernetes Service RBAC | Mengizinkan akses baca-saja untuk melihat sebagian besar objek di namespace. Ini tidak mengizinkan menampilkan peran atau pengikatan peran. Peran ini tidak mengizinkan melihat Secrets, karena membaca isi Secrets memungkinkan akses ke kredensial ServiceAccount di namespace, yang akan memungkinkan akses API sebagai ServiceAccount mana pun di namespace (suatu bentuk peningkatan hak akses). |
| Penulis RBAC Azure Kubernetes Service | Mengizinkan akses baca/tulis ke sebagian besar objek dalam sebuah namespace. Peran ini tidak memungkinkan melihat atau memodifikasi peran atau pengikatan peran. Namun, peran ini memungkinkan mengakses Rahasia dan menjalankan Pod sebagai ServiceAccount apa pun di namespace, sehingga dapat digunakan untuk mendapatkan tingkat akses API dari ServiceAccount apa pun di namespace. |
| Azure Kubernetes Service RBAC Admin | Memungkinkan akses baca/tulis ke sebagian besar sumber daya di namespace, termasuk kemampuan untuk membuat role dan role binding dalam namespace. Peran ini tidak mengizinkan akses tulis ke kuota sumber daya atau ke namespace itu sendiri. |
Kasus penggunaan namespace terkelola
Menyiapkan namespace dengan benar dengan kuota terkait atau kebijakan jaringan dapat rumit dan memakan waktu. Namespace yang dikelola memungkinkan Anda menyiapkan namespace yang telah dikonfigurasi sebelumnya di kluster AKS yang dapat berinteraksi menggunakan Azure CLI.
Bagian berikut menguraikan beberapa kasus penggunaan umum untuk namespace terkelola.
Mengelola tim dan sumber daya di AKS
Katakanlah Anda adalah admin di startup kecil. Anda memiliki kluster AKS yang disediakan dan ingin menyiapkan namespace bagi pengembang dari tim keuangan, hukum, dan desain Anda. Saat menyiapkan lingkungan perusahaan, Anda ingin memastikan bahwa akses dikontrol dengan ketat, sumber daya tercakup dengan benar, dan lingkungan diatur dengan benar.
Tim keuangan memasukkan formulir dan file dari tim di seluruh perusahaan, tetapi mereka menyimpan informasi sensitif yang idealnya tidak boleh meninggalkan lingkungan mereka. Aplikasi dan alur kerja mereka lebih ringan di sisi komputasi tetapi mengonsumsi banyak memori. Akibatnya, Anda memutuskan untuk menyiapkan namespace yang memungkinkan semua ingress jaringan, egress jaringan hanya dalam namespace mereka, dan mengelola ruang lingkup sumber daya mereka sesuai. Label ke namespace membantu mengidentifikasi tim mana yang menggunakannya dengan mudah.
az aks namespace add \ --name $FINANCE_NAMESPACE \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --cpu-request 250m \ --cpu-limit 500m \ --memory-request 512Mi \ --memory-limit 2Gi \ --ingress-policy AllowAll \ --egress-policy AllowSameNamespace \ --labels team=financeTim hukum terutama menangani data sensitif. Aplikasi mereka menggunakan cukup banyak memori tetapi membutuhkan sedikit sumber daya komputasi. Anda memutuskan untuk menyiapkan namespace yang sangat ketat untuk kebijakan ingress/egress, dan menetapkan kuota sumber daya mereka sesuai dengan itu.
az aks namespace add \ --name $LEGAL_NAMESPACE \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --cpu-request 250m \ --cpu-limit 500m \ --memory-request 2Gi \ --memory-limit 5Gi \ --ingress-policy DenyAll \ --egress-policy DenyAll \ --labels team=legalTim desain membutuhkan kemampuan untuk mengalirkan data secara bebas untuk menampilkan pekerjaan mereka di seluruh perusahaan. Mereka juga mendorong tim untuk mengirimi mereka konten sebagai referensi. Aplikasi mereka intensif dan membutuhkan sebagian besar memori dan CPU. Anda memutuskan untuk menyiapkannya dengan namespace yang minim pembatasan dan mengalokasikan jumlah sumber daya yang cukup besar untuk mereka.
az aks namespace add \ --name $DESIGN_NAMESPACE \ --cluster-name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --cpu-request 2000m \ --cpu-limit 2500m \ --memory-request 5Gi \ --memory-limit 8Gi \ --ingress-policy AllowAll \ --egress-policy AllowAll \ --labels team=design
Dengan namespace ini disiapkan, Anda sekarang memiliki lingkungan untuk tiga tim di organisasi Anda sehingga memungkinkan setiap tim untuk memulai dan beroperasi di lingkungan yang paling sesuai dengan kebutuhan mereka. Admin dapat menggunakan panggilan Azure CLI untuk memperbarui namespace sesuai pergeseran kebutuhan.
Menampilkan namespace yang dikelola
Seiring bertambahnya jumlah tim yang Anda tangani atau seiring dengan pertumbuhan organisasi Anda, Anda mungkin perlu meninjau kembali namespace yang telah Anda siapkan.
Katakanlah Anda ingin meninjau namespace layanan di kluster Anda dari bagian sebelumnya untuk memastikan ada tiga namespace layanan.
az aks namespace list Gunakan perintah untuk meninjau namespace Anda.
az aks namespace list \
--cluster-name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--output table
Output Anda akan terlihat mirip dengan contoh output berikut:
Name ResourceGroup Location
------------------ --------------- ----------
$CLUSTER_NAME/$DESIGN_NAMESPACE $RESOURCE_GROUP <LOCATION>
$CLUSTER_NAME/$LEGAL_NAMESPACE $RESOURCE_GROUP <LOCATION>
$CLUSTER_NAME/$FINANCE_NAMESPACE $RESOURCE_GROUP <LOCATION>
Mengontrol akses ke namespace terkelola
Anda selanjutnya dapat menggunakan peran Azure RBAC, yang dilingkupkan ke setiap namespace layanan, untuk menentukan pengguna mana yang memiliki akses ke tindakan tertentu dalam namespace layanan. Dengan konfigurasi yang tepat, Anda dapat memastikan pengguna memiliki semua akses yang mereka butuhkan dalam namespace layanan, sambil membatasi akses mereka ke namespace layanan lain atau sumber daya di seluruh kluster.
Langkah selanjutnya
- Pelajari cara membuat dan menggunakan namespace terkelola di Azure Kubernetes Service (AKS).
- Pelajari tentang namespace terkelola multi-kluster dengan Azure Kubernetes Fleet Manager.