التوزيع على مثيلات حاوية 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.
القيود
- لا تدعم حاويات Windows سحب الصور المدارة التي تم مصادقة الهوية المعينة من قبل النظام باستخدام ACR، المعينة من قبل المستخدم فقط.
تكوين مصادقة السجل
في سيناريو الإنتاج حيث توفر الوصول إلى الخدمات والتطبيقات "بدون عنوان"، نوصي بتكوين الوصول إلى السجل باستخدام كيان الخدمة. يسمح لك مدير الخدمة بتوفير ا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 وقمت بتخزين سرين فيه:
$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الخاص بالسجل. تم تصميم حساب المسؤول لمستخدم واحد للوصول إلى السجل، وذلك بشكل أساسي لأغراض الاختبار.
في مدخل Microsoft Azure، انتقل إلى سجل الحاوية.
لتأكيد تمكين حساب المسؤول، حدد Access keys وضمن Admin user حدد Enable.
حدد Repositories، ثم حدد المستودع الذي تريد التوزيع منه، وانقر بزر الماوس الأيمن فوق علامة صورة الحاوية التي تريد توزيعها، وحدد Run instance.
أدخل اسماً للحاوية واسماً لمجموعة الموارد. يمكنك أيضاً تغيير القيم الافتراضية إذا كنت ترغب في ذلك.
بمخزون اكتمال التوزيع، يمكنك الانتقال إلى مجموعة الحاوية من جزء الإشعارات للعثور على عنوان IP الخاص بها وخصائص أخرى.
الخطوات التالية
لمزيد من المعلومات حول مصادقة Azure Container Registry، راجع المصادقة باستخدام سجل حاوية Azure.