Menggunakan identitas terkelola yang ditetapkan sistem di Azure Kubernetes Service (AKS)

Artikel ini menjelaskan cara mengaktifkan identitas terkelola yang ditetapkan sistem pada kluster AKS baru atau yang sudah ada, mendapatkan ID utama identitas terkelola yang ditetapkan sistem, dan menambahkan penetapan peran untuk identitas terkelola yang ditetapkan sistem.

Prasyarat

  • Grup sumber daya Azure yang sudah ada. Jika Anda tidak memilikinya, Anda dapat membuatnya menggunakan az group create perintah .

    az group create \
        --name <resource-group-name> \
        --location <location>
    
  • Azure CLI versi 2.23.0 atau yang lebih baru terinstal. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
  • Untuk memperbarui kluster yang ada untuk menggunakan identitas terkelola yang ditetapkan sistem, Anda memerlukan Azure CLI versi 2.49.0 atau yang lebih baru terinstal.

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 diaktifkan identitas yang dikelola pod Microsoft Entra (aad-pod-identity), 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 menggunakan aad-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 Menggunakan identitas yang dikelola pod Microsoft Entra di Azure Kubernetes Service (AKS).
    • Untuk mengonfigurasi pengecualian, instal mic-exception YAML.
  • AKS tidak mendukung penggunaan identitas terkelola yang ditetapkan sistem saat menggunakan zona DNS privat kustom.

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 add-on sendiri. Misalnya menggunakan templat Azure Resource Manager (ARM), lihat Menetapkan peran Azure menggunakan templat ARM.
  • ** Jika kluster Anda menggunakan --attach-acr untuk menarik gambar dari Azure Container Registry (ACR), Anda perlu menjalankan perintah az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id> setelah memperbarui kluster Anda agar kubelet baru yang dibuat untuk identitas terkelola mendapatkan izin untuk menarik dari ACR. Jika tidak, Anda tidak akan dapat menarik dari ACR setelah pembaruan.

Mengaktifkan identitas terkelola yang ditetapkan sistem pada kluster AKS baru

Identitas terkelola yang ditetapkan sistem diaktifkan secara default saat Anda membuat kluster AKS baru.

Buat kluster AKS menggunakan perintah az aks create.

az aks create \
    --resource-group <resource-group-name> \
    --name <aks-cluster-name> \
    --generate-ssh-keys

Memperbarui kluster yang ada untuk menggunakan identitas terkelola yang ditetapkan sistem

Perbarui kluster AKS yang ada dari prinsipal layanan ke identitas terkelola yang ditetapkan sistem dengan menggunakan perintah az aks update dan parameter --enable-managed-identity.

az aks update \
    --resource-group <resource-group-name> \
    --name <aks-cluster-name> \
    --enable-managed-identity

Saat Anda memperbarui kluster untuk menggunakan identitas terkelola yang ditetapkan sistem alih-alih perwakilan layanan, sarana kontrol dan pod menggunakan identitas terkelola yang ditetapkan sistem untuk otorisasi saat mengakses layanan lain di Azure. Semua simpul dalam kluster Anda digambarkan ulang sehingga Kubelet juga dapat segera mulai menggunakan identitas terkelola. Operasi pencitraan ulang ini menyebabkan waktu henti untuk kluster AKS Anda karena simpul di kumpulan simpul berkode, dikosongkan, dikosongkan, dan dicitrakan ulang. Konfigurasikan Node Disruption Policy (pratinjau) untuk mengontrol kapan operasi yang memerlukan reimage node diizinkan di kluster Azure Kubernetes Service (AKS) Anda.

Mendapatkan ID utama identitas terkelola yang ditetapkan sistem

Dapatkan ID utama untuk identitas terkelola yang ditetapkan sistem kluster menggunakan az aks show perintah .

CLIENT_ID=$(az aks show \
    --name <aks-cluster-name> \
    --resource-group <resource-group-name> \
    --query identity.principalId \
    --output tsv)

Tambahkan penetapan peran untuk identitas terkelola secara sistem

Nota

Untuk jaringan virtual (VNet), disk Azure yang terlampir, alamat IP statis, atau tabel rute di luar grup sumber daya simpul pekerja default, Anda perlu menetapkan Network Contributor peran di grup sumber daya kustom.

Tetapkan peran Azure RBAC ke identitas terkelola yang ditetapkan sistem menggunakan perintah az role assignment create. Contoh berikut menetapkan peran Kontributor Jaringan ke identitas terkelola yang ditetapkan sistem. Penetapan peran dilingkupkan ke grup sumber daya yang berisi VNet.

az role assignment create \
    --assignee <client-id> \
    --role "Network Contributor" \
    --scope <custom-resource-group-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.

  1. Buat file bernama main.tf dan 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 {}
    }
    
  2. Tambahkan kode berikut ke main.tf untuk 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 sistem menggunakan Terraform

Tambahkan kode berikut untuk main.tf membuat kluster AKS dengan identitas terkelola yang ditetapkan sistem:

resource "azurerm_kubernetes_cluster" "system_assigned" {
 name                = "aks-system"
 location            = azurerm_resource_group.example.location
 resource_group_name = azurerm_resource_group.example.name
 dns_prefix          = "akssystem"
 identity {
   type = "SystemAssigned"
 }
 default_node_pool {
   name       = "system"
   node_count = 1
   vm_size    = "Standard_DS2_v2"
 }
}

Tambahkan penetapan peran untuk identitas terkelola yang ditetapkan sistem menggunakan Terraform

Tambahkan kode berikut ke dalam main.tf untuk membuat penetapan peran untuk identitas terkelola yang ditetapkan sistem. Contoh ini menetapkan peran Kontributor Jaringan ke identitas terkelola yang ditetapkan sistem. Penetapan peran dilingkupkan ke grup sumber daya yang berisi VNet.

resource "azurerm_role_assignment" "system_assigned_network_contributor" {
 scope                = azurerm_resource_group.example.id
 role_definition_name = "Network Contributor"
 principal_id         = azurerm_kubernetes_cluster.system_assigned.identity[0].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 di 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 Anda main.tf di langganan Azure Anda.

terraform apply

Memverifikasi implementasi Terraform

Setelah menerapkan konfigurasi Terraform, Anda dapat memverifikasi penyebaran menggunakan az aks show perintah 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

Untuk mempelajari selengkapnya tentang identitas terkelola di AKS, lihat artikel berikut ini: