توفير شبكة افتراضية لبيئة Azure Container Apps

يوضح لك المثال التالي كيفية إنشاء بيئة Container Apps في شبكة ظاهرية موجودة (VNet).

ابدأ بتسجيل الدخول إلى بوابة Azure.

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

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

  1. ابحث عن Container Apps في شريط البحث العلوي.
  2. حدد Container Apps في نتائج البحث.
  3. حدد زر إنشاء.

علامة تبويبBasics

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

  1. أدخل القيم التالية في قسم Project details.

    الإعدادات الإجراء
    الاشتراك اختر اشتراكك في Azure.
    مجموعة الموارد حدد Create new وأدخل my-container-apps.
    اسم تَطبيق الحاوية أدخل my-container-app.
    مصدر التوزيع حدد صورة الحاوية.

إنشاء بيئة

بعد ذلك، إنشاء بيئة لتطبيق الحاوية.

  1. حدد المنطقة المناسبة.

    الإعدادات القيمة‬
    المنطقة حدد Central US.
  2. في حقل بيئة تطبيقات الحاويات ، اختر رابط إنشاء بيئة جديدة .

  3. في صفحة Create Container Apps environment في علامة التبويب Basics ، أدخل القيم التالية:

    الإعدادات القيمة‬
    اسم البيئة قم بإدخال my-environment.
    التكرار في المنطقة حدد Disabled
  4. اختر علامة التبويب Monitoring لإنشاء مساحة عمل Log Analytics.

  5. اختر Azure Log Analytics ك Logs Destination.

  6. اختر رابط إنشاء new في حقل Log Analytics workspace وأدخل القيم التالية.

    الإعدادات القيمة‬
    الاسم أدخل my-container-apps-logs.

    يتم ملء حقل الموقع مسبقا مع وسط الولايات المتحدة نيابة عنك.

  7. حدد موافق.

لديك أيضا خيار نشر DNS خاص لبيئة تطبيقات الحاوية الخاصة بك. لمزيد من المعلومات، راجع إنشاء وتكوين منطقة Azure Private DNS.

إنشاء شبكة ظاهرية

إشعار

لاستخدام VNet مع تطبيقات الحاويات، يجب أن يحتوي VNet على شبكة فرعية مخصصة بنطاق CIDR أكبر /27 عند استخدام بيئة ملفات تعريف عبء العمل الافتراضية، أو نطاق CIDR أكبر /23 أو أكثر عند استخدام بيئة الاستهلاك القديمة فقط. لمعرفة المزيد حول تغيير حجم الشبكة الفرعية، راجع نظرة عامة على بنية الشبكة.

  1. حدد علامة التبويب Networking

  2. حدد نعم بجوار استخدام الشبكة الظاهرية الخاصة بك.

  3. بجانب مربع الشبكة الافتراضية ، اختر إنشاء رابط جديد وأدخل القيمة التالية:

    الإعدادات القيمة‬
    الاسم أدخل my-custom-vnet.
  4. حدد الزر موافق.

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

    الإعدادات القيمة‬
    اسم الشبكة الفرعية أدخل شبكة فرعية للبنية الأساسية.
    كتلة عناوين Virtual Network احتفظ بالقيم الافتراضية.
    كتلة عنوان الشبكة الفرعية احتفظ بالقيم الافتراضية.
  6. حدد الزر موافق.

  7. ضمن عنوان IP الظاهري، حدد خارجي لبيئة خارجية، أو داخلي لبيئة داخلية.

  8. حدد إنشاء.

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

  1. في أسفل الصفحة، اختر مراجعة + إنشاء.

    • إذا لم يتم العثور على أخطاء، يتوفر زر الإنشاء .
    • إذا كانت هناك أخطاء، يتم وضع علامة على أي علامة تبويب تحتوي على خطأ بنقطة حمراء. اذهب إلى كل من تلك التبويبات. الحقول التي تحتوي على خطأ تبرز باللون الأحمر أو تحدد بعلامة X حمراء. صحح جميع الأخطاء، ثم اختر مراجعة + إنشاء مرة أخرى.
  2. حدد إنشاء.

    يتم عرض صفحة مع الرسالة النشر قيد التقدم. بعد انتهاء النشر بنجاح، تظهر رسالة " اكتمل النشر ".

تحقق من التوزيع

  1. قم تحديد الانتقال إلى المورد لعرض تطبيق الوظيفة الجديد.

  2. بجانب رابط الطلب، اختر الرابط لعرض طلبك.

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

  • حساب Azure مع اشتراك نشط.
  • قم بتثبيت الإصدار 2.28.0 أو Azure CLI الأعلى.

الإعداد

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

az login

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

az upgrade

بعد ذلك، قم بتثبيت أو تحديث إضافة Azure Container Apps لواجهة CLI.

إذا تلقيت أخطاء حول المعلمات المفقودة عند تشغيل أوامر az containerapp في Azure CLI أو cmdlets من وحدة Az.App في 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

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

تعيين متغيرات البيئة التالية. <placeholders> استبدل بقيمك.

RESOURCE_GROUP="<new-resource-group>"
LOCATION="<location>"
CONTAINERAPPS_ENVIRONMENT="<containerapps-environment>"

إنشاء مجموعة موارد Azure

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

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

إنشاء بيئة

البيئة في Azure Container Apps تخلق حدودا آمنة حول مجموعة من تطبيقات الحاويات. تطبيقات الحاويات المنشورة في نفس البيئة تنشر في نفس الشبكة الافتراضية وتكتب السجلات إلى نفس مساحة Log Analytics.

سجل مزود خدمة Microsoft.ContainerService.

az provider register --namespace Microsoft.ContainerService

قم بتعريف متغير للاحتفاظ باسم VNet.

VNET_NAME="my-custom-vnet"

الآن قم بإنشاء شبكة ظاهرية لإقرانها ببيئة Container Apps. يجب أن تحتوي الشبكة الظاهرية على شبكة فرعية متوفرة لنشر البيئة.

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --location $LOCATION \
  --address-prefix 10.0.0.0/16
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/23

عند استخدام بيئة ملفات تعريف Workload، تحتاج إلى تحديث VNet لتفويض الشبكة الفرعية إلى Microsoft.App/environments. لا تفوض الشبكة الفرعية عند استخدام بيئة الاستهلاك فقط.

az network vnet subnet update \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --delegations Microsoft.App/environments

مع إنشاء الشبكة الظاهرية، يمكنك الآن الاستعلام عن معرف الشبكة الفرعية للبنية الأساسية.

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

وأخيرا، قم بإنشاء بيئة Container Apps باستخدام VNet المخصص.

لإنشاء البيئة، قم بتشغيل الأمر التالي. لإنشاء بيئة داخلية، أضف --internal-only.

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET

يصف الجدول التالي المعلمات المستخدمة مع containerapp env create.

المعلمة ‏‏الوصف‬
name اسم بيئة Container Apps.
resource-group اسم مجموعة الموارد.
logs-workspace-id (اختياري) معرف مساحة عمل Log Analytics موجودة. إذا تم حذفها، يتم إنشاء مساحة عمل لك.
logs-workspace-key سر عميل Log Analytics. مطلوب في حالة استخدام مساحة عمل موجودة.
location موقع Azure حيث سيتم نشر البيئة.
infrastructure-subnet-resource-id معرف المورد لشبكة فرعية لمكونات البنية الأساسية وحاويات تطبيقات المستخدم.
internal-only (اختياري) لا تستخدم البيئة IP ثابتا عاما، بل عناوين IP الداخلية فقط المتوفرة في VNet المخصصة. (يتطلب معرف مورد الشبكة الفرعية للبنية الأساسية.)

التكوين الاختياري

لديك خيار نشر DNS خاص وتحديد نطاقات IP للشبكات المخصصة لبيئة تطبيقات الحاوية الخاصة بك.

توزيعDNS الخاص

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

أولًا، استخراج معلومات تعريف من البيئة.

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

بعد ذلك، إعداد DNS الخاص.

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

معلمات الشبكات

عند استخدام بيئة الاستهلاك القديمة فقط، هناك ثلاث معايير شبكة اختيارية يمكنك اختيار تعريفها عند الاتصال containerapp env createب . استخدم هذه الخيارات عندما يكون لديك شبكة ظاهرية نظيرة مع نطاقات عناوين منفصلة. يضمن تكوين هذه النطاقات بشكل صريح عدم تعارض العناوين المستخدمة من قبل بيئة Container Apps مع النطاقات الأخرى في البنية الأساسية للشبكة.

إشعار

هذه المعايير تنطبق فقط على نوع البيئة القديمة التي تعتمد فقط على الاستهلاك. نوع بيئة ملفات تعريف العمل الافتراضي لا يتطلب هذه المعاملات.

يجب عليك إما تقديم قيم لهذه الخصائص الثلاث أو لا تقدم أي منها قيما. إذا لم يتم توفيرها، يتم إنشاء القيم لك.

المعلمة ‏‏الوصف‬
platform-reserved-cidr نطاق العنوان المستخدم داخليا لخدمات البنية الأساسية للبيئة. يجب أن يكون له حجم بين /23 و /12 عند استخدام بيئة الاستهلاك فقط
platform-reserved-dns-ip عنوان IP من النطاق platform-reserved-cidr المستخدم لخادم DNS الداخلي. لا يمكن أن يكون العنوان هو العنوان الأول في النطاق أو عنوان الشبكة. على سبيل المثال، إذا تم تعيين platform-reserved-cidr على 10.2.0.0/16، فإن platform-reserved-dns-ip لا يمكن أن يكون 10.2.0.0 (عنوان الشبكة)، أو 10.2.0.1 (تحتفظ البنية الأساسية باستخدام هذا العنوان IP). في هذه الحالة، سيكون عنوان IP الأول القابل للاستخدام لـDNS هو 10.2.0.2.
docker-bridge-cidr نطاق العنوان المعين لشبكة جسر Docker. أن يكون لهذا النطاق حجم بين /28 و/12.
  • نطاقات platform-reserved-cidr العناوين لا docker-bridge-cidr يمكن أن تتعارض مع بعضها البعض أو مع نطاقات أي من الشبكات الفرعية المقدمة. علاوة على ذلك، تأكد من أن هذه النطاقات لا تتعارض مع أي نطاق عناوين آخر في VNet.

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

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

إذا كنت لن تستمر في استخدام هذا التطبيق، يمكنك حذف مجموعة موارد my-container-apps . هذا يحذف مثيل Azure Container Apps وجميع الخدمات المرتبطة به. كما أنه يحذف مجموعة الموارد التي أنشأتها خدمة Container Apps تلقائيا والتي تحتوي على مكونات الشبكة المخصصة.

تنبيه

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

az group delete --name $RESOURCE_GROUP

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

  • لاستخدام دخول نطاق VNet، يجب إعداد DNS.

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