التوزيع على مثيلات حاوية Azure من سجل حاويات Azure باستخدام مبدأ الخدمة

Azure Container Registry عبارة عن خدمة تسجيل حاوية مُدارة تستند إلى Azure وتُستخدم لتخزين صور حاوية Docker الخاصة. توضح هذه المقالة كيفية سحب صور الحاوية المخزنة في سجل حاوية Azure عند النشر إلى مثيلات حاوية Azure. إحدى الطرق لتكوين الوصول إلى السجل هي إنشاء كيان خدمة وكلمة مرور Microsoft Entra وتخزين بيانات اعتماد تسجيل الدخول في مخزن مفاتيح Azure.

المتطلبات الأساسية

سجل حاوية Azure: أنت بحاجة إلى سجل حاوية Azure - وصورة حاوية واحدة على الأقل في التسجيل - لإكمال الخطوات الواردة في هذه المقالة. إذا كنت بحاجة إلى سجل، فراجع إنشاء سجل حاوية باستخدام Azure CLI.

Azure CLI: تستخدم أمثلة سطر الأوامر في هذه المقالة Azure CLI ويتم تنسيقها من أجل Bash shell. يمكنك تثبيت Azure CLI محلياً أو باستخدام Azure Cloud Shell.

القيود

تكوين مصادقة السجل

في سيناريو الإنتاج حيث توفر الوصول إلى الخدمات والتطبيقات "دون رؤوس"، يوصى بتكوين الوصول إلى السجل باستخدام كيان الخدمة. يسمح لك مدير الخدمة بتوفير اAzure role-based access control (Azure RBAC) لصور حاويتك. فيمكنك على سبيل المثال تكوين كيان خدمة مع وصول السحب فقط إلى السجل.

إن Azure Container Registry يوفر خيارات مصادقة إضافية.

في القسم التالي، يمكنك إنشاء مخزن مفاتيح Azure وأساسي للخدمة، وتخزين بيانات اعتماد مدير الخدمة في المخزن.

إنشاء مخزن رئيسي

إذا لم يكن لديك بالفعل مخزن في Azure Key Vault، فأنشئ مخزناً باستخدام Azure CLI باستخدام الأوامر التالية.

حدِّث المتغير RES_GROUPمتغير باسم مجموعة موارد موجودة لإنشاء مخزن المفاتيح، وACR_NAME باسم سجل الحاوية الخاص بك. للإيجاز، تفترض الأوامر الواردة في هذه المقالة أنه تم إنشاء كل من السجل وخزانة المفاتيح ومثيلات الحاوية في نفس مجموعة الموارد.

حدد اسماً لمخزن المفاتيح الجديد الخاص بك في AKV_NAME. يجب أن يكون اسم المخزن فريداً داخل Azure ويجب أن يكون طوله من 3 إلى 24 حرفاً أبجديّاً رقميّاً، ويبدأ بحرف وينتهي بحرف أو رقم، ولا يمكن أن يحتوي على واصلات متتالية.

RES_GROUP=myresourcegroup # Resource Group name
ACR_NAME=myregistry       # Azure Container Registry registry name
AKV_NAME=mykeyvault       # Azure Key Vault vault name

az keyvault create -g $RES_GROUP -n $AKV_NAME

إنشاء أساس الخدمة وتخزين بيانات الاعتماد

الآن قم بإنشاء مدير خدمة وتخزين بيانات اعتماده في خزينة المفاتيح الخاصة بك.

يستخدم الأمر التالي az ad sp create-for-rbac لإنشاء كيان الخدمة، والأمر az keyvault secret set لتخزين كلمة مرور كيان الخدمة في المخزن. تأكد من تدوين appId الخاص بكيان الخدمة عند الإنشاء.

# Create service principal
az ad sp create-for-rbac \
  --name http://$ACR_NAME-pull \
  --scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
  --role acrpull

SP_ID=xxxx # Replace with your service principal's appId

# Store the registry *password* in the vault
az keyvault secret set \
  --vault-name $AKV_NAME \
  --name $ACR_NAME-pull-pwd \
  --value $(az ad sp show --id $SP_ID --query password --output tsv)

تقوم الوسيطة --role في الأمر السابق، يقوم الأمر بتهيئة كيان الخدمة باستخدام الدور acrpull، والذي يمنحه حق الوصول إلى السجل فقط. لمنح كل من الدفع والسحب، قم بتغيير الوسيطة --role argument إلى acrpush.

ثم بعد ذلك، قم بتخزين appId في المزن، وهو اusername الذي تمرره إلى Azure Container Registry للمصادقة.

# Store service principal ID in vault (the registry *username*)
az keyvault secret set \
    --vault-name $AKV_NAME \
    --name $ACR_NAME-pull-usr \
    --value $(az ad sp show --id $SP_ID --query appId --output tsv)

لقد أنشأت Azure Key Vault وخزنت فيه سرين من أسرارك:

  • $ACR_NAME-pull-usr: المعرف الرئيسي للخدمة، لاستخدامه كسجل الحاوية username.
  • $ACR_NAME-pull-pwd: كلمة المرور الرئيسية للخدمة، لاستخدامها كسجل للحاوية password.

يمكنك الآن الرجوع إلى تلك الأسرار بالاسم عندما تسحب أنت أو التطبيقات والخدمات الصور من التسجيل.

انشر الحاوية باستخدام Azure CLI

الآن وبعد أن تم تخزين بيانات الاعتماد الأساسية للخدمة في أسرار Azure Key Vault، يمكن لتطبيقاتك وخدماتك استخدامها للوصول إلى السجل الخاص بك.

احصل أولّاً على اسم خادم تسجيل الدخول إلى السجل باستخدام الأمر az acr show. اسم خادم تسجيل الدخول كله أحرف صغيرة ويشبه myregistry.azurecr.io.

ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RES_GROUP --query "loginServer" --output tsv)

قم بتنفيذ الأمر التالي az container create لنشر مثيل حاوية. يستخدم الأمر بيانات اعتماد مدير الخدمة المخزنة في Azure Key Vault للمصادقة على سجل الحاوية، ويفترض أنك دفعت مسبقاً صورة aci-helloworld إلى السجل الخاص بك. قم بتحديث قيمة --image إذا كنت ترغب في استخدام صورة مختلفة من السجل الخاص بك.

az container create \
    --name aci-demo \
    --resource-group $RES_GROUP \
    --image $ACR_LOGIN_SERVER/aci-helloworld:v1 \
    --registry-login-server $ACR_LOGIN_SERVER \
    --registry-username $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-usr --query value -o tsv) \
    --registry-password $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-pwd --query value -o tsv) \
    --dns-name-label aci-demo-$RANDOM \
    --query ipAddress.fqdn

يجب أن تكون قيمة --dns-name-label فريدة داخل Azure، لذلك يقوم الأمر السابق بإلحاق رقم عشوائي بتسمية اسم DNS الخاصة بالحاوية. يُظهر الناتج من الأمر اسم المجال المؤهل تماماً والخاص بالحاوية (FQDN)، على سبيل المثال:

"aci-demo-25007.eastus.azurecontainer.io"

بمخزون بدء الحاوية بنجاح، يمكنك الانتقال إلى FQDN الخاص بها في متصفحك للتحقق من تشغيل التطبيق بنجاح.

انشر باستخدام قالب Azure Resource Manager

يمكنك تحديد خصائص سجل حاوية Azure في قالب Azure Resource Manager بتضمين الخاصية imageRegistryCredentials في تعريف مجموعة الحاوية. على سبيل المثال، يمكنك تحديد بيانات اعتماد التسجيل مباشرة:

[...]
"imageRegistryCredentials": [
  {
    "server": "imageRegistryLoginServer",
    "username": "imageRegistryUsername",
    "password": "imageRegistryPassword"
  }
]
[...]

للحصول على إعدادات مجموعة الحاويات الكاملة، راجع مرجع نموذج Azure Resource Manager.

للحصول على تفاصيل حول الرجوع إلى أسرار Azure Key Vault في قالب Resource Manager، راجع استخدام Azure Key Vault لتمرير قيمة المعلمة الآمنة أثناء التوزيع.

انشر باستخدام مدخل Microsoft Azure

إذا كنت تحتفظ بصور حاوية في سجل حاوية Azure، فيمكنك بسهولة إنشاء حاوية في مثيلات حاوية Azure باستخدام مدخل Microsoft Azure. عند استخدام البوابة لنشر طبعة حاوية من سجل حاوية، يجب تمكين admin accountالخاص بالسجل. تم تصميم حساب المسؤول لمستخدم واحد للوصول إلى السجل، وذلك بشكل أساسي لأغراض الاختبار.

  1. في مدخل Microsoft Azure، انتقل إلى سجل الحاوية.

  2. لتأكيد تمكين حساب المسؤول، حدد Access keys وضمن Admin user حدد Enable.

  3. حدد Repositories، ثم حدد المستودع الذي تريد التوزيع منه، وانقر بزر الماوس الأيمن فوق علامة صورة الحاوية التي تريد توزيعها، وحدد Run instance.

  4. أدخل اسماً للحاوية واسماً لمجموعة الموارد. يمكنك أيضاً تغيير القيم الافتراضية إذا كنت ترغب في ذلك.

    Create menu for Azure Container Instances

  5. بمخزون اكتمال التوزيع، يمكنك الانتقال إلى مجموعة الحاوية من جزء الإشعارات للعثور على عنوان IP الخاص بها وخصائص أخرى.

    Details view for Azure Container Instances container group

الخطوات التالية

لمزيد من المعلومات حول مصادقة Azure Container Registry، راجع المصادقة باستخدام سجل حاوية Azure.