مشاركة عبر


استخدام التوجيه القائم على القواعد مع Azure Container Apps

في هذه المقالة، ستتعلم كيفية استخدام التوجيه المستند إلى القواعد مع Azure Container Apps. باستخدام التوجيه المستند إلى القواعد، يمكنك إنشاء اسم مجال مؤهل بالكامل (FQDN) على بيئة تطبيقات الحاوية. ثم يمكنك استخدام القواعد لتوجيه طلبات FQDN هذه إلى تطبيقات حاوية مختلفة، اعتمادا على مسار كل طلب.

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

الإعداد

  1. قم بتشغيل الأمر التالي حتى تسجيل الدخول إلى Azure من CLI.

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

    az upgrade
    

    تجاهل أي تحذيرات حول الوحدات النمطية المستخدمة حاليا.

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

    az provider register --namespace Microsoft.App
    
    az 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"

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

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

    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
    
  2. قم بتشغيل الأمر التالي لإنشاء تطبيق الحاوية الثاني. يستخدم تطبيق الحاوية هذا صورة التشغيل السريع 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
    
  3. إنشاء تكوين مسار 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 المراد مطابقتها. على سبيل المثال، /api
    routes.action.prefixRewrite ما الذي يجب استبدال البادئة المتطابقة به قبل إعادة التوجيه.
    targets.containerApp اسم تطبيق الحاوية حيث يتم إرسال طلب المسار المطابق.

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

    تتضمن الخصائص الأخرى غير المدرجة التي قد تؤثر على المسارات ما يلي.

    الخاصية الوصف
    route.match.path تعريف مسار المطابقة الدقيقة.
    route.match.pathSeparatedPrefix يطابق المسارات على حدود '/' بدلا من أي نص. على سبيل المثال، إذا قمت بتعيين القيمة إلى /product، فستتطابق على /product/1، ولكن ليس /product1.
    route.match.caseSensitive يتحكم في ما إذا كانت أنماط التوجيه تتطابق مع حساسية الحالة أم لا.
    target.label التوجيه إلى مراجعة محددة مسماة داخل تطبيق حاوية.
    target.revision التوجيه إلى مراجعة معينة داخل تطبيق حاوية.
  4. قم بتشغيل الأمر التالي لإنشاء تكوين مسار 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

  1. تأكد من وجود تطبيقي الحاوية بالفعل.

  2. أنشئ ملف 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
    
  3. انشر ملف Bicep باستخدام الأمر التالي:

    az deployment group create `
      --name $ROUTE_CONFIG_NAME `
      --resource-group $RESOURCE_GROUP `
      --template-file routing.bicep
    
  4. في الإخراج، ابحث عن outputs، الذي يحتوي على اسم المجال المؤهل بالكامل لتكوين مسار HTTP (FQDN). على سبيل المثال:

        "outputs": {
          "fqdn": {
            "type": "String",
            "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io"
          }
        },
    

التحقق من تكوين مسار HTTP

  1. استعرض للوصول إلى تكوين مسار HTTP FQDN باستخدام المسار /app1.

    على سبيل المثال: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.

    ترى صورة التشغيل السريع لتطبيقات الحاوية.

  2. استعرض للوصول إلى تكوين مسار HTTP FQDN باستخدام المسار /app2.

    على سبيل المثال: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.

    ترى صورة التشغيل السريع ASP.NET.

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

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

تنبيه

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

az group delete --name my-container-apps