المصادقة باستخدام 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