Azure Kubernetes Service'ten (AKS) Azure Container Registry (ACR) ile Kimlik Doğrulaması Yapma
Azure Kubernetes Service (AKS) ile Azure Container Registry (ACR) kullanırken bir kimlik doğrulama mekanizması oluşturmanız gerekir. Azure CLI, Azure PowerShell veya Azure portalını kullanarak ACR ile AKS arasında gerekli izinleri yapılandırabilirsiniz. Bu makalede, Azure CLI veya Azure PowerShell kullanarak bu Azure hizmetleri arasında kimlik doğrulamasını yapılandırma örnekleri sağlanır.
AKS to ACR tümleştirmesi, AKS kümenizdeki aracı havuzuyla ilişkili Microsoft Entra Id yönetilen kimliğine AcrPull rolünü atar. AKS yönetilen kimlikleri hakkında daha fazla bilgi için bkz . Yönetilen kimliklerin özeti.
Önemli
ACR eklenirken Microsoft Entra gruplarında gecikme sorunu yaşanıyor. AcrPull rolü bir Microsoft Entra grubuna verilirse ve kubelet kimliği RBAC yapılandırmasını tamamlamak için gruba eklenirse, RBAC grubunun etkili olması için bir gecikme olabilir. RBAC yapılandırmasının tamamlanmasını gerektiren bir otomasyon çalıştırıyorsanız geçici çözüm olarak Kendi kubelet kimliğinizi getirin seçeneğini kullanmanızı öneririz. Kullanıcı tarafından atanan bir kimliği önceden oluşturabilir, Microsoft Entra grubuna ekleyebilir ve ardından kimliği kubelet kimliği olarak kullanarak aks kümesi oluşturabilirsiniz. Bu, kubelet tarafından belirteç oluşturulmadan önce kimliğin Microsoft Entra grubuna eklenmesini sağlar ve bu da gecikme sorununu önler.
Not
Bu makale AKS ile ACR arasında otomatik kimlik doğrulamayı kapsar. Özel bir dış kayıt defterinden görüntü çekmeniz gerekiyorsa, görüntü çekme gizli dizisini kullanın.
Başlamadan önce
- Azure aboneliğinizde Sahip, Azure hesap yöneticisi veya Azure ortak yönetici rolüne ihtiyacınız vardır.
- Bu rollerden birine ihtiyaç duymamak için, aks'den ACR'nin kimliğini doğrulamak için mevcut yönetilen kimliği kullanabilirsiniz. Daha fazla bilgi için bkz . ACR'de kimlik doğrulamak için Azure yönetilen kimliği kullanma.
- Azure CLI kullanıyorsanız bu makale, Azure CLI 2.7.0 veya sonraki bir sürümünü çalıştırmanızı gerektirir. Sürümü bulmak için
az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. - Azure PowerShell kullanıyorsanız, bu makalede Azure PowerShell sürüm 5.9.0 veya sonraki bir sürümü kullanmanız gerekir. Sürümü bulmak için
Get-InstalledModule -Name Az
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse bkz. Azure PowerShell yükleme. - Terraform'un ACR yapılandırması için kullanılmasına yönelik örnekler ve söz dizimi Terraform başvurusunda bulunabilir.
Yeni ACR oluşturma
Henüz ACR'niz yoksa komutunu kullanarak
az acr create
bir ACR oluşturun. Aşağıdaki örnek, değişkeniniMYACR
ACR, mycontainerregistry adına ayarlar ve kayıt defterini oluşturmak için değişkenini kullanır. ACR adınız genel olarak benzersiz olmalı ve yalnızca küçük harfler kullanmalıdır.MYACR=mycontainerregistry az acr create --name $MYACR --resource-group myContainerRegistryResourceGroup --sku basic
Yeni bir AKS kümesi oluşturma ve mevcut bir ACR ile tümleştirme
Yeni bir AKS kümesi oluşturun ve parametresiyle komutunu kullanarak
az aks create
mevcut bir ACR ile tümleştirin--attach-acr
. Bu komut, aboneliğinizde var olan bir ACR'yi yetkilendirmenize olanak tanır ve yönetilen kimlik için uygun AcrPull rolünü yapılandırabilir.MYACR=mycontainerregistry az aks create --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACR
Bu komutun tamamlanması birkaç dakika sürebilir.
Not
AKS kümenizden farklı bir abonelikte bulunan bir ACR kullanıyorsanız veya ACR adı yerine ACR kaynak kimliğini kullanmayı tercih ediyorsanız, bunu aşağıdaki söz dizimini kullanarak yapabilirsiniz:
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
Mevcut AKS kümesi için ACR tümleştirmesini yapılandırma
Mevcut AKS kümesine ACR ekleme
parametresini ve acr-name veya acr-resource-id için geçerli bir değeri kullanarak
az aks update
mevcut bir ACR'yi mevcut aks kümesiyle--attach-acr
tümleştirin.# 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>
Not
komutu,
az aks update --attach-acr
ACR rol atamasını oluşturmak için komutunu çalıştıran kullanıcının izinlerini kullanır. Bu rol kubelet yönetilen kimliğine atanır. AKS yönetilen kimlikleri hakkında daha fazla bilgi için bkz . Yönetilen kimliklerin özeti.
AKS kümesinden ACR ayırma
parametresi ve acr-name veya acr-resource-id için geçerli bir değer ile
--detach-acr
komutunu kullanarakaz aks update
ACR ile AKS kümesi arasındaki tümleştirmeyi kaldırın.# 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>
ACR ve AKS ile çalışma
Görüntüyü ACR'nize aktarma
komutunu kullanarak Docker Hub'daki bir görüntüyü ACR'nize aktarın
az acr import
.az acr import --name <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
Örnek görüntüyü ACR'den AKS'ye dağıtma
komutunu kullanarak uygun AKS kimlik bilgilerine sahip olduğunuzdan
az aks get-credentials
emin olun.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Aşağıdaki örnek YAML'yi kullanarak acr-nginx.yaml adlı bir dosya oluşturun ve acr-name değerini ACR'nizin adıyla değiştirin.
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
komutunu kullanarak
kubectl apply
AKS kümenizde dağıtımı çalıştırın.kubectl apply -f acr-nginx.yaml
komutunu kullanarak
kubectl get pods
dağıtımı izleyin.kubectl get pods
Çıkış, aşağıdaki örnek çıktıda gösterildiği gibi çalışan iki pod göstermelidir:
NAME READY STATUS RESTARTS AGE nginx0-deployment-669dfc4d4b-x74kr 1/1 Running 0 20s nginx0-deployment-669dfc4d4b-xdpd6 1/1 Running 0 20s
Sorun giderme
- komutunu kullanarak
az aks check-acr
kayıt defterinin AKS kümesinden erişilebilir olduğunu doğrulayın. - ACR izleme hakkında daha fazla bilgi edinin.
- ACR durumu hakkında daha fazla bilgi edinin.
Azure Kubernetes Service