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