إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذه المقالة، ستتعلم كيفية استخدام التوجيه المستند إلى القواعد مع Azure Container Apps. باستخدام التوجيه المستند إلى القواعد، يمكنك إنشاء اسم مجال مؤهل بالكامل (FQDN) على بيئة تطبيقات الحاوية. ثم يمكنك استخدام القواعد لتوجيه طلبات FQDN هذه إلى تطبيقات حاوية مختلفة، اعتمادا على مسار كل طلب.
المتطلبات الأساسية
إنشاء حساب في 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