Perwakilan layanan dengan Azure Kubernetes Services (AKS)
Kluster AKS memerlukan perwakilan layanan Microsoft Entra atau identitas terkelola untuk membuat dan mengelola sumber daya Azure lainnya secara dinamis, seperti Azure Load Balancer atau Azure Container Registry (ACR).
Catatan
Sebaiknya gunakan identitas terkelola untuk mengautentikasi dengan sumber daya lain di Azure, dan merupakan metode autentikasi default untuk kluster AKS Anda. Untuk informasi selengkapnya tentang menggunakan identitas terkelola dengan kluster Anda, lihat Menggunakan identitas terkelola yang ditetapkan sistem.
Artikel ini menunjukkan kepada Anda cara membuat dan menggunakan perwakilan layanan untuk kluster AKS Anda.
Sebelum Anda mulai
Untuk membuat perwakilan layanan Microsoft Entra, Anda harus memiliki izin untuk mendaftarkan aplikasi dengan penyewa Microsoft Entra Anda dan untuk menetapkan aplikasi ke peran dalam langganan Anda. Jika Anda tidak memiliki izin yang diperlukan, Anda perlu meminta ID Microsoft Entra atau administrator langganan untuk menetapkan izin yang diperlukan atau membuat perwakilan layanan untuk Anda gunakan dengan kluster AKS Anda.
Jika Anda menggunakan perwakilan layanan dari penyewa Microsoft Entra yang berbeda, ada pertimbangan lain sekeliling izin yang tersedia saat Anda menyebarkan kluster. Anda mungkin tidak memiliki izin yang tepat untuk membaca dan menulis informasi direktori. Untuk informasi selengkapnya, lihat Apa saja izin pengguna default di ID Microsoft Entra?
Prasyarat
- Jika menggunakan Azure CLI, Anda memerlukan Azure CLI versi 2.0.59 atau yang lebih baru. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Jika menggunakan Azure PowerShell, Anda memerlukan Azure PowerShell versi 5.0.0 atau yang lebih baru. Jalankan
Get-InstalledModule -Name Az
untuk menemukan versinya. Jika Anda perlu memasang atau melakukan peningkatan, lihat Modul pemasangan Azure Az PowerShell.
Membuat pokok layanan secara manual
Buat perwakilan layanan menggunakan
az ad sp create-for-rbac
perintah .az ad sp create-for-rbac --name myAKSClusterServicePrincipal
Output Anda harus mirip dengan contoh output berikut:
{ "appId": "559513bd-0c19-4c1a-87cd-851a26afd5fc", "displayName": "myAKSClusterServicePrincipal", "name": "http://myAKSClusterServicePrincipal", "password": "e763725a-5eee-40e8-a466-dc88d980f415", "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48" }
Salin nilai untuk
appId
danpassword
dari output. Anda menggunakan ini saat membuat kluster AKS di bagian berikutnya.
Tentukan pokok layanan untuk kluster AKS
Gunakan perwakilan layanan yang ada untuk kluster AKS baru menggunakan
az aks create
perintah dan gunakan--service-principal
parameter dan--client-secret
untuk menentukanappId
danpassword
dari output yang Anda terima di bagian sebelumnya.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --service-principal <appId> \ --client-secret <password>
Catatan
Jika Anda menggunakan perwakilan layanan yang ada dengan rahasia yang disesuaikan, pastikan rahasia tidak lebih dari 190 byte.
Mendelegasikan akses ke sumber daya Azure lainnya
Anda dapat menggunakan perwakilan layanan untuk kluster AKS untuk mengakses sumber daya lain. Misalnya, jika Anda ingin menerapkan kluster AKS ke subnet jaringan virtual Azure yang ada atau menyambungkan ke Azure Container Registry (ACR), Anda perlu mendelegasikan akses ke sumber daya tersebut ke perwakilan layanan. Izin yang diberikan ke kluster menggunakan identitas terkelola yang ditetapkan sistem mungkin memerlukan waktu hingga 60 menit untuk terisi.
Buat penetapan peran menggunakan
az role assignment create
perintah . TetapkanappId
ke lingkup tertentu, seperti grup sumber daya atau sumber daya jaringan virtual. Peran menentukan izin apa yang dimiliki perwakilan layanan pada sumber daya.Catatan
--scope
untuk sumber daya harus berupa ID sumber daya lengkap, seperti /subscriptions/<guid>/resourceGroups/myResourceGroup atau /subscriptions/<guid>/resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.az role assignment create --assignee <appId> --scope <resourceScope> --role Contributor
Bagian berikut ini merinci delegasi umum yang mungkin perlu Anda buat.
Azure Container Registry
Jika Anda menggunakan Azure Container Registry (ACR) sebagai penyimpanan gambar kontainer, Anda perlu memberikan izin kepada perwakilan layanan untuk kluster AKS Anda untuk membaca dan menarik gambar. Sebaiknya gunakan az aks create
perintah atau az aks update
untuk berintegrasi dengan registri dan tetapkan peran yang sesuai untuk perwakilan layanan. Untuk langkah terperinci, lihat Mengautentikasi dengan Azure Container Registry dari Azure Kubernetes Service.
Jaringan
Anda dapat menggunakan jaringan tingkat lanjut di mana jaringan virtual dan subnet atau alamat IP publik berada di grup sumber daya lain. Tetapkan peran bawaan Kontributor Jaringan pada subnet dalam jaringan virtual. Sebagai alternatif, Anda dapat membuat peran kustom dengan izin untuk mengakses sumber daya jaringan dalam grup sumber daya tersebut. Untuk informasi selengkapnya, lihat izin layanan AKS.
Penyimpanan
Jika Anda perlu mengakses sumber daya disk yang ada di grup sumber daya lain, tetapkan salah satu kumpulan izin peran berikut:
- Buat peran kustom dan tentukan izin peran Microsoft.Compute/disks/read dan Microsoft.Compute/disks/write , atau
- Tetapkan peran bawaan Kontributor Komputer Virtual pada grup sumber daya.
Azure Container Instances
Jika Anda menggunakan Kubelet Virtual untuk berintegrasi dengan AKS dan memilih untuk menjalankan Azure Container Instances (ACI) dalam grup sumber daya yang terpisah dari kluster AKS, perwakilan layanan AKS harus diberi izin Kontributor pada grup sumber daya ACI.
Pertimbangan lain
Saat menggunakan AKS dan perwakilan layanan Microsoft Entra, pertimbangkan hal berikut:
- Perwakilan layanan untuk Kubernetes adalah bagian dari konfigurasi kluster, tetapi jangan gunakan identitas ini untuk menyebarkan kluster.
- Secara default, mandat perwakilan layanan berlaku selama satu tahun. Anda dapat kapan saja memperbarui atau memutar mandat perwakilan layanan.
- Setiap perwakilan layanan dikaitkan dengan aplikasi Microsoft Entra. Anda dapat mengaitkan perwakilan layanan untuk kluster Kubernetes dengan nama aplikasi Microsoft Entra yang valid (misalnya: https://www.contoso.org/example). URL untuk aplikasi tidak harus berupa titik akhir yang sebenarnya.
- Saat Anda menentukan ID Klien perwakilan layanan, gunakan nilai
appId
. - Pada VM simpul agen di kluster Kubernetes, kredensial perwakilan layanan disimpan dalam
/etc/kubernetes/azure.json
file. - Saat Anda menghapus kluster AKS yang dibuat menggunakan
az aks create
perintah , perwakilan layanan yang dibuat tidak dihapus secara otomatis.Untuk menghapus perwakilan layanan, kueri untuk servicePrincipalProfile.clientId kluster Anda dan hapus menggunakan
az ad sp delete
perintah . Ganti nilai untuk-g
parameter untuk nama dan-n
parameter grup sumber daya untuk nama kluster:az ad sp delete --id $(az aks show -g myResourceGroup -n myAKSCluster --query servicePrincipalProfile.clientId -o tsv)
Pemecahan Masalah
Azure CLI menyimpan kredensial perwakilan layanan untuk kluster AKS. Jika kredensial ini kedaluwarsa, Anda mengalami kesalahan selama penyebaran kluster AKS. Jika Anda menjalankan az aks create
perintah dan menerima pesan kesalahan yang mirip dengan yang berikut ini, itu mungkin menunjukkan masalah dengan kredensial perwakilan layanan yang di-cache:
Operation failed with status: 'Bad Request'.
Details: The credentials in ServicePrincipalProfile were invalid. Please see https://aka.ms/aks-sp-help for more details.
(Details: adal: Refresh request failed. Status Code = '401'.
Anda dapat memeriksa tanggal kedaluwarsa kredensial perwakilan layanan Anda menggunakan az ad app credential list
perintah dengan "[].endDateTime"
kueri.
az ad app credential list --id <app-id> --query "[].endDateTime" -o tsv
Waktu kedaluwarsa default untuk mandat perwakilan layanan adalah satu tahun. Jika kredensial Anda lebih dari satu tahun, Anda dapat mengatur ulang kredensial yang ada atau membuat perwakilan layanan baru.
Pemecahan masalah Umum Azure CLI
Azure CLI dapat berjalan di beberapa lingkungan shell, tetapi dengan sedikit variasi format. Jika Anda mendapatkan hasil yang tidak diharapkan dengan perintah Azure CLI, lihat Cara berhasil menggunakan Azure CLI.
Langkah berikutnya
Untuk informasi selengkapnya tentang perwakilan layanan Microsoft Entra, lihat Objek perwakilan aplikasi dan layanan.
Untuk informasi mengenai cara memperbarui mandat, lihat Memperbarui atau memutar mandat untuk perwakilan layanan di AKS.