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.
Artikel ini menjelaskan cara mengaktifkan identitas terkelola yang ditetapkan pengguna pada kluster AKS baru atau yang sudah ada, mendapatkan ID utama identitas terkelola yang ditetapkan pengguna, dan menambahkan penetapan peran untuk identitas terkelola yang ditetapkan pengguna.
Prasyarat
Baca Gambaran umum identitas terkelola di Azure Kubernetes Service (AKS) untuk memahami berbagai jenis identitas terkelola yang tersedia di AKS dan bagaimana Anda dapat menggunakannya untuk mengakses sumber daya Azure dengan aman.
Atur langganan Anda sebagai langganan aktif saat ini menggunakan
az account setperintah .az account set --subscription <subscription-id>
Grup sumber daya Azure yang sudah ada. Jika Anda tidak memilikinya, Anda dapat membuatnya menggunakan
az group createperintah .az group create \ --name <resource-group-name> \ --location <location>
- Azure CLI versi 2.23.0 atau yang lebih baru terinstal. Jalankan
az --versionuntuk menemukan versinya. Jika Anda perlu menginstal atau meningkatkan, lihat Install Azure CLI. - Untuk memperbarui kluster yang ada untuk menggunakan identitas terkelola yang ditetapkan user, Anda memerlukan Azure CLI versi 2.49.0 atau yang lebih baru.
- Terraform diinstal secara lokal. Untuk petunjuk penginstalan, lihat Menginstal Terraform.
Keterbatasan
- Setelah membuat kluster dengan identitas terkelola, Anda tidak dapat beralih kembali menggunakan perwakilan layanan.
- Memindahkan atau memigrasikan kluster yang mendukung identitas terkelola ke penyewa lain tidak didukung.
- Jika kluster telah memiliki identitas yang dikelola pod Microsoft Entra (
aad-pod-identity) diaktifkan, pod Node-Managed Identity (NMI) memodifikasi iptables node untuk mencegat panggilan ke titik akhir Azure Instance Metadata (IMDS). Konfigurasi ini berarti setiap permintaan yang dibuat ke titik akhir IMDS disadap oleh NMI, bahkan jika pod tertentu tidak menggunakanaad-pod-identity.- Anda dapat mengonfigurasi definisi sumber daya kustom (CRD) AzurePodIdentityException untuk menentukan bahwa permintaan ke titik akhir IMDS yang berasal dari pod yang cocok dengan label yang ditentukan dalam CRD harus diproksikan tanpa pemrosesan apa pun di NMI. Kecualikan pod sistem dengan label dalam namespace kube-system dengan cara mengonfigurasi CRD AzurePodIdentityException. Untuk informasi selengkapnya, lihat Gunakan identitas yang dikelola pod Microsoft Entra di Azure Kubernetes Service (AKS).
- Untuk mengonfigurasi pengecualian, instal YAML mic-exception.
- Wilayah USDOD Central, USDOD East, dan USGov Iowa di cloud Azure US Government tidak mendukung pembuatan kluster dengan identitas terkelola yang ditetapkan pengguna.
Memperbarui pertimbangan kluster
Saat Anda memperbarui kluster, pertimbangkan informasi berikut:
- Pembaruan hanya berfungsi jika ada pembaruan VHD yang akan digunakan. Jika Anda menjalankan VHD terbaru, Anda harus menunggu hingga VHD berikutnya tersedia untuk melakukan pembaruan.
- Azure CLI memastikan izin add-on Anda diatur dengan benar setelah bermigrasi. Jika Anda tidak menggunakan Azure CLI untuk melakukan operasi migrasi, Anda perlu menangani izin identitas tambahan secara manual. Untuk contoh menggunakan templat Azure Resource Manager (ARM), lihat Menetapkan peran Azure menggunakan templat ARM.
- Jika kluster Anda menggunakan
--attach-acruntuk menarik gambar dari Azure Container Registry (ACR), Anda perlu menjalankan perintahaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>setelah memperbarui kluster Anda agar kubelet yang baru dibuat untuk identitas yang dikelola memperoleh izin untuk menarik dari ACR. Jika tidak, Anda tidak akan dapat menarik dari ACR setelah pembaruan.
Buat identitas terkelola yang ditetapkan pengguna
Jika Anda belum memiliki sumber daya identitas terkelola yang ditetapkan pengguna, buat sumber daya menggunakan az identity create perintah .
az identity create \
--name <identity-name> \
--resource-group <resource-group-name>
Output Anda harus menyerupai contoh output berikut:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>",
"location": "<location>",
"name": "<identity-name>",
"principalId": "<principal-id>",
"resourceGroup": "<resource-group-name>",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Dapatkan ID prinsipal untuk identitas terkelola yang ditetapkan pengguna
Dapatkan ID utama dari identitas terkelola yang diberi pengguna dengan menggunakan perintah az identity show.
CLIENT_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query principalId \
--output tsv)
Mendapatkan ID sumber dari identitas terkelola yang ditetapkan oleh pengguna
Dapatkan ID sumber daya untuk identitas terkelola yang ditetapkan pengguna dengan perintah az identity show.
RESOURCE_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query id \
--output tsv)
Mengaktifkan identitas terkelola yang ditetapkan pengguna pada kluster AKS baru
Buat kluster AKS dengan identitas terkelola yang ditetapkan pengguna menggunakan perintah az aks create dan parameter --assign-identity yang diatur ke ID sumber daya identitas terkelola yang ditetapkan pengguna.
az aks create \
--resource-group <resource-group-name> \
--name <cluster-name> \
--network-plugin azure \
--vnet-subnet-id <vnet-subnet-id> \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--assign-identity $RESOURCE_ID \
--generate-ssh-keys
Memperbarui kluster yang ada untuk menggunakan identitas terkelola yang ditetapkan pengguna
Perbarui kluster yang ada untuk menggunakan identitas terkelola yang ditentukan pengguna dengan menggunakan perintah az aks update dan menetapkan parameter --assign-identity ke ID sumber daya dari identitas terkelola yang ditentukan pengguna.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-managed-identity \
--assign-identity $RESOURCE_ID
Output untuk pembaruan kluster yang berhasil untuk menggunakan identitas terkelola yang ditetapkan pengguna harus menyerupai contoh output berikut:
...
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
...
Setelah Anda memperbarui kluster untuk menggunakan identitas terkelola yang ditetapkan pengguna alih-alih perwakilan layanan, sarana kontrol dan pod menggunakan identitas terkelola yang ditetapkan pengguna untuk otorisasi saat mengakses layanan lain di Azure. Kubelet terus menggunakan service principal sampai Anda juga meningkatkan node pool Anda. Peningkatan kumpulan simpul menyebabkan waktu henti untuk kluster AKS Anda karena simpul di kumpulan simpul diisolasi, dikosongkan, dan dikonfigurasi ulang. Anda dapat menggunakan perintah pada simpul Anda untuk memperbarui ke identitas terkelola yang ditetapkan pengguna.
az aks nodepool upgrade \
--resource-group <resource-group-name> \
--cluster-name <aks-cluster-name> \
--name <node-pool-name> \
--node-image-only
Nota
Memigrasikan identitas terkelola untuk sarana kontrol dari yang ditetapkan sistem ke yang ditetapkan pengguna tidak mengakibatkan waktu henti untuk sarana kontrol dan kumpulan agen. Komponen kontrol tetap menggunakan identitas lama yang ditugaskan oleh sistem hingga beberapa jam sampai refresh token berikutnya.
Menetapkan peran RBAC Azure ke identitas terkelola yang ditetapkan oleh pengguna
Tambahkan penetapan peran untuk identitas terkelola yang ditugaskan pengguna menggunakan perintah az role assignment create. Contoh berikut menetapkan peran Key Vault Secrets User ke identitas terkelola yang ditetapkan pengguna untuk memberinya izin untuk mengakses rahasia dalam key vault. Penetapan peran dibatasi ke sumber daya brankas kunci.
az role assignment create \
--assignee <client-id> \
--role "Key Vault Secrets User" \
--scope "<key-vault-resource-id>"
Nota
Diperlukan waktu hingga 60 menit agar izin yang diberikan ke identitas terkelola kluster Anda disebarluaskan.
Membuat file konfigurasi Terraform
File konfigurasi Terraform menentukan infrastruktur yang dibuat dan dikelola Terraform.
Buat file bernama
main.tfdan tambahkan kode berikut untuk menentukan versi Terraform dan tentukan penyedia Azure:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Tambahkan kode berikut ke
main.tfuntuk membuat grup sumber daya Azure. Jangan ragu untuk mengubah nama dan lokasi grup sumber daya sesuai kebutuhan.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Membuat kluster AKS dengan identitas terkelola yang ditetapkan pengguna menggunakan Terraform
Tambahkan kode berikut ke main.tf untuk membuat identitas terkelola yang ditetapkan pengguna dan kluster AKS yang menggunakan identitas:
resource "azurerm_user_assigned_identity" "uai" {
name = "aks-user-identity"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
}
resource "azurerm_kubernetes_cluster" "user_assigned" {
name = "aks-user"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "aksuser"
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.uai.id]
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Menambahkan penetapan peran untuk identitas terkelola yang ditetapkan pengguna menggunakan Terraform
Tambahkan kode berikut ke main.tf untuk membuat penetapan peran untuk identitas terkelola yang ditetapkan oleh pengguna. Contoh ini menetapkan peran Key Vault Secrets User kepada identitas terkelola yang ditetapkan oleh pengguna untuk memberikan izin mengakses rahasia di brankas kunci. Penetapan peran dibatasi ke sumber daya brankas kunci.
resource "azurerm_role_assignment" "user_assigned_key_vault_secrets_user" {
scope = azurerm_resource_group.example.id
role_definition_name = "Key Vault Secrets User"
principal_id = azurerm_user_assigned_identity.uai.principal_id
}
Menginisialisasi Terraform
Inisialisasi Terraform di direktori yang berisi file main.tf Anda menggunakan perintah terraform init. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure dengan Terraform.
terraform init
Buat rencana pelaksanaan Terraform
Buat rencana eksekusi Terraform menggunakan terraform plan perintah . Perintah ini menunjukkan kepada Anda sumber daya yang akan dibuat atau dimodifikasi oleh Terraform dalam langganan Azure Anda.
terraform plan
Menerapkan konfigurasi Terraform
Setelah meninjau dan mengonfirmasi rencana eksekusi, terapkan konfigurasi Terraform menggunakan terraform apply perintah . Perintah ini membuat atau memodifikasi sumber daya yang ditentukan dalam file main.tf Anda di langganan Azure Anda.
terraform apply
Memverifikasi implementasi Terraform
Setelah menerapkan konfigurasi Terraform, Anda dapat memverifikasi penyebaran menggunakan perintah [az aks show][az-aks-show] dengan --query parameter untuk memfilter output dan menampilkan informasi identitas. Contohnya:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
Konten terkait
Untuk mempelajari selengkapnya tentang identitas terkelola di AKS, lihat artikel berikut ini: