سحب صورة Azure Container Apps بهوية مدارة

يمكنك سحب الصور من المستودعات الخاصة في Microsoft Azure Container Registry باستخدام الهويات المدارة للمصادقة لتجنب استخدام بيانات الاعتماد الإدارية.

يمكنك استخدام هوية مدارة معينة من قبل المستخدم أو معينة من قبل النظام للمصادقة مع Azure Container Registry.

  • باستخدام هوية مدارة يعينها المستخدم، يمكنك إنشاء الهوية وإدارتها خارج Azure Container Apps. يمكن تعيينه إلى موارد Azure متعددة، بما في ذلك Azure Container Apps.
  • باستخدام هوية مدارة معينة من قبل النظام، يتم إنشاء الهوية وإدارتها بواسطة Azure Container Apps. يتم ربطه بتطبيق الحاوية الخاص بك ويتم حذفه عند حذف تطبيقك.
  • عندما يكون ذلك ممكنا، يجب استخدام هوية مدارة معينة من قبل المستخدم لسحب الصور.

تتحقق تطبيقات الحاوية من وجود إصدار جديد من الصورة كلما بدأت الحاوية. في مصطلحات Docker أو Kubernetes، تعين Container Apps نهج سحب صورة كل حاوية إلى always.

توضح هذه المقالة كيفية استخدام مدخل Microsoft Azure لتكوين تطبيق الحاوية لاستخدام الهويات المدارة المعينة من قبل المستخدم والمخصصة من قبل النظام لسحب الصور من مستودعات Azure Container Registry الخاصة.

الهوية المُدارة التي يعيّنها المُستخدم

تصف الخطوات التالية عملية تكوين تطبيق الحاوية لاستخدام هوية مدارة يعينها المستخدم لسحب الصور من مستودعات Azure Container Registry الخاصة.

  1. إنشاء تطبيق حاوية باستخدام صورة عامة.
  2. أضف الهوية المدارة المعينة من قبل المستخدم إلى تطبيق الحاوية.
  3. إنشاء مراجعة تطبيق حاوية مع صورة خاصة والهوية المدارة المعينة من قبل المستخدم.

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

  • حساب Azure مع اشتراك نشط.

  • سجل حاويات Azure خاص يحتوي على صورة تريد سحبها.

  • يجب أن يسمح Azure Container Registry الخاص بك بالرموز المميزة لجمهور ARM للمصادقة من أجل استخدام الهوية المدارة لسحب الصور. استخدم الأمر التالي للتحقق مما إذا كان يسمح لرموز ARM المميزة بالوصول إلى ACR الخاص بك:

    az acr config authentication-as-arm show -r <REGISTRY>
    

    إذا كانت رموز ARM المميزة غير مسموح بها، يمكنك السماح بها باستخدام الأمر التالي:

    az acr config authentication-as-arm update -r <REGISTRY> --status enabled
    
  • إنشاء هوية مُدارة يُعينها المستخدم. لمزيد من المعلومات، راجع إنشاء هوية مدارة يعينها المستخدم.

إنشاء تطبيق حاويات

استخدم الخطوات التالية لإنشاء تطبيق حاوية باستخدام صورة التشغيل السريع الافتراضية.

  1. انتقل إلى الصفحة الرئيسية للمدخل.

  2. ابحث عن Container Apps في شريط البحث العلوي.

  3. حدد Container Apps في نتائج البحث.

  4. حدد زر إنشاء.

  5. في علامة التبويب أساسيات، قم بالإجراءات التالية.

    الإعدادات الإجراء
    الاشتراك حدد اشتراك Azure الخاص بك.
    مجموعة الموارد حدد resource group موجودة أو أنشئ مجموعة جديدة.
    اسم تطبيق الحاوية أدخل اسم تطبيق الحاوية.
    Location تحديد الموقع.
    إنشاء بيئة تطبيق الحاوية إنشاء بيئة جديدة أو تحديد بيئة موجودة.
  6. حدد الزر Review + Create في أسفل صفحة Create Container App.

  7. حدد الزر Create في أسفل نافذة Create Container App.

السماح ببضع دقائق حتى ينتهي نشر تطبيق الحاوية. عند اكتمال النشر، حدد Go to resource.

إضافة الهوية المدارة المعينة من قبل المستخدم

  1. حدد Identity من القائمة اليسرى.
  2. حدد علامة التبويب تعيين المستخدم.
  3. حدد زر إضافة هوية مدارة معينة من قبل المستخدم.
  4. حدد Subscription الخاص بك.
  5. حدد الهوية التي أنشأتها.
  6. حدد إضافة.

إنشاء مراجعة تطبيق حاوية

إنشاء مراجعة تطبيق حاوية مع صورة خاصة والهوية المدارة المعينة من قبل النظام.

  1. حدد إدارة المراجعة من القائمة اليمنى.

  2. حدد إنشاء مراجعة جديدة.

  3. حدد صورة الحاوية من جدول صورة الحاوية.

  4. أدخل المعلومات في مربع الحوار تحرير حاوية .

    الحقل الإجراء
    الاسم أدخل اسما للحاوية.
    مصدر الصورة حدد Azure Container Registry.
    المصادقة حدد الهوية المدارة.
    الهوية حدد الهوية التي أنشأتها من القائمة المنسدلة.
    التسجيل حدد السجل الذي تريد استخدامه من القائمة المنسدلة.
    الصورة أدخل اسم الصورة التي تريد استخدامها.
    علامة الصورة أدخل اسم وعلامة الصورة التي تريد سحبها.

    لقطة شاشة لمربع حوار تحرير حاوية إدخال هوية مدارة معينة من قبل المستخدم.

    إشعار

    إذا لم يتم تمكين بيانات الاعتماد الإدارية على سجل Azure Container Registry، فسترى رسالة تحذير معروضة وستحتاج إلى إدخال اسم الصورة ومعلومات العلامة يدويا.

  5. حدد حفظ.

  6. حدد Create من صفحة Create and deploy new revision .

سيتم إنشاء مراجعة جديدة ونشرها. سيحاول المدخل تلقائيا إضافة acrpull الدور إلى الهوية المدارة المعينة من قبل المستخدم. إذا لم تتم إضافة الدور، يمكنك إضافته يدويا.

يمكنك التحقق من إضافة الدور عن طريق التحقق من الهوية من جزء الهوية في صفحة تطبيق الحاوية.

  1. حدد Identity من القائمة اليسرى.
  2. حدد علامة التبويب تعيين المستخدم.
  3. حدد الهوية المدارة المعينة من قبل المستخدم.
  4. حدد تعيينات دور Azure من القائمة في صفحة مورد الهوية المدارة.
  5. تحقق من تعيين acrpull الدور إلى الهوية المدارة المعينة من قبل المستخدم.

إنشاء تطبيق حاوية باستخدام صورة خاصة

إذا كنت لا تريد البدء بإنشاء تطبيق حاوية باستخدام صورة عامة، يمكنك أيضا القيام بما يلي.

  1. إنشاء هوية مُدارة يُعينها المستخدم.
  2. acrpull أضف الدور إلى الهوية المدارة المعينة من قبل المستخدم.
  3. إنشاء تطبيق حاوية مع صورة خاصة والهوية المدارة المعينة من قبل المستخدم.

هذا الأسلوب نموذجي في سيناريوهات البنية الأساسية كتعلم برمجي (IaC).

تنظيف الموارد

إذا كنت لن تستمر في استخدام هذا التطبيق، يمكنك حذف مثيل Azure Container Apps وكافة الخدمات المقترنة عن طريق إزالة مجموعة الموارد.

تحذير

سيؤدي حذف مجموعة الموارد إلى حذف كافة الموارد في المجموعة. إذا كانت لديك موارد أخرى في المجموعة، حذفها أيضا. إذا كنت ترغب في الاحتفاظ بالموارد، يمكنك حذف مثيل تطبيق الحاوية وبيئة تطبيق الحاوية.

  1. حدد مجموعة الموارد الخاصة بك من قسم Overview .
  2. حدد الزر حذف مجموعة الموارد في أعلى نظرة عامة على مجموعة الموارد.
  3. أدخل اسم مجموعة الموارد في مربع حوار التأكيد.
  4. حدد حذف. قد تستغرق عملية حذف مجموعة الموارد بضع دقائق حتى تكتمل.

الهوية المُدارة التي يُعيّنها النظام

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

الطريقة لتكوين هوية مدارة معينة من قبل النظام في مدخل Microsoft Azure هي:

  1. إنشاء تطبيق حاوية باستخدام صورة عامة.
  2. إنشاء مراجعة تطبيق حاوية مع صورة خاصة والهوية المدارة المعينة من قبل النظام.

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

إنشاء تطبيق حاويات

اتبع هذه الخطوات لإنشاء تطبيق حاوية باستخدام صورة التشغيل السريع الافتراضية.

  1. انتقل إلى الصفحة الرئيسية للمدخل.

  2. ابحث عن Container Apps في شريط البحث العلوي.

  3. حدد Container Apps في نتائج البحث.

  4. حدد زر إنشاء.

  5. في علامة التبويب أساسيات، قم بالإجراءات التالية.

    الإعدادات الإجراء
    الاشتراك حدد اشتراك Azure الخاص بك.
    مجموعة الموارد حدد resource group موجودة أو أنشئ مجموعة جديدة.
    اسم تطبيق الحاوية أدخل اسم تطبيق الحاوية.
    Location تحديد الموقع.
    إنشاء بيئة تطبيق الحاوية إنشاء بيئة جديدة أو تحديد بيئة موجودة.
  6. حدد الزر Review + Create في أسفل صفحة Create Container App.

  7. حدد الزر Create في أسفل صفحة Create Container App.

السماح ببضع دقائق حتى ينتهي نشر تطبيق الحاوية. عند اكتمال النشر، حدد Go to resource.

تحرير مراجعة ونشرها

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

  1. الحاويات من القائمة الجانبية على اليسار.

  2. حدد تحرير ونشر.

  3. حدد حاوية simple-hello-world-container من القائمة.

    الإعدادات الإجراء
    الاسم أدخل اسم تطبيق الحاوية.
    مصدر الصورة حدد Azure Container Registry.
    المصادقة حدد الهوية المدارة.
    الهوية حدد النظام المعين.
    التسجيل أدخل اسم التسجيل.
    الصورة أدخل اسم الصورة.
    علامة الصورة أدخل العلامة.

    لقطة شاشة تحرير حاوية بهوية مدارة يعينها النظام.

    إشعار

    إذا لم يتم تمكين بيانات الاعتماد الإدارية على سجل Azure Container Registry، فسترى رسالة تحذير معروضة وستحتاج إلى إدخال اسم الصورة ومعلومات العلامة يدويا.

  4. حدد حفظ في أسفل الصفحة.

  5. حدد Create في أسفل صفحة Create and deploy new revision

  6. بعد بضع دقائق، حدد تحديث في صفحة إدارة المراجعة لمشاهدة المراجعة الجديدة.

سيتم إنشاء مراجعة جديدة ونشرها. سيحاول المدخل تلقائيا إضافة acrpull الدور إلى الهوية المدارة المعينة من قبل النظام. إذا لم تتم إضافة الدور، يمكنك إضافته يدويا.

يمكنك التحقق من إضافة الدور عن طريق التحقق من الهوية في جزء الهوية من صفحة تطبيق الحاوية.

  1. حدد Identity من القائمة اليسرى.
  2. حدد علامة التبويب System assigned.
  3. حدد تعيينات دور Azure.
  4. تحقق من تعيين acrpull الدور إلى الهوية المدارة المعينة من قبل النظام.

تنظيف الموارد

إذا كنت لن تستمر في استخدام هذا التطبيق، يمكنك حذف مثيل Azure Container Apps وكافة الخدمات المقترنة عن طريق إزالة مجموعة الموارد.

تحذير

سيؤدي حذف مجموعة الموارد إلى حذف كافة الموارد في المجموعة. إذا كانت لديك موارد أخرى في المجموعة، حذفها أيضا. إذا كنت ترغب في الاحتفاظ بالموارد، يمكنك حذف مثيل تطبيق الحاوية وبيئة تطبيق الحاوية.

  1. حدد مجموعة الموارد الخاصة بك من قسم Overview .
  2. حدد الزر حذف مجموعة الموارد في أعلى نظرة عامة على مجموعة الموارد.
  3. أدخل اسم مجموعة الموارد في مربع حوار التأكيد.
  4. حدد حذف. قد تستغرق عملية حذف مجموعة الموارد بضع دقائق حتى تكتمل.

توضح هذه المقالة كيفية تكوين تطبيق الحاوية لاستخدام الهويات المدارة لسحب الصور من مستودع Azure Container Registry الخاص باستخدام Azure CLI وAzure PowerShell.

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

المتطلب الأساسي ‏‏الوصف
حساب Azure حساب Azure مع اشتراك نشط. إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا.
Azure CLI إذا كنت تستخدم Azure CLI، فقم بتثبيت Azure CLI على جهازك المحلي.
Azure PowerShell إذا كنت تستخدم PowerShell، فقم بتثبيت Azure PowerShell على جهازك المحلي. تأكد من تثبيت أحدث إصدار من الوحدة النمطية Az.App عن طريق تشغيل الأمر Install-Module -Name Az.App.
Azure Container Registry سجل حاويات Azure خاص يحتوي على صورة تريد سحبها. التشغيل السريع: إنشاء سجل حاوية خاص باستخدام Azure CLI أو التشغيل السريع: إنشاء سجل حاوية خاص باستخدام Azure PowerShell

الإعداد

لتسجيل الدخول إلى Azure من CLI، قم بتشغيل الأمر التالي واتبع المطالبات لإكمال عملية المصادقة.

az login

للتأكد من تشغيل أحدث إصدار من CLI، قم بتشغيل أمر الترقية.

az upgrade

بعد ذلك، قم بتثبيت أو تحديث ملحق Azure Container Apps ل CLI.

إذا تلقيت أخطاء حول المعلمات المفقودة عند تشغيل az containerapp الأوامر في Azure CLI أو cmdlets من Az.App الوحدة النمطية في Azure PowerShell، فتأكد من تثبيت أحدث إصدار من ملحق Azure Container Apps.

az extension add --name containerapp --upgrade

إشعار

بدءا من مايو 2024، لم تعد ملحقات Azure CLI تمكن ميزات المعاينة بشكل افتراضي. للوصول إلى ميزات معاينة تطبيقات الحاوية، قم بتثبيت ملحق Container Apps باستخدام --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

الآن بعد تثبيت الملحق أو الوحدة النمطية Microsoft.App الحالية، قم بتسجيل مساحات الأسماء و Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

بعد ذلك، قم بتعيين متغيرات البيئة التالية. استبدل العناصر النائبة محاطة <> بقيمك.

RESOURCE_GROUP="<YOUR_RESOURCE_GROUP_NAME>"
LOCATION="<YOUR_LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<YOUR_ENVIRONMENT_NAME>"
REGISTRY_NAME="<YOUR_REGISTRY_NAME>"
CONTAINERAPP_NAME="<YOUR_CONTAINERAPP_NAME>"
IMAGE_NAME="<YOUR_IMAGE_NAME>"

إذا كان لديك بالفعل مجموعة موارد، فتخط هذه الخطوة. وإلا، قم بإنشاء مجموعة موارد.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

إنشاء بيئة تطبيق حاوية

إذا لم تكن البيئة موجودة، فقم بتشغيل الأمر التالي:

لإنشاء البيئة، قم بتشغيل الأمر التالي:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

تابع إلى القسم التالي لتكوين الهوية المدارة المعينة من قبل المستخدم أو انتقل إلى قسم الهوية المدارة المعينة من قبل النظام.

الهوية المُدارة التي يعيّنها المُستخدم

اتبع هذا الإجراء لتكوين الهوية المدارة المعينة من قبل المستخدم:

  1. إنشاء هوية مُدارة يُعينها المستخدم.
  2. إذا كنت تستخدم PowerShell، فعين acrpull دورا للسجل الخاص بك إلى الهوية المدارة. يقوم Azure CLI تلقائيا بإجراء هذا التعيين.
  3. إنشاء تطبيق حاوية مع الصورة من السجل الخاص الذي تمت مصادقته مع الهوية المدارة المعينة من قبل المستخدم.

إنشاء هوية مُدارة يعينها المستخدم

إنشاء هوية مُدارة يُعينها المستخدم. قبل تشغيل الأمر التالي، استبدل <العناصر النائبة> باسم الهوية المدارة.

IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP

احصل على معرف مورد الهوية.

IDENTITY_ID=`az identity show \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP \
  --query id`

إنشاء تطبيق حاويات

إنشاء تطبيق الحاوية الخاص بك مع صورتك من السجل الخاص المصادق عليه بالهوية.

انسخ معرف مورد الهوية للصقه في العناصر النائبة <IDENTITY_ID> في الأمر أدناه. إذا لم تكن latestعلامة الصورة الخاصة بك ، فاستبدل "الأحدث" بالعلامة الخاصة بك.

echo $IDENTITY_ID
az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --user-assigned <IDENTITY_ID> \
  --registry-identity <IDENTITY_ID> \
  --registry-server "$REGISTRY_NAME.azurecr.io" \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

تنظيف

تنبيه

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

az group delete --name $RESOURCE_GROUP

الهوية المُدارة التي يُعيّنها النظام

لتكوين هوية معينة من قبل النظام، ستحتاج إلى:

  1. إنشاء تطبيق حاوية باستخدام صورة عامة.
  2. تعيين هوية مدارة معينة من قبل النظام لتطبيق الحاوية.
  3. تحديث تطبيق الحاوية بالصورة الخاصة.

إنشاء تطبيق حاويات

إنشاء حاوية مع صورة عامة.

az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external

تحديث تطبيق الحاوية

قم بتحديث تطبيق الحاوية بالصورة من سجل الحاوية الخاص بك وأضف هوية معينة من قبل النظام لمصادقة سحب Azure Container Registry. يمكنك أيضا تضمين إعدادات أخرى ضرورية لتطبيق الحاوية، مثل إعدادات الدخول والمقياس و Dapr.

تعيين خادم التسجيل وتشغيل الهوية المدارة المعينة من قبل النظام في تطبيق الحاوية.

az containerapp registry set \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --identity system \
  --server "$REGISTRY_NAME.azurecr.io"
az containerapp update \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

تنظيف

تنبيه

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

az group delete --name $RESOURCE_GROUP

توضح هذه المقالة كيفية استخدام قالب Bicep لتكوين تطبيق الحاوية لاستخدام الهويات المدارة المعينة من قبل المستخدم لسحب الصور من مستودعات Azure Container Registry الخاصة.

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

الإعداد

لتسجيل الدخول إلى Azure من CLI، قم بتشغيل الأمر التالي واتبع المطالبات لإكمال عملية المصادقة.

az login

للتأكد من تشغيل أحدث إصدار من CLI، قم بتشغيل أمر الترقية.

az upgrade

بعد ذلك، قم بتثبيت أو تحديث ملحق Azure Container Apps ل CLI.

إذا تلقيت أخطاء حول المعلمات المفقودة عند تشغيل az containerapp الأوامر في Azure CLI أو cmdlets من Az.App الوحدة النمطية في Azure PowerShell، فتأكد من تثبيت أحدث إصدار من ملحق Azure Container Apps.

az extension add --name containerapp --upgrade

إشعار

بدءا من مايو 2024، لم تعد ملحقات Azure CLI تمكن ميزات المعاينة بشكل افتراضي. للوصول إلى ميزات معاينة تطبيقات الحاوية، قم بتثبيت ملحق Container Apps باستخدام --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

الآن بعد تثبيت الملحق أو الوحدة النمطية Microsoft.App الحالية، قم بتسجيل مساحات الأسماء و Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

تثبيت Bicep

إذا لم يكن Bicep مثبتا لديك، فيمكنك تثبيته كما يلي.

az bicep install

إذا كان لديك Bicep مثبت، فتأكد من أن لديك أحدث إصدار.

az bicep upgrade

لمزيد من المعلومات، راجع تثبيت Bicep.

تعيين متغيرات البيئة

بعد ذلك، قم بتعيين متغيرات البيئة التالية. استبدل العناصر النائبة محاطة <> بقيمك.

RESOURCE_GROUP="<RESOURCE_GROUP_NAME>"
LOCATION="<LOCATION>"
REGISTRY_NAME="<REGISTRY_NAME>"
IMAGE_NAME="<IMAGE_NAME>"
IMAGE_TAG="<IMAGE_TAG>"
BICEP_TEMPLATE="<BICEP_TEMPLATE>"
CONTAINERAPPS_ENVIRONMENT="<ENVIRONMENT_NAME>"
CONTAINER_NAME="<CONTAINER_NAME>"
CONTAINERAPP_NAME="<CONTAINERAPP_NAME>"
USER_ASSIGNED_IDENTITY_NAME="<USER_ASSIGNED_IDENTITY_NAME>"
LOG_ANALYTICS_WORKSPACE_NAME="<LOG_ANALYTICS_WORKSPACE_NAME>"
APP_INSIGHTS_NAME="<APP_INSIGHTS_NAME>"
ACR_PULL_DEFINITION_ID="7f951dda-4ed3-4680-a7ca-43fe172d538d"

AcrPull يمنح الدور إذن الهوية المدارة المعينة من قبل المستخدم لسحب الصورة من السجل.

قالب Bicep

انسخ قالب Bicep التالي واحفظه كملف مع الملحق .bicep.

param environmentName string 
param logAnalyticsWorkspaceName string
param appInsightsName string
param containerAppName string 
param azureContainerRegistry string
param azureContainerRegistryImage string 
param azureContainerRegistryImageTag string
param acrPullDefinitionId string
param userAssignedIdentityName string
param location string = resourceGroup().location

resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2022-01-31-preview' = {
  name: userAssignedIdentityName
  location: location 
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, azureContainerRegistry, 'AcrPullTestUserAssigned')
  properties: {
    principalId: identity.properties.principalId  
    principalType: 'ServicePrincipal'
    // acrPullDefinitionId has a value of 7f951dda-4ed3-4680-a7ca-43fe172d538d
    roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', acrPullDefinitionId)
  }
}

resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
  name: logAnalyticsWorkspaceName
  location: location
  properties: any({
    retentionInDays: 30
    features: {
      searchVersion: 1
    }
    sku: {
      name: 'PerGB2018'
    }
  })
}

resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
  name: appInsightsName
  location: location
  kind: 'web'
  properties: {
    Application_Type: 'web'
    WorkspaceResourceId: logAnalyticsWorkspace.id
  }
}

resource appEnvironment 'Microsoft.App/managedEnvironments@2022-06-01-preview' = {
  name: environmentName
  location: location
  properties: {
    daprAIInstrumentationKey: appInsights.properties.InstrumentationKey
    appLogsConfiguration: {
      destination: 'log-analytics'
      logAnalyticsConfiguration: {
        customerId: logAnalyticsWorkspace.properties.customerId
        sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
      }
    }
  }
}

resource containerApp 'Microsoft.App/containerApps@2022-06-01-preview' = {
  name: containerAppName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${identity.id}': {}
    }
  }
  properties: {
    environmentId: appEnvironment.id
    configuration: {
      ingress: {
        targetPort: 8080
        external: true
      }
      registries: [
        {
          server: '${azureContainerRegistry}.azurecr.io'
          identity: identity.id
        }
      ]
    }
    template: {
      containers: [
        {
          image: '${azureContainerRegistry}.azurecr.io/${azureContainerRegistryImage}:${azureContainerRegistryImageTag}'
          name: '${azureContainerName}'
          resources: {
            cpu: 1
            memory: '2Gi'
          }
        }
      ]
      scale: {
        minReplicas: 1
        maxReplicas: 1
      }
    }
  }
}

output location string = location
output environmentId string = appEnvironment.id

توزيع تطبيق الحاوية

انشر تطبيق الحاوية الخاص بك باستخدام الأمر التالي.

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file "$BICEP_TEMPLATE" \
  --parameters environmentName="$CONTAINERAPPS_ENVIRONMENT" \
  logAnalyticsWorkspaceName="$LOG_ANALYTICS_WORKSPACE_NAME" \
  appInsightsName="$APP_INSIGHTS_NAME" \
  containerAppName="$CONTAINERAPP_NAME" \
  azureContainerRegistry="$REGISTRY_NAME" \
  azureContainerRegistryImage="$IMAGE_NAME" \
  azureContainerRegistryImageTag="$IMAGE_TAG" \
  azureContainerName="$CONTAINER_NAME" \
  acrPullDefinitionId="$ACR_PULL_DEFINITION_ID" \
  userAssignedIdentityName="$USER_ASSIGNED_IDENTITY_NAME" \
  location="$LOCATION"

ينشر هذا الأمر ما يلي.

  • مجموعة موارد Azure.
  • بيئة تطبيقات الحاوية.
  • مساحة عمل Log Analytics المقترنة ببيئة Container Apps.
  • مورد Application Insights للتتبع الموزع.
  • هوية مُدارة تم تعيينها من قِبل المستخدم.
  • حاوية لتخزين الصورة.
  • تطبيق حاوية يستند إلى الصورة.

إذا تلقيت الخطأ Failed to parse '<YOUR_BICEP_FILE_NAME>', please check whether it is a valid JSON format، فتأكد من أن ملف قالب Bicep الخاص بك يحتوي على الملحق .bicep.

الموارد الإضافية

لمزيد من المعلومات، راجع ما يلي.

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