Set scaling rules in Azure Container Apps

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

لدعم هذا السلوك في التحجيم، يستخدم Azure Container Apps KEDA (Kubernetes Event-driven Autoscaling). يدعم KEDA التوسع ضد مجموعة متنوعة من المقاييس مثل طلبات HTTP، رسائل الطابور، تحميل وحدة المعالجة المركزية والذاكرة، ومصادر الأحداث مثل ناقل خدمة Azure، مراكز أحداث Azure، Apache Kafka، وRedis. لمزيد من المعلومات، راجع أدوات تغيير الحجم في وثائق KEDA.

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

تستخدم مهام Container Apps المستندة إلى الحدث قواعد التحجيم لتشغيل عمليات التنفيذ استنادا إلى الأحداث.

المقصود بالمقياس

التحجيم هو مزيج من الحدود والقواعد والسلوك.

  • تحدد الحدود الحد الأدنى والحد الأقصى لعدد النسخ المتماثلة الممكنة لكل مراجعة مع تحجيم تطبيق الحاوية.

    حد المقياس القيمة الافتراضية أدنى قيمة أقصى قيمة
    الحد الأدنى لعدد النسخ المتماثلة لكل مراجعة 1 1 الحد الأقصى للنسخ المتماثلة القابلة للتكوين هو 1000.
    الحد الأقصى لعدد النسخ المتماثلة لكل مراجعة 10 1 الحد الأقصى للنسخ المتماثلة القابلة للتكوين هو 1000.
  • القواعد هي المعايير التي تستخدمها Container Apps لتحديد وقت إضافة النسخ المتماثلة أو إزالتها.

    يتم تطبيق قواعد المقياس ك HTTP أو TCP (بروتوكول التحكم في الإرسال) أو مخصص.

  • السلوك هو مزيج من القواعد والحدود لتحديد قرارات المقياس بمرور الوقت.

    يوضح سلوك المقياس كيفية اتخاذ قرارات المقياس.

عند تحديد قواعد التحجيم الخاصة بك، ضع في اعتبارك العناصر التالية:

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

قواعد المقياس

تحدد ثلاث فئات من المشغلات كيفية حدوث التحجيم:

  • HTTP: استنادا إلى عدد طلبات HTTP المتزامنة لمراجعتك.
  • TCP: استنادا إلى عدد اتصالات TCP المتزامنة لمراجعتك.
  • مخصص: استنادا إلى مقاييس مخصصة مثل:
    • وحده المعالجه المركزيه
    • الذاكرة
    • مصادر البيانات المعتمدة المستندة إلى الحدث:
      • ناقل خدمة Azure
      • مراكز أحداث Azure
      • Apache Kafka
      • ريديس

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

إشعار

إذا كنت تستخدم وظائف على تطبيقات الحاويات، فإن التجربة الافتراضية تقوم تلقائيا بتكوين قواعد القياس بناء على مشغلات الوظائف والربطات. بوابة Azure تعطل زر إضافة قواعد المقياس لهذه التطبيقات. إذا كنت بحاجة إلى قواعد معرفة من قبل العميل، استخدم allowScalingRuleOverride كما هو موضح في قواعد مقياس KEDA التلقائية المولدة للتجاوز ل دالات Azure on Container Apps.

HTTP

عندما تستخدم قاعدة تحجيم HTTP، تتحكم في عتبة طلبات HTTP المتزامنة التي تحدد كيف تتوسع مراجعة تطبيق الحاوية الخاص بك. كل 15 ثانية، يتم حساب عدد الطلبات المتزامنة كعدد الطلبات في الثوان ال 15 الماضية مقسوما على 15. لا تدعم مهام تطبيقات الحاوية قواعد تحجيم HTTP.

في المثال التالي، تقوم المراجعة بتحجيم ما يصل إلى خمس نسخ متماثلة ويمكن توسيع نطاقها إلى الصفر. تم تعيين خاصية التحجيم إلى 100 طلب متزامن في الثانية.

مثال

http يعرف القسم قاعدة مقياس HTTP.

خاصية المقياس ‏‏الوصف‬ القيمة الافتراضية أدنى قيمة أقصى قيمة
concurrentRequests عندما يتجاوز عدد طلبات HTTP هذه القيمة، يضيف التطبيق نسخة أخرى. يستمر التطبيق في إضافة النسخ المقلدة حتى المبلغ المطلوب maxReplicas . 10 1 غير متوفر
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: 'http-rule'
            http: {
              metadata: {
                concurrentRequests: '100'
              }
            }
          }
        ]
      }
    }
  }
}

إشعار

قم بتعيين properties.configuration.activeRevisionsMode خاصية تطبيق الحاوية على عند single استخدام قواعد مقياس الأحداث غير HTTP.

http يعرف القسم قاعدة مقياس HTTP.

خاصية المقياس ‏‏الوصف‬ القيمة الافتراضية أدنى قيمة أقصى قيمة
concurrentRequests عندما يتجاوز عدد طلبات HTTP هذه القيمة، يضيف التطبيق نسخة أخرى. يستمر التطبيق في إضافة النسخ المقلدة حتى المبلغ المطلوب maxReplicas . 10 1 غير متوفر
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

إشعار

قم بتعيين properties.configuration.activeRevisionsMode خاصية تطبيق الحاوية على عند single استخدام قواعد مقياس الأحداث غير HTTP.

حدد قاعدة مقياس HTTP باستخدام المعامل --scale-rule-http-concurrency في create أوامر OR update .

معلمة CLI ‏‏الوصف‬ القيمة الافتراضية أدنى قيمة أقصى قيمة
--scale-rule-http-concurrency عندما يتجاوز عدد طلبات HTTP المتزامنة هذه القيمة، يضيف التطبيق نسخة أخرى. يستمر التطبيق في إضافة النسخ المقلدة حتى المبلغ المطلوب max-replicas . 10 1 غير متوفر
az containerapp create \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --environment <ENVIRONMENT_NAME> \
  --image <CONTAINER_IMAGE_LOCATION>
  --min-replicas 0 \
  --max-replicas 5 \
  --scale-rule-name azure-http-rule \
  --scale-rule-type http \
  --scale-rule-http-concurrency 100
  1. اذهب إلى تطبيق الوعاء الخاص بك في Azure portal.

  2. حدد Scale.

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

  4. حدد علامة التبويب Scale.

  5. حدد الحد الأدنى والحد الأقصى لنطاق النسخ المتماثلة.

    لقطة شاشة لشريط نطاق Azure Container Apps المقياس.

  6. حدد إضافة.

  7. في المربع اسم القاعدة، أدخل اسم قاعدة.

  8. من القائمة المنسدلة Type، حدد HTTP Scaling.

  9. في مربع الطلبات المتزامنة ، أدخل عدد الطلبات المتزامنة التي تريدها لتطبيق الحاوية الخاص بك.

TCP

عندما تستخدم قاعدة تكبير TCP، تتحكم في عتبة اتصالات TCP المتزامنة التي تحدد كيف يتدرج تطبيقك. كل 15 ثانية، يحسب النظام عدد الاتصالات المتزامنة كمقسومة على 15 ثانية من الوصلات في آخر 15 ثانية. لا تدعم مهام تطبيقات الحاوية قواعد تحجيم TCP.

في المثال التالي، تتوسع نسخة تطبيق الحاوية لتصل إلى خمس نسخ مقلدة ويمكن أن تصل إلى الصفر. يتم تعيين حد التحجيم إلى 100 اتصال متزامن في الثانية.

مثال

tcp يعرف القسم قاعدة مقياس TCP.

خاصية المقياس ‏‏الوصف‬ القيمة الافتراضية أدنى قيمة أقصى قيمة
concurrentConnections عندما يتجاوز عدد اتصالات TCP المتزامنة هذه القيمة، يضيف النظام نسخة أخرى. يستمر النظام في إضافة النسخ المقلدة حتى العدد maxReplicas مع زيادة عدد الاتصالات المتزامنة. 10 1 غير متوفر
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: 'tcp-rule'
            http: {
              metadata: {
                concurrentConnections: '100'
              }
            }
          }
        ]
      }
    }
  }
}

tcp يعرف القسم قاعدة مقياس TCP.

خاصية المقياس ‏‏الوصف‬ القيمة الافتراضية أدنى قيمة أقصى قيمة
concurrentConnections عندما يتجاوز عدد اتصالات TCP المتزامنة هذه القيمة، يضيف النظام نسخة أخرى. يستمر النظام في إضافة النسخ المقلدة حتى العدد maxReplicas مع زيادة عدد الاتصالات المتزامنة. 10 1 غير متوفر
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "tcp-rule",
            "tcp": {
              "metadata": {
                "concurrentConnections": "100"
              }
            }
          }]
        }
      }
    }
  }
}

حدد قاعدة مقياس TCP باستخدام المعلمة --scale-rule-tcp-concurrency في create أوامر OR update .

معلمة CLI ‏‏الوصف‬ القيمة الافتراضية أدنى قيمة أقصى قيمة
--scale-rule-tcp-concurrency عندما يتجاوز عدد اتصالات TCP المتزامنة هذه القيمة، يضيف النظام نسخة أخرى. يستمر النظام في إضافة النسخ حتى العدد مع max-replicas زيادة عدد الاتصالات المتزامنة. 10 1 غير متوفر
az containerapp create \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --environment <ENVIRONMENT_NAME> \
  --image <CONTAINER_IMAGE_LOCATION>
  --min-replicas 0 \
  --max-replicas 5 \
  --transport tcp \
  --ingress <external/internal> \
  --target-port <CONTAINER_TARGET_PORT> \
  --scale-rule-name azure-tcp-rule \
  --scale-rule-type tcp \
  --scale-rule-tcp-concurrency 100

بوابة Azure لا تدعم هذه الميزة. استخدم Azure CLI، Azure Resource Manager، أو بايسب لتكوين قاعدة مقياس TCP.

مخصص

أنشئ قاعدة تحجيم مخصصة لتطبيقات الحاويات بناء على أي مقياس KEDA مبني على ScaledObject باستخدام هذه القيم الافتراضية:

القيمة الافتراضية ثوانٍ
الفاصل الزمني للاستقصاء 30
فترة تهدئة 300

إشعار

فترة التبريد تظهر فقط عند التوسع من النسخة النهائية إلى 0. فترة التبريد لا تؤثر على التكبير لأن أي نسخ أخرى تزال تزيلا.

بالنسبة لمهام تطبيقات الحاويات المدفوعة بالأحداث، أنشئ قاعدة تحجيم مخصصة بناء على أي مقياس KEDA مبني على ScaledJob.

يوضح المثال التالي كيفية إنشاء قاعدة مقياس مخصصة.

مثال

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

للمصادقة، تأخذ معلمات مصادقة KEDA scaler أسرار تطبيقات الحاوية أو الهوية المدارة.

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

resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
  ...
  properties: {
    ...
    configuration: {
      ...
      secrets: [
        {
          name: '<NAME>'
          value: '<VALUE>'
        }
      ]
    }
    template: {
      ...
      scale: {
        maxReplicas: 0
        minReplicas: 5
        rules: [
          {
            name: '<RULE_NAME>'
            custom: {
              metadata: {
                ...
              }
              auth: [
                {
                  secretRef: '<NAME>'
                  triggerParameter: '<PARAMETER>'
                }
              ]
            }
          }
        ]
      }
    }
  }
}

راجع هذا المقتطف للسياق حول كيفية تناسب الأمثلة التالية في قالب Bicep.

أولا، حدد نوع وبيانات التعريف لقاعدة المقياس.

  1. من مواصفات متدرج KEDA، ابحث عن type القيمة.

    triggers:
     - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. في قالب Bicep، أدخل قيمة المقياس type في custom.type خاصية قاعدة المقياس.

    ...
    rules: [
      {
        name: 'azure-servicebus-queue-rule'
        custom: {
          type: 'azure-servicebus' ⬅️
          metadata: {
            queueName: 'my-queue'
            namespace: 'service-bus-namespace'
            messageCount: '5'
          }
        }
      }
    ]
    ...
    
  3. من مواصفات متدرج KEDA، ابحث عن metadata القيم.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. في قالب Bicep، أضف جميع قيم بيانات التعريف إلى custom.metadata قسم قاعدة المقياس.

    ...
    rules: [
      {
        name: 'azure-servicebus-queue-rule'
        custom: {
          type: 'azure-servicebus'
          metadata: {
            queueName: 'my-queue'              ⬅️
            namespace: 'service-bus-namespace' ⬅️
            messageCount: '5'                  ⬅️
          }
        }
      }
    ]
    ...
    

المصادقة

تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد Scale for Azure resources، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، و مراكز أحداث Azure، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.

استخدام البيانات السرية

لاستخدام الأسرار للمصادقة، أنشئ secrets سريا في مصفوفة تطبيق الحاوية. استخدم القيمة السرية في auth مصفوفة قاعدة المقياس.

يمكن لمقياس KEDA استخدام الأسرار في TriggerAuthentication التي تشير إليها الخاصية authenticationRef . يمكنك تعيين كائن TriggerAuthentication إلى قاعدة مقياس Container Apps.

  1. ابحث عن TriggerAuthentication الكائن المشار إليه بواسطة مواصفات KEDA ScaledObject .

  2. في TriggerAuthentication الكائن ، ابحث عن كل secretTargetRef وسر المقترن به.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. في قالب Bicep، لكل سر:

    1. إضافة سر إلى صفيف تطبيق secrets الحاوية الذي يحتوي على الاسم والقيمة السريين.

    2. إضافة إدخال إلى auth صفيف قاعدة المقياس.

      1. تعيين قيمة الخاصية triggerParameter إلى قيمة الخاصية secretTargetRef.parameter

      2. تعيين قيمة الخاصية secretRef إلى اسم الخاصية secretTargetRef's key .

        resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
          ...
          properties: {
            ...
            configuration: {
              ...
              secrets: [
                {                                          ⬅️
                  name: 'connection-string-secret'         ⬅️
                  value: '<SERVICE_BUS_CONNECTION_STRING>' ⬅️
                }                                          ⬅️
              ]
            }
            template: {
              ...
              scale: {
                maxReplicas: 0
                minReplicas: 5
                rules: [
                  {
                    name: 'azure-servicebus-queue-rule'
                    custom: {
                      type: 'azure-servicebus'
                      metadata: {
                        queueName: 'my-queue'
                        namespace: 'service-bus-namespace'
                        messageCount: '5'
                      }
                      auth: [
                        {
                          secretRef: 'connection-string-secret'
                          triggerParameter: 'connection'
                        }
                      ]
                    }
                  }
                ]
              }
            }
          }
        }
        

    تدعم بعض أدوات تغيير الحجم بيانات التعريف مع اللاحقة FromEnv للإشارة إلى قيمة في متغير بيئة. تبحث تطبيقات الحاوية في الحاوية الأولى المدرجة في قالب ARM لمتغير البيئة.

    راجع قسم الاعتبارات لمزيد من المعلومات المتعلقة بالأمان.

استخدام الهوية المدارة

يمكن لقواعد مقياس تطبيقات الحاويات استخدام الهوية المدارة للمصادقة باستخدام خدمات Azure. يقوم قالب Bicep التالي بإدخال هوية مدارة قائمة على النظام للمصادقة لمقياس Azure Queue.

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

scale: {
  minReplicas: 0
  maxReplicas: 4
  rules: [
    {
      name: 'azure-queue'
      custom: {
        type: 'azure-queue'
        metadata: {
          accountName: '<ACCOUNT_NAME>'
          queueName: '<QUEUE_NAME>'
          queueLength: '1'
        },
        identity: 'system'
      }
    }
  ]
}

لمعرفة المزيد حول استخدام الهوية المدارة مع قواعد المقياس، راجع الهوية المدارة.

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

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "configuration": {
        ...
        "secrets": [
          {
            "name": "<NAME>",
            "value": "<VALUE>"
          }
        ]
      },
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [
            {
              "name": "<RULE_NAME>",
              "custom": {
                "metadata": {
                  ...
                },
                "auth": [
                  {
                    "secretRef": "<NAME>",
                    "triggerParameter": "<PARAMETER>"
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

راجع هذا المقتطف للسياق حول كيفية تناسب الأمثلة التالية في قالب ARM.

أولا، حدد نوع وبيانات التعريف لقاعدة المقياس.

  1. من مواصفات متدرج KEDA، ابحث عن type القيمة.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. في قالب ARM، أدخل قيمة المقياس type في custom.type خاصية قاعدة المقياس.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",  ⬅️
          "metadata": {
            "queueName": "my-queue",
            "namespace": "service-bus-namespace",
            "messageCount": "5"
          }
        }
      }
    ]
    ...
    
  3. من مواصفات متدرج KEDA، ابحث عن metadata القيم.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. في قالب ARM، أضف كافة قيم بيانات التعريف إلى custom.metadata قسم قاعدة المقياس.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",
          "metadata": {
            "queueName": "my-queue",              ⬅️
            "namespace": "service-bus-namespace", ⬅️
            "messageCount": "5"                   ⬅️
          }
        }
      }
    ]
    ...
    

المصادقة

تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد Scale for Azure resources، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، و مراكز أحداث Azure، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.

استخدام البيانات السرية

لاستخدام الأسرار للمصادقة، أنشئ secrets سريا في مصفوفة تطبيق الحاوية. استخدم القيمة السرية في auth مصفوفة قاعدة المقياس.

يمكن لمقياس KEDA استخدام الأسرار في TriggerAuthentication التي تشير إليها الخاصية authenticationRef . يمكنك تعيين كائن TriggerAuthentication إلى قاعدة مقياس Container Apps.

  1. ابحث عن TriggerAuthentication الكائن المشار إليه بواسطة مواصفات KEDA ScaledObject .

  2. في TriggerAuthentication الكائن ، ابحث عن كل secretTargetRef وسر المقترن به.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. في قالب ARM، لكل سر:

    1. إضافة سر إلى صفيف تطبيق secrets الحاوية الذي يحتوي على الاسم والقيمة السريين.

    2. إضافة إدخال إلى auth صفيف قاعدة المقياس.

      1. تعيين قيمة الخاصية triggerParameter إلى قيمة الخاصية secretTargetRef.parameter

      2. تعيين قيمة الخاصية secretRef إلى اسم الخاصية secretTargetRef's key .

    {
      ...
      "resources": {
        ...
        "properties": {
          ...
          "configuration": {
            ...
            "secrets": [
              {                                            ⬅️
                "name": "connection-string-secret",        ⬅️
                "value": "<SERVICE_BUS_CONNECTION_STRING>" ⬅️
              }                                            ⬅️
            ]
          },
          "template": {
            ...
            "scale": {
              "minReplicas": 0,
              "maxReplicas": 5,
              "rules": [
                {
                  "name": "azure-servicebus-queue-rule",
                  "custom": {
                    "type": "azure-servicebus",
                    "metadata": {
                      "queueName": "my-queue",
                      "namespace": "service-bus-namespace",
                      "messageCount": "5"
                    },
                    "auth": [
                      {                                          ⬅️
                        "secretRef": "connection-string-secret", ⬅️
                        "triggerParameter": "connection"         ⬅️
                      }                                          ⬅️
                    ]
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    تدعم بعض أدوات تغيير الحجم بيانات التعريف مع اللاحقة FromEnv للإشارة إلى قيمة في متغير بيئة. تبحث تطبيقات الحاوية في الحاوية الأولى المدرجة في قالب ARM لمتغير البيئة.

    راجع قسم الاعتبارات لمزيد من المعلومات المتعلقة بالأمان.

استخدام الهوية المدارة

يمكن لقواعد مقياس تطبيقات الحاويات استخدام الهوية المدارة للمصادقة باستخدام خدمات Azure. يقوم قالب ARM التالي بإدخال هوية مدارة معينة للنظام للمصادقة لمقياس Azure Queue.

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

"scale": {
  "minReplicas": 0,
  "maxReplicas": 4,
  "rules": [
    {
      "name": "azure-queue",
      "custom": {
        "type": "azure-queue",
        "metadata": {
          "accountName": "<ACCOUNT_NAME>",
          "queueName": "<QUEUE_NAME>",
          "queueLength": "1"
        },
        "identity": "system"
      }
    }
  ]
}

لمعرفة المزيد حول استخدام الهوية المدارة مع قواعد المقياس، راجع الهوية المدارة.

  1. من مواصفات متدرج KEDA، ابحث عن type القيمة.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. في الأمر CLI، قم بتعيين المعلمة --scale-rule-type إلى قيمة المواصفات type .

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \ ⬅️
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"
    
  3. من مواصفات متدرج KEDA، ابحث عن metadata القيم.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  4. في الأمر CLI، قم بتعيين المعلمة --scale-rule-metadata إلى قيم بيانات التعريف.

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

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \              ⬅️
                            "namespace=service-bus-namespace" \ ⬅️
                            "messageCount=5" \                  ⬅️
      --scale-rule-auth "connection=connection-string-secret"
    

المصادقة

تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد Scale for Azure resources، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، و مراكز أحداث Azure، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.

استخدام البيانات السرية

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

يدعم مقياس KEDA الأسرار في TriggerAuthentication التي تستخدمها الخاصية authenticationRef للرجوع إليها. يمكنك تعيين TriggerAuthentication الكائن إلى قاعدة مقياس Container Apps.

  1. ابحث عن TriggerAuthentication الكائن المشار إليه بواسطة مواصفات KEDA ScaledObject . تحديد كل secretTargetRef عنصر من TriggerAuthentication العناصر.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  2. في تطبيق الحاوية ، قم بإنشاء الأسرار التي تطابق الخصائص secretTargetRef .

  3. في الأمر CLI، قم بتعيين معلمات لكل secretTargetRef إدخال.

    1. إنشاء إدخال سري باستخدام المعلمة --secrets . إذا كانت هناك أسرار متعددة، ففصلها بمسافة.

    2. إنشاء إدخال مصادقة باستخدام المعلمة --scale-rule-auth . إذا كانت هناك إدخالات متعددة، فافصلها بمسافة.

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ ⬅️
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"                ⬅️
    

استخدام الهوية المدارة

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

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

az containerapp create \
  --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> \
  --environment <ENVIRONMENT_ID> \
  --user-assigned <USER_ASSIGNED_IDENTITY_ID> \
  --scale-rule-name azure-queue \
  --scale-rule-type azure-queue \
  --scale-rule-metadata "accountName=<AZURE_STORAGE_ACCOUNT_NAME>" "queueName=queue1" "queueLength=1" \
  --scale-rule-identity <USER_ASSIGNED_IDENTITY_ID>
  1. اذهب إلى تطبيق الوعاء الخاص بك في Azure portal.

  2. حدد Scale.

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

  4. حدد علامة التبويب Scale and replicas.

  5. حدد الحد الأدنى والحد الأقصى لنطاق النسخ المتماثلة.

    لقطة شاشة لشريط نطاق Azure Container Apps المقياس.

  6. حدد إضافة.

  7. في المربع اسم القاعدة، أدخل اسم قاعدة.

  8. من القائمة المنسدلة Type، حدد Custom.

  9. من مواصفات متدرج KEDA، ابحث عن type القيمة.

    triggers:
    - type: azure-servicebus ⬅️
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  10. في المربع نوع القاعدة المخصصة، أدخل قيمة المقياس type .

  11. من مواصفات متدرج KEDA، ابحث عن metadata القيم.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue              ⬅️
        namespace: service-bus-namespace ⬅️
        messageCount: "5"                ⬅️
    
  12. في المدخل، ابحث عن قسم بيانات التعريف وحدد إضافة. أدخل الاسم والقيمة لكل عنصر في قسم بيانات تعريف مواصفات KEDA ScaledObject .

المصادقة

تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد Scale for Azure resources، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، و مراكز أحداث Azure، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.

استخدام البيانات السرية

  1. في تطبيق الحاوية ، قم بإنشاء الأسرار التي تريد الرجوع إليها.

  2. ابحث عن TriggerAuthentication الكائن المشار إليه بواسطة مواصفات KEDA ScaledObject . تحديد كل secretTargetRef عنصر من TriggerAuthentication العناصر.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING>
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection         ⬅️
        name: my-secrets              ⬅️
        key: connection-string-secret ⬅️
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. في قسم Authentication ، حدد Add لإنشاء إدخال لكل معلمة KEDA secretTargetRef .

استخدام الهوية المدارة

المصادقة المدارة للهوية غير مدعومة في Azure portal. استخدم Azure CLI أو Azure Resource Manager للمصادقة باستخدام الهوية المدارة.

قاعدة المقياس الافتراضية

إذا لم تقم بإنشاء قاعدة مقياس، يتم تطبيق قاعدة المقياس الافتراضية على تطبيق الحاوية.

المشغِّل النسخ المتماثلة دقيقة النسخ المتماثلة القصوى
HTTP 1 10

هام

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

سلوك المقياس

التحجيم له السلوكيات التالية:

سلوك القيمة
الفاصل الزمني للاستقصاء 30 ثانية
فترة تهدئة 300 ثانية
توسيع نطاق نافذة الاستقرار 0 ثانية
تقليص نافذة الاستقرار 300 ثانية
توسيع نطاق الخطوة 1, 4, 8, 16, 32, ... ما يصل إلى الحد الأقصى لعدد النسخ المتماثلة المكونة
خطوة تقليص الحجم 100% من النسخ المتماثلة التي تحتاج إلى إيقاف التشغيل
خوارزمية التحجيم desiredReplicas = ceil(currentMetricValue / targetMetricValue)
  • فترة الاستطلاعات هي مدى تكرار استعلامات KEDA عن مصادر الأحداث. لا تنطبق هذه القيمة على قواعد مقياس HTTP وTCP.
  • فترة التهدئة هي كم من الوقت بعد آخر حدث ينتظر KEDA قبل أن ينخفض التطبيق إلى الحد الأدنى لعدد النسخ المكررة.
  • نافذة تثبيت التوسع هي المدة التي ينتظر فيها KEDA قبل اتخاذ قرار التوسع بمجرد تحقيق شروط التوسع.
  • نافذة تثبيت التصغير هي مدة انتظار KEDA قبل اتخاذ قرار التخفيض بمجرد تحقيق شروط التصغير.
  • خطوة التوسيع هي عدد النسخ المتماثلة التي تتم إضافتها مع توسيع نطاق تطبيق الحاوية. يبدأ من 1، ثم يزيد إلى 4 و8 و16 و32 وما إلى ذلك، حتى الحد الأقصى لعدد النسخ المتماثلة المكونة.
  • خطوة التصغير هي عدد النسخ التي تتم إزالتها مع توسع تطبيق الحاوية. تقوم KEDA بإزالة 100% من النسخ التي تحتاج إلى إيقاف.
  • خوارزمية التحجيم هي الصيغة المستخدمة لحساب العدد المطلوب الحالي من النسخ المتماثلة.

مثال

بالنسبة لقاعدة المقياس التالية:

"minReplicas": 0,
"maxReplicas": 20,
"rules": [
  {
    "name": "azure-servicebus-queue-rule",
    "custom": {
      "type": "azure-servicebus",
      "metadata": {
        "queueName": "my-queue",
        "namespace": "service-bus-namespace",
        "messageCount": "5"
      }
    }
  }
]

مع توسيع نطاق تطبيقك، يبدأ KEDA بقائمة انتظار فارغة وينفذ الخطوات التالية:

  1. تحقق my-queue كل 30 ثانية.
  2. إذا كان طول الطابور يساوي 0، عد إلى الخطوة 1.
  3. إذا كان طول الطابور أكبر من 0، قم بتغيير حجم التطبيق إلى 1.
  4. إذا كان طول قائمة الانتظار 50، فاحسب desiredReplicas = ceil(50/5) = 10.
  5. قم بتكبير التطبيق إلى min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount)).
  6. ارجع إلى الخطوة الأولى.

إذا توسع التطبيق إلى الحد الأقصى لعدد النسخ 20، فإن التكبير يمر بنفس الخطوات السابقة. يحدث التصغير فقط إذا تم تحقيق الشرط لمدة 300 ثانية (نافذة تثبيت التصغير). بمجرد أن يكون طول قائمة الانتظار 0، ينتظر KEDA لمدة 300 ثانية (فترة تهدئة) قبل تحجيم التطبيق إلى 0.

الاعتبارات

  • في وضع "المراجعات المتعددة"، تؤدي إضافة مشغل مقياس جديد إلى إنشاء مراجعة جديدة للتطبيق الخاص بك ولكن تظل المراجعة القديمة متوفرة مع قواعد المقياس القديمة. استخدم صفحة إدارة المراجعة لإدارة تخصيصات نسبة استخدام الشبكة.

  • لا تتحمل أي رسوم استخدام عندما يتدرج التطبيق إلى الصفر. لمزيد من المعلومات حول الأسعار، راجع Billing in Azure Container Apps.

  • تحتاج إلى تفعيل حماية البيانات لجميع تطبيقات .NET على Azure Container Apps. راجع نشر وتكبير تطبيق ASP.NET Core على Azure Container Apps لمزيد من التفاصيل.

القيود المعروفة

  • التحجيم العمودي غير مدعوم.

  • الكميات المتماثلة هي كمية مستهدفة وليست ضماناً.

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

  • تغيير بروكسي KEDA عبر إعدادات البروكسيز غير مدعوم. فكر في استخدام ملفات عبء العمل مع بوابة NAT أو مسار معرف من المستخدم (UDR) لإرسال حركة مرور إلى جهاز شبكة، حيث يمكنك فحص أو بروكسي حركة المرور.

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