المصادقة باستخدام Azure Container Registry من Azure Kubernetes Service
عندما تستخدم Azure Container Registry (ACR) مع Azure Kubernetes Service (AKS)، يجب إنشاء آلية مصادقة. يتم تنفيذ هذه العملية كجزء من تجربة CLI وPowerShell والمدخل من خلال منح الأذونات المطلوبة إلى ACR الخاص بك. توفر هذه المقالة أمثلة لتكوين المصادقة بين هاتين الخدمتين في Azure.
يمكنك إعداد تكامل AKS إلى ACR في بضعة أوامر بسيطة باستخدام Azure CLI أو Azure PowerShell. يعين هذا التكامل دور AcrPull للهوية المدارة المرتبطة بمجموعة AKS.
ملاحظة
تغطي هذه المقالة المصادقة التلقائية بين AKS وACR. إذا كنت بحاجة إلى سحب صورة من سجل خارجي خاص، استخدم سر سحب صورة.
قبل أن تبدأ
تتطلب هذه الأمثلة:
- Owner, Azure account administrator, or Azure co-administrator role on the Azure subscription
- إصدار Azure CLI 2.7.0 أو إصدار أحدث
لتجنب الحاجة إلى دور المالك أو مسؤول حساب Azure أو المسؤول المشارك في Azure ، يمكنك استخدام هوية مدارة موجودة لمصادقة ACR من AKS. لمزيد من المعلومات، راجع استخدام هوية Azure المدارة للمصادقة على Azure Container Registry.
إنشاء نظام مجموعة AKS جديد مع تكامل ACR
يمكنك إعداد تكامل AKS وACR أثناء الإنشاء الأولي لنظام مجموعة AKS الخاصة بك. للسماح لنظام مجموعة AKS بالتفاعل مع ACR، يتم استخدام هوية Azure Active Directory المدارة. يتيح لك الأمر التالي تخويل ACR موجود في اشتراكك وتكوين دور ACRPull المناسب للهوية المدارة. توفير قيم صالحة للمعلمات أدناه.
# 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
بدلاً من ذلك، يمكنك تحديد اسم ACR باستخدام معرف مورد ACR الذي يحتوي على التنسيق التالي:
/subscriptions/\<subscription-id\>/resourceGroups/\<resource-group-name\>/providers/Microsoft.ContainerRegistry/registries/\<name\>
ملاحظة
إذا كنت تستخدم ACR الموجود في اشتراك مختلف عن نظام مجموعة AKS الخاص بك، فاستخدم معرف مورد ACR عند الإرفاق أو الفصل من نظام مجموعة AKS.
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
قد تستغرق هذه الخطوة عدة دقائق حتى تكتمل.
تكوين تكامل ACR لنظم مجموعات AKS الموجودة
دمج ACR موجود مع نظم مجموعات AKS الموجودة عن طريق توفير قيم صالحة لـ acr-name أو acr-resource-id كما هو موضح أدناه.
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
أو،
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-resource-id>
ملاحظة
يستخدم تشغيل az aks update --attach-acr أذونات المستخدم الذي يقوم بتشغيل الأمر لإنشاء دور تعيين ACR. تم تعيين هذا الدور للهوية المدارة kubelet. لمزيد من المعلومات حول الهويات المدارة لـ AKS، راجع ملخص الهويات المدارة.
يمكنك أيضاً إزالة التكامل بين ACR و نظام مجموعة AKS مع ما يلي
az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-name>
أو
az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-resource-id>
العمل مع ACR & AKS
استيراد صورة إلى ACR
استيراد صورة من مركز docker إلى ACR الخاص بك عن طريق تشغيل ما يلي:
az acr import -n <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
نشر صورة العينة من ACR إلى AKS
تأكد من حصولك على بيانات اعتماد AKS المناسبة
az aks get-credentials -g myResourceGroup -n myAKSCluster
قم بإنشاء ملف يسمى acr-nginx.yaml يحتوي على ما يلي. استبدال اسم المورد السجل الخاص بك بـ acr-name. مثال: 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
بعد ذلك، قم بتشغيل هذا النشر في نظام مجموعة AKS:
kubectl apply -f acr-nginx.yaml
يمكنك مراقبة النشر عن طريق تشغيل:
kubectl get pods
يجب أن يكون لديك جرابان قيد التشغيل.
NAME READY STATUS RESTARTS AGE
nginx0-deployment-669dfc4d4b-x74kr 1/1 Running 0 20s
nginx0-deployment-669dfc4d4b-xdpd6 1/1 Running 0 20s
استكشاف الأخطاء وإصلاحها
- قم بتشغيل الأمر az aks check-acr للتحقق من إمكانية الوصول إلى السجل من نظام مجموعة AKS.
- تعرف على المزيد حول ACR Monitoring
- تعرف على المزيد حول ACR Health