إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذه المقالة، ستتعلم كيفية استخدام التوجيه المستند إلى القواعد مع Azure Container Apps. باستخدام التوجيه المستند إلى القواعد، يمكنك إنشاء اسم مجال مؤهل بالكامل (FQDN) على بيئة تطبيقات الحاوية. ثم يمكنك استخدام القواعد لتوجيه طلبات FQDN هذه إلى تطبيقات حاوية مختلفة، اعتمادا على مسار كل طلب.
نموذج التوجيه والتفويض
تعمل إعدادات مسارات HTTP (httpRouteConfigs) على مستوى بيئة تطبيقات الحاويات. يمكن للمسار استهداف أي تطبيق حاوية في نفس البيئة، بغض النظر عن إعداد الدخول الفردي للتطبيق المستهدف. نظرا لأن FQDN الخاص بالمسار منشور ضمن نطاق البيئة، يمكن للمسار توفير نقطة دخول عامة ترسل الطلبات إلى تطبيق حاوية يستخدم الدخول الداخلي (external: false). يتيح هذا السلوك تكوين عدة تطبيقات تحت مضيف واحد.
تحدد صلاحيات تكوينات مسارات HTTP ضمن البيئة المدارة بدلا من تطبيقات الحاويات الفردية. إنشاء أو تحديث أو حذف مسار يتطلب Microsoft.App/managedEnvironments/httpRouteConfigs/write إذنا من البيئة. لا حاجة لإذن إضافي على تطبيق الحاوية المستهدفة. هذا السلوك يتوافق مع كون البيئة حدود ثقة مشتركة، حيث تنتمي جميع تطبيقات الحاويات في البيئة إلى نفس العميل. أي مدير له دور محدد ضمن نطاق البيئة يتضمن httpRouteConfigs/write إذنا، مثل المساهم على البيئة، يمكنه إنشاء مسارات تستهدف أي تطبيق حاوية في تلك البيئة.
مهم
يمكن لتكوين مسار HTTP كشف تطبيق حاوية يستخدم الإدخال الداخلي (external: false) إذا قمت بتكوين التطبيق كهدف مسار. يتحكم الإعداد external: false في ظهور صفحة FQDN الخاصة بالتطبيق. باستخدام هذا التكوين، لا تمنع البيئة التطبيق من استقبال حركة المرور عبر مسار على مستوى البيئة. للحفاظ على تطبيق الحاوية غير قابل للوصول من خارج البيئة، لا تشير إليه كهدف في أي تكوين مسار HTTP. بدلا من ذلك، ضع التطبيق في بيئة منفصلة لا تحتوي على مسارات عامة، أو استخدم ضوابط على مستوى الشبكة لتقييد حركة المرور الواردة.
المتطلبات الأساسية
إنشاء حساب في Azure ذي اشتراك نشط.
- إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا.
قم بتثبيت Azure CLI.
الإعداد
قم بتشغيل الأمر التالي حتى تسجيل الدخول إلى Azure من CLI.
az loginللتأكد من تشغيل أحدث إصدار من CLI، قم بتشغيل أمر الترقية.
az upgradeتجاهل أي تحذيرات حول الوحدات النمطية المستخدمة حاليا.
الآن بعد تثبيت الملحق أو الوحدة النمطية
Microsoft.Appالحالية، قم بتسجيل مساحات الأسماء وMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
إنشاء متغيرات البيئة
إنشاء متغيرات البيئة التالية.
CONTAINER_APP_1_NAME="my-container-app-1"
CONTAINER_APP_1_IMAGE="mcr.microsoft.com/k8se/quickstart:latest"
CONTAINER_APP_1_TARGET_PORT="80"
CONTAINER_APP_2_NAME="my-container-app-2"
CONTAINER_APP_2_IMAGE="mcr.microsoft.com/dotnet/samples:aspnetapp"
CONTAINER_APP_2_TARGET_PORT="8080"
LOCATION="eastus"
RESOURCE_GROUP="my-container-apps"
ENVIRONMENT_NAME="my-container-apps-env"
ROUTE_CONFIG_NAME="my-route-config"
إنشاء تطبيقات الحاوية
قم بتشغيل الأمر التالي لإنشاء تطبيق الحاوية الأول. يستخدم تطبيق الحاوية هذا صورة التشغيل السريع لتطبيقات الحاوية.
az containerapp up \ --name $CONTAINER_APP_1_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_1_IMAGE \ --target-port $CONTAINER_APP_1_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdnقم بتشغيل الأمر التالي لإنشاء تطبيق الحاوية الثاني. يستخدم تطبيق الحاوية هذا صورة التشغيل السريع ASP.NET.
az containerapp up \ --name $CONTAINER_APP_2_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_2_IMAGE \ --target-port $CONTAINER_APP_2_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdnإنشاء تكوين مسار HTTP.
أنشئ الملف التالي واحفظه ك
routing.yml.rules: - description: App 1 rule routes: - match: prefix: /app1 action: prefixRewrite: / targets: - containerApp: my-container-app-1 - description: App 2 rule routes: - match: path: /app2 action: prefixRewrite: / - match: path: / targets: - containerApp: my-container-app-2يحدد هذا التكوين قاعدتي توجيه لنسبة استخدام الشبكة HTTP.
إشعار
ترتيب قواعد التوجيه مهم.
يجب أن تكون البادئات الأكثر تحديدا قبل بادئات أقل تحديدا.
على سبيل المثال، إذا كانت القاعدة الأولى تطابق بادئة /api، استخدام ذلك حتى لو استخدمت القاعدة الثانية بادئة /api/v1.
الخاصية الوصف descriptionتسمية يمكن للبشر قراءتها للقاعدة routes.match.prefixبادئة مسار URL المراد مطابقتها. على سبيل المثال، /apiroutes.action.prefixRewriteما الذي يجب استبدال البادئة المتطابقة به قبل إعادة التوجيه. targets.containerAppاسم تطبيق الحاوية حيث يتم إرسال طلب المسار المطابق. تسمح هذه القواعد للمسارات المختلفة على مجالك بتوجيه تطبيقات حاوية مختلفة مع تعديل مسار الطلب أيضا قبل أن يصل إلى تطبيق الوجهة.
تتضمن الخصائص الأخرى غير المدرجة التي قد تؤثر على المسارات ما يلي.
الخاصية الوصف route.match.pathتعريف مسار المطابقة الدقيقة. route.match.pathSeparatedPrefixيطابق المسارات على حدود '/' بدلا من أي نص. على سبيل المثال، إذا قمت بتعيين القيمة إلى /product، فستتطابق على/product/1، ولكن ليس/product1.route.match.caseSensitiveيتحكم في ما إذا كانت أنماط التوجيه تتطابق مع حساسية الحالة أم لا. target.labelالتوجيه إلى مراجعة محددة مسماة داخل تطبيق حاوية. target.revisionالتوجيه إلى مراجعة معينة داخل تطبيق حاوية. قم بتشغيل الأمر التالي لإنشاء تكوين مسار HTTP.
az containerapp env http-route-config create \ --http-route-config-name $ROUTE_CONFIG_NAME \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --yaml routing.yml \ --query properties.fqdnيبدو اسم المجال المؤهل بالكامل لتكوين مسار HTTP (FQDN) مثل هذا المثال:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
تأكد من وجود تطبيقي الحاوية بالفعل.
أنشئ ملف Bicep التالي واحفظه ك
routing.bicep.resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = { name: 'my-container-apps-env' location: 'eastus' tags: {} properties: { workloadProfiles: [ { workloadProfileType: 'Consumption' name: 'Consumption' } ] } } resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@2024-10-02-preview' = { parent: containerAppsEnvironment name: 'my-route-config' location: 'eastus' properties: { rules: [ { description: 'App 1 rule' routes: [ { match: { prefix: '/app1' } action: { prefixRewrite: '/' } } ] targets: [ { containerApp: 'my-container-app-1' } ] } { description: 'App 2 rule' routes: [ { match: { path: '/app2' } action: { prefixRewrite: '/' } } { match: { path: '/' } } ] targets: [ { containerApp: 'my-container-app-2' } ] } ] } } output fqdn string = httpRouteConfig.properties.fqdnانشر ملف Bicep باستخدام الأمر التالي:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepفي الإخراج، ابحث عن
outputs، الذي يحتوي على اسم المجال المؤهل بالكامل لتكوين مسار HTTP (FQDN). على سبيل المثال:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
التحقق من تكوين مسار HTTP
استعرض للوصول إلى تكوين مسار HTTP FQDN باستخدام المسار
/app1.على سبيل المثال:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.ترى صورة التشغيل السريع لتطبيقات الحاوية.
استعرض للوصول إلى تكوين مسار HTTP FQDN باستخدام المسار
/app2.على سبيل المثال:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.ترى صورة التشغيل السريع ASP.NET.
تنظيف الموارد
في حال عدم استمرارك في استخدام هذا التطبيق، فقم بتشغيل الأمر التالي لحذف مجموعة الموارد مع جميع الموارد التي تم إنشاؤها في هذا التشغيل السريع.
تنبيه
يحذف الأمر التالي مجموعة الموارد المحددة وجميع الموارد المضمنة فيها. إذا كانت الموارد خارج نطاق هذا التشغيل السريع موجودة في مجموعة الموارد المحددة، حذفها أيضا.
az group delete --name my-container-apps