المصادقة باستخدام Azure Container Registry (ACR) من خدمة Azure Kubernetes (AKS)
عند استخدام Azure Container Registry (ACR) مع Azure Kubernetes Service (AKS)، تحتاج إلى إنشاء آلية مصادقة. يمكنك تكوين الأذونات المطلوبة بين ACR وAKS باستخدام مدخل Azure CLI أو Azure PowerShell أو Azure. توفر هذه المقالة أمثلة لتكوين المصادقة بين خدمات Azure هذه باستخدام Azure CLI أو Azure PowerShell.
يقوم تكامل AKS إلى ACR بتعيين دور AcrPull إلى هوية Microsoft Entra ID المدارة المقترنة بتجمع الوكلاء في مجموعة AKS الخاصة بك. لمزيد من المعلومات حول الهويات المدارة ل AKS، راجع ملخص الهويات المدارة.
هام
هناك مشكلة في زمن الانتقال مع مجموعات Microsoft Entra عند إرفاق ACR. إذا تم منح دور AcrPull إلى مجموعة Microsoft Entra وأضيفت هوية kubelet إلى المجموعة لإكمال تكوين RBAC، فقد يكون هناك تأخير قبل أن تصبح مجموعة RBAC سارية المفعول. إذا كنت تقوم بتشغيل التشغيل التلقائي الذي يتطلب اكتمال تكوين RBAC، نوصي باستخدام إحضار هوية kubelet الخاصة بك كحل بديل. يمكنك إنشاء هوية معينة من قبل المستخدم مسبقا، وإضافتها إلى مجموعة Microsoft Entra، ثم استخدام الهوية كهوية kubelet لإنشاء نظام مجموعة AKS. يضمن هذا إضافة الهوية إلى مجموعة Microsoft Entra قبل إنشاء رمز مميز بواسطة kubelet، ما يتجنب مشكلة زمن الانتقال.
إشعار
تغطي هذه المقالة المصادقة التلقائية بين AKS وACR. إذا كنت بحاجة إلى سحب صورة من سجل خارجي خاص، استخدم سر سحب صورة.
قبل البدء
- تحتاج إلى دور المالك أو مسؤول حساب Azure أو مسؤول Azure المشارك في اشتراك Azure.
- لتجنب الحاجة إلى أحد هذه الأدوار، يمكنك بدلا من ذلك استخدام هوية مدارة موجودة لمصادقة ACR من AKS. لمزيد من المعلومات، راجع استخدام هوية مدارة من Azure للمصادقة على ACR.
- إذا كنت تستخدم Azure CLI، تتطلب هذه المقالة تشغيل الإصدار 2.7.0 من Azure CLI أو أحدث. قم بتشغيل
az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - إذا كنت تستخدم Azure PowerShell، تتطلب هذه المقالة تشغيل Azure PowerShell الإصدار 5.9.0 أو أحدث. قم بتشغيل
Get-InstalledModule -Name Az
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت وحدة Azure PowerShell. - يمكن العثور على أمثلة وبناء جملة لاستخدام Terraform لتكوين ACR في مرجع Terraform.
إنشاء ACR جديد
إذا لم يكن لديك ACR بالفعل، فبادر بإنشاء واحد باستخدام
az acr create
الأمر . يعينMYACR
المثال التالي المتغير إلى اسم ACR، mycontainerregistry، ويستخدم المتغير لإنشاء السجل. يجب أن يكون اسم ACR الخاص بك فريدا عالميا وأن يستخدم أحرفا صغيرة فقط.MYACR=mycontainerregistry az acr create --name $MYACR --resource-group myContainerRegistryResourceGroup --sku basic
إنشاء نظام مجموعة AKS جديد والتكامل مع ACR موجود
إنشاء نظام مجموعة AKS جديد والتكامل مع ACR موجود باستخدام
az aks create
الأمر مع المعلمة--attach-acr
. يسمح لك هذا الأمر بتخويل ACR موجود في اشتراكك وتكوين دور AcrPull المناسب للهوية المدارة.MYACR=mycontainerregistry az aks create --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACR
قد يستغرق هذا الأمر عدة دقائق حتى يكتمل.
إشعار
إذا كنت تستخدم ACR موجودا في اشتراك مختلف عن مجموعة AKS الخاصة بك أو كنت تفضل استخدام معرف مورد ACR بدلا من اسم ACR، يمكنك القيام بذلك باستخدام بناء الجملة التالي:
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 موجود مع نظام مجموعة AKS موجود باستخدام
az aks update
الأمر مع المعلمة--attach-acr
وقيمة صالحة ل acr-name أو acr-resource-id.# 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>
إشعار
az aks update --attach-acr
يستخدم الأمر أذونات المستخدم الذي يقوم بتشغيل الأمر لإنشاء تعيين دور ACR. يتم تعيين هذا الدور إلى الهوية المدارة kubelet . لمزيد من المعلومات حول الهويات المدارة ل AKS، راجع ملخص الهويات المدارة.
فصل ACR من نظام مجموعة AKS
قم بإزالة التكامل بين ACR ومجموعة AKS باستخدام
az aks update
الأمر مع المعلمة--detach-acr
وقيمة صالحة ل acr-name أو acr-resource-id.# 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 وAKS
استيراد صورة إلى ACR
استيراد صورة من Docker Hub إلى ACR الخاص بك باستخدام
az acr import
الأمر .az acr import --name <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
نشر صورة العينة من ACR إلى AKS
تأكد من أن لديك بيانات اعتماد AKS المناسبة
az aks get-credentials
باستخدام الأمر .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
أنشئ ملفا يسمى acr-nginx.yaml باستخدام نموذج YAML التالي واستبدل acr-name باسم ACR الخاص بك.
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
الأمر .kubectl apply -f acr-nginx.yaml
مراقبة التوزيع باستخدام
kubectl get pods
الأمر .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
استكشاف الأخطاء وإصلاحها
- تحقق من أن السجل يمكن الوصول إليه من نظام مجموعة AKS باستخدام
az aks check-acr
الأمر . - تعرف على المزيد حول مراقبة ACR.
- تعرف على المزيد حول صحة ACR.
Azure Kubernetes Service