Autentikasikan dengan Azure Container Registry (ACR) dari Azure Kubernetes Service(AKS)
Saat menggunakan Azure Container Registry (ACR) dengan Azure Kubernetes Service (AKS), Anda perlu membuat mekanisme autentikasi. Anda dapat mengonfigurasi izin yang diperlukan antara ACR dan AKS menggunakan Azure CLI, Azure PowerShell, atau portal Azure. Artikel ini menyediakan contoh untuk mengonfigurasi autentikasi antara layanan Azure ini menggunakan Azure CLI atau Azure PowerShell.
Integrasi AKS ke ACR menetapkan peran AcrPull ke identitas terkelola ID Microsoft Entra yang terkait dengan kumpulan agen di kluster AKS Anda. Untuk informasi selengkapnya tentang identitas terkelola AKS, lihat Ringkasan identitas terkelola.
Penting
Ada masalah latensi dengan grup Microsoft Entra saat melampirkan ACR. Jika peran AcrPull diberikan ke grup Microsoft Entra dan identitas kubelet ditambahkan ke grup untuk menyelesaikan konfigurasi RBAC, mungkin ada penundaan sebelum grup RBAC berlaku. Jika Anda menjalankan otomatisasi yang mengharuskan konfigurasi RBAC selesai, kami sarankan Anda menggunakan Bawa identitas kubelet Anda sendiri sebagai solusinya. Anda dapat membuat identitas yang ditetapkan pengguna sebelumnya, menambahkannya ke grup Microsoft Entra, lalu menggunakan identitas sebagai identitas kubelet untuk membuat kluster AKS. Ini memastikan identitas ditambahkan ke grup Microsoft Entra sebelum token dihasilkan oleh kubelet, yang menghindari masalah latensi.
Catatan
Artikel ini membahas autentikasi otomatis antara AKS dan ACR. Jika Anda perlu menarik gambar dari registri eksternal privat, gunakan gambar tarik rahasia.
Sebelum Anda mulai
- Anda memerlukan peran Pemilik, administrator akun Azure, atau administrator bersama Azure di langganan Azure Anda.
- Untuk menghindari kebutuhan salah satu peran ini, Anda dapat menggunakan identitas terkelola yang ada untuk mengautentikasi ACR dari AKS. Untuk informasi selengkapnya, lihat Menggunakan identitas terkelola Azure untuk mengautentikasi ke ACR.
- Jika Anda menggunakan Azure CLI, artikel ini mengharuskan Anda menjalankan Azure CLI versi 2.7.0 atau yang lebih baru. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Jika Anda menggunakan Azure PowerShell, artikel ini mengharuskan Anda menjalankan Azure PowerShell versi 5.9.0 atau yang lebih baru. Jalankan
Get-InstalledModule -Name Az
untuk menemukan versinya. Jika Anda perlu menginstal atau meningkatkan, lihat Install modul Azure PowerShell. - Contoh dan sintaks untuk menggunakan Terraform untuk mengonfigurasi ACR dapat ditemukan dalam referensi Terraform.
Membuat ACR baru
Jika Anda belum memiliki ACR, buat ACR menggunakan
az acr create
perintah . Contoh berikut mengaturMYACR
variabel ke nama ACR, mycontainerregistry, dan menggunakan variabel untuk membuat registri. Nama ACR Anda harus unik secara global dan hanya menggunakan huruf kecil.MYACR=mycontainerregistry az acr create --name $MYACR --resource-group myContainerRegistryResourceGroup --sku basic
Buat kluster AKS baru dan integrasikan dengan ACR yang ada
Buat kluster AKS baru dan integrasikan dengan ACR yang ada menggunakan
az aks create
perintah dengan--attach-acr
parameter . Perintah ini memungkinkan Anda untuk mengotorisasi ACR yang ada di langganan Anda dan mengonfigurasi peran AcrPull yang sesuai untuk identitas terkelola.MYACR=mycontainerregistry az aks create --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACR
Perintah ini mungkin perlu waktu beberapa menit untuk diselesaikan.
Catatan
Jika Anda menggunakan ACR yang terletak di langganan yang berbeda dari kluster AKS Anda atau lebih suka menggunakan ID sumber daya ACR alih-alih nama ACR, Anda dapat melakukannya menggunakan sintaks berikut:
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
Mengonfigurasi integrasi ACR untuk kluster AKS yang ada
Melampirkan ACR ke kluster AKS yang ada
Integrasikan ACR yang ada dengan kluster AKS yang ada menggunakan
az aks update
perintah dengan--attach-acr
parameter dan nilai yang valid untuk acr-name atau acr-resource-id.# Attach using acr-name az aks update --name myAKSCluster --resource-group myResourceGroup --attach-acr <acr-name> # Attach using acr-resource-id az aks update --name myAKSCluster --resource-group myResourceGroup --attach-acr <acr-resource-id>
Catatan
az aks update --attach-acr
Perintah menggunakan izin pengguna yang menjalankan perintah untuk membuat penetapan peran ACR. Peran ini ditetapkan ke identitas terkelola kubelet . Untuk informasi selengkapnya tentang identitas terkelola AKS, lihat Ringkasan identitas terkelola.
Melepaskan ACR dari kluster AKS
Hapus integrasi antara ACR dan kluster AKS menggunakan
az aks update
perintah dengan--detach-acr
parameter dan nilai yang valid untuk acr-name atau acr-resource-id.# Detach using acr-name az aks update --name myAKSCluster --resource-group myResourceGroup --detach-acr <acr-name> # Detach using acr-resource-id az aks update --name myAKSCluster --resource-group myResourceGroup --detach-acr <acr-resource-id>
Bekerja sama dengan ACR & AKS
Impor gambar ke ACR Anda
Impor gambar dari Docker Hub ke ACR Anda menggunakan
az acr import
perintah .az acr import --name <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
Sebarkan gambar sampel dari ACR ke AKS
Pastikan Anda memiliki kredensial AKS yang tepat menggunakan
az aks get-credentials
perintah .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Buat file bernama acr-nginx.yaml menggunakan contoh YAML berikut dan ganti acr-name dengan nama ACR Anda.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx0-deployment labels: app: nginx0-deployment spec: replicas: 2 selector: matchLabels: app: nginx0 template: metadata: labels: app: nginx0 spec: containers: - name: nginx image: <acr-name>.azurecr.io/nginx:v1 ports: - containerPort: 80
Jalankan penyebaran di kluster AKS Anda menggunakan
kubectl apply
perintah .kubectl apply -f acr-nginx.yaml
Pantau penyebaran menggunakan
kubectl get pods
perintah .kubectl get pods
Output harus menunjukkan dua pod yang sedang berjalan, seperti yang ditunjukkan dalam contoh output berikut:
NAME READY STATUS RESTARTS AGE nginx0-deployment-669dfc4d4b-x74kr 1/1 Running 0 20s nginx0-deployment-669dfc4d4b-xdpd6 1/1 Running 0 20s
Pemecahan Masalah
- Validasi registri dapat diakses dari kluster AKS menggunakan
az aks check-acr
perintah . - Pelajari selengkapnya tentang pemantauan ACR.
- Pelajari selengkapnya tentang kesehatan ACR.
Azure Kubernetes Service