Autentikasikan dengan Azure Container Registry dari Azure Kubernetes Service
Saat Anda menggunakan Azure Container Registry (ACR) dengan Azure Kubernetes Service (AKS), mekanisme autentikasi perlu dibentuk. Operasi ini diterapkan sebagai bagian dari pengalaman CLI, PowerShell, dan Portal dengan memberikan izin yang diperlukan untuk ACR Anda. Artikel ini menyediakan contoh untuk mengonfigurasi autentikasi antara kedua layanan Azure ini.
Anda dapat mengatur integrasi AKS ke ACR dalam beberapa perintah sederhana dengan Azure CLI atau Azure PowerShell. Integrasi ini menetapkan peran AcrPull ke identitas terkelola yang terkait dengan Kluster AKS.
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
Contoh-contoh ini memerlukan:
- Peran Pemilik, Administrator akun Azure, atau administrator bersama Azure pada langganan Azure
- Azure CLI versi 2.7.0 atau yang lebih baru
Untuk menghindari memerlukan pemilik, administrator akun Azure, atau peran administrator bersama Azure, Anda dapat menggunakan identitas terkelola yang ada untuk mengautentikasi ACR dari AKS. Untuk informasi selengkapnya, lihat Gunakan identitas terkelola Azure untuk mengautentikasi ke registri kontainer Azure.
Buat kluster AKS baru dengan integrasi ACR
Anda dapat mengatur integrasi AKS dan ACR selama pembuatan awal kluster AKS Anda. Untuk memungkinkan kluster AKS berinteraksi dengan ACR, identitas terkelola Azure Active Directory digunakan. Perintah berikut memungkinkan Anda mengotorisasi ACR yang ada dalam langganan Anda dan mengonfigurasi peran ACRPull yang sesuai untuk identitas terkelola. Berikan nilai yang valid untuk parameter Anda di bawah ini.
# set this to the name of your Azure Container Registry. It must be globally unique
MYACR=myContainerRegistry
# Run the following line to create an Azure Container Registry if you do not already have one
az acr create -n $MYACR -g myContainerRegistryResourceGroup --sku basic
# Create an AKS cluster with ACR integration
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
Atau, Anda dapat menentukan nama ACR menggunakan ID sumber daya ACR, yang memiliki format berikut:
/subscriptions/\<subscription-id\>/resourceGroups/\<resource-group-name\>/providers/Microsoft.ContainerRegistry/registries/\<name\>
Catatan
Jika Anda menggunakan ACR yang terletak di langganan lain dari kluster AKS, gunakan ID sumber daya ACR saat melampirkan atau melepaskan dari kluster AKS.
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
Proses ini memerlukan waktu beberapa menit.
Konfigurasikan integrasi ACR untuk kluster AKS yang ada
Integrasikan ACR yang ada dengan kluster AKS yang ada dengan menyediakan nilai yang valid untuk acr-name atau acr-resource-id seperti di bawah ini.
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
atau,
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-resource-id>
Catatan
Menjalankan az aks update --attach-acr menggunakan izin pengguna yang menjalankan perintah untuk membuat penetapan ACR peran. Peran ini ditugaskan pada identitas yang dikelola kubelet. Untuk informasi selengkapnya tentang identitas terkelola AKS, lihat Ringkasan identitas terkelola.
Anda juga dapat menghapus integrasi antara ACR dan kluster AKS dengan
az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-name>
atau
az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-resource-id>
Bekerja sama dengan ACR & AKS
Impor gambar ke ACR Anda
Impor gambar dari hub docker ke ACR Anda dengan menjalankan yang berikut ini:
az acr import -n <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
Sebarkan gambar sampel dari ACR ke AKS
Pastikan Anda memiliki info masuk AKS yang tepat
az aks get-credentials -g myResourceGroup -n myAKSCluster
Buat file yang disebut acr-nginx.yaml yang berisi berikut ini. Ganti nama sumber daya registri Anda untuk acr-name. Contoh: myContainerRegistry.
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
Selanjutnya, jalankan penyebaran ini di kluster AKS Anda:
kubectl apply -f acr-nginx.yaml
Anda dapat memantau penyebaran dengan menjalankan:
kubectl get pods
Anda harus memiliki dua pod running.
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
- Jalankan perintah az aks check-acr untuk memvalidasi bahwa registri dapat diakses dari kluster AKS.
- Pelajari selengkapnya tentang Pemantauan ACR
- Pelajari lebih lanjut tentang Kesehatan ACR