إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تدير Azure Container Apps القياس الأفقي التلقائي من خلال مجموعة من قواعد القياس التعريفية. مع توسيع نطاق مراجعة تطبيق الحاوية، يتم إنشاء مثيلات جديدة من المراجعة عند الطلب. تعرف هذه المثيلات باسم النسخ المتماثلة.
لدعم سلوك التحجيم هذا، يتم تشغيل Azure Container Apps بواسطة KEDA (التحجيم التلقائي المستند إلى الحدث Kubernetes). يدعم KEDA التحجيم مقابل مجموعة متنوعة من المقاييس مثل طلبات HTTP ورسائل قائمة الانتظار وتحميل وحدة المعالجة المركزية والذاكرة ومصادر الأحداث مثل ناقل خدمة Azure ومراكز أحداث Azure وApache Kafka وRedis. لمزيد من المعلومات، راجع أدوات تغيير الحجم في وثائق KEDA.
تؤدي إضافة قواعد التحجيم أو تحريرها إلى إنشاء مراجعة جديدة لتطبيق الحاوية. المراجعة هي لقطة غير قابلة للتغيير لتطبيق الحاوية. لمعرفة أنواع التغييرات التي تؤدي إلى مراجعة جديدة، راجع أنواع تغيير المراجعة.
تستخدم مهام Container Apps المستندة إلى الحدث قواعد التحجيم لتشغيل عمليات التنفيذ استنادا إلى الأحداث.
المقصود بالمقياس
التحجيم هو مزيج من الحدود والقواعد والسلوك.
تحدد الحدود الحد الأدنى والحد الأقصى لعدد النسخ المتماثلة الممكنة لكل مراجعة مع تحجيم تطبيق الحاوية.
حد المقياس القيمة الافتراضية أدنى قيمة أقصى قيمة الحد الأدنى لعدد النسخ المتماثلة لكل مراجعة 1 1 الحد الأقصى للنسخ المتماثلة القابلة للتكوين هو 1000. الحد الأقصى لعدد النسخ المتماثلة لكل مراجعة 10 1 الحد الأقصى للنسخ المتماثلة القابلة للتكوين هو 1000. القواعد هي المعايير التي تستخدمها Container Apps لتحديد وقت إضافة النسخ المتماثلة أو إزالتها.
يتم تطبيق قواعد المقياس ك HTTP أو TCP (بروتوكول التحكم في الإرسال) أو مخصص.
السلوك هو مزيج من القواعد والحدود لتحديد قرارات المقياس بمرور الوقت.
يوضح سلوك المقياس كيفية اتخاذ قرارات المقياس.
أثناء تحديد قواعد التحجيم الخاصة بك، من المهم مراعاة العناصر التالية:
- لا تتم محاسبتك على رسوم الاستخدام إذا تم تغيير حجم تطبيق الحاوية إلى الصفر.
- قد تتم فوترة النسخ المتماثلة التي لا تعالج، ولكن تبقى في الذاكرة بمعدل "الخام" أقل. لمزيد من المعلومات، انظرالفواتير.
- إذا كنت تريد التأكد من أن مثيل المراجعة قيد التشغيل دائما، فقم بتعيين الحد الأدنى لعدد النسخ المتماثلة إلى 1 أو أعلى.
قواعد المقياس
تحدد ثلاث فئات من المشغلات كيفية حدوث التحجيم:
- HTTP: استنادا إلى عدد طلبات HTTP المتزامنة لمراجعتك.
- TCP: استنادا إلى عدد اتصالات TCP المتزامنة لمراجعتك.
-
مخصص: استنادا إلى مقاييس مخصصة مثل:
- وحده المعالجه المركزيه
- الذاكرة
- مصادر البيانات المعتمدة المستندة إلى الحدث:
- ناقل خدمة Azure
- مراكز أحداث Azure
- Apache Kafka
- ريديس
إذا قمت بتعريف أكثر من قاعدة مقياس واحدة، يبدأ تطبيق الحاوية في التحجيم بمجرد استيفاء الشرط الأول لأي قواعد.
إشعار
إذا كنت تستخدم الوظائف في تطبيقات الحاوية ، تكوين قواعد المقياس تلقائيا استنادا إلى مشغلات الوظائف والروابط. ونتيجة لذلك، سيتم تعطيل الزر "إضافة قواعد المقياس" في مدخل Microsoft Azure لهذه التطبيقات. تكوين قاعدة المقياس اليدوي غير مطلوب أو مدعوم في هذا السيناريو.
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-concurrencycreate في الأوامر أو 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
انتقل إلى تطبيق الحاوية في مدخل Microsoft Azure
حدد Scale.
حدد تحرير ونشر.
حدد علامة التبويب Scale.
حدد الحد الأدنى والحد الأقصى لنطاق النسخ المتماثلة.
حدد إضافة.
في المربع اسم القاعدة، أدخل اسم قاعدة.
من القائمة المنسدلة Type، حدد HTTP Scaling.
في مربع الطلبات المتزامنة ، أدخل العدد المطلوب من الطلبات المتزامنة لتطبيق الحاوية.
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-concurrencycreate في الأوامر أو 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
غير مدعوم في مدخل Microsoft Azure. استخدم Azure CLI أو Azure Resource Manager أو Bicep لتكوين قاعدة مقياس 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.
أولا، يمكنك تعريف نوع قاعدة المقياس وبيانات التعريف الخاصة بها.
من مواصفات متدرج KEDA، ابحث عن
typeالقيمة.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"في قالب Bicep، أدخل قيمة المقياس
typeفيcustom.typeخاصية قاعدة المقياس.... rules: [ { name: 'azure-servicebus-queue-rule' custom: { type: 'azure-servicebus' ⬅️ metadata: { queueName: 'my-queue' namespace: 'service-bus-namespace' messageCount: '5' } } } ] ...من مواصفات متدرج KEDA، ابحث عن
metadataالقيم.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️في قالب Bicep، أضف جميع قيم بيانات التعريف إلى
custom.metadataقسم قاعدة المقياس.... rules: [ { name: 'azure-servicebus-queue-rule' custom: { type: 'azure-servicebus' metadata: { queueName: 'my-queue' ⬅️ namespace: 'service-bus-namespace' ⬅️ messageCount: '5' ⬅️ } } } ] ...
المصادقة
تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد المقياس لموارد Azure، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، وAzure Event Hubs، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.
استخدام البيانات السرية
لاستخدام الأسرار للمصادقة، تحتاج إلى إنشاء سر في صفيف تطبيق الحاوية secrets . يتم استخدام القيمة السرية في auth صفيف قاعدة المقياس.
يمكن لمتدرجات KEDA استخدام البيانات السرية في TriggerAuthentication التي تشير إليها الخاصية authenticationRef . يمكنك تعيين كائن TriggerAuthentication إلى قاعدة مقياس Container Apps.
ابحث عن
TriggerAuthenticationالكائن المشار إليه بواسطة مواصفات KEDAScaledObject.في
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في قالب Bicep، لكل سر:
إضافة سر إلى صفيف تطبيق
secretsالحاوية الذي يحتوي على الاسم والقيمة السريين.إضافة إدخال إلى
authصفيف قاعدة المقياس.تعيين قيمة الخاصية
triggerParameterإلى قيمة الخاصيةsecretTargetRef.parameterتعيين قيمة الخاصية
secretRefإلى اسم الخاصيةsecretTargetRef'skey.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.
قبل استخدام التعليمات البرمجية التالية، استبدل العناصر النائبة المحيطة <> بالقيم الخاصة بك.
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.
أولا، يمكنك تعريف نوع قاعدة المقياس وبيانات التعريف الخاصة بها.
من مواصفات متدرج KEDA، ابحث عن
typeالقيمة.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"في قالب ARM، أدخل قيمة المقياس
typeفيcustom.typeخاصية قاعدة المقياس.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", ⬅️ "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...من مواصفات متدرج KEDA، ابحث عن
metadataالقيم.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️في قالب ARM، أضف كافة قيم بيانات التعريف إلى
custom.metadataقسم قاعدة المقياس.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", ⬅️ "namespace": "service-bus-namespace", ⬅️ "messageCount": "5" ⬅️ } } } ] ...
المصادقة
تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد المقياس لموارد Azure، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، وAzure Event Hubs، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.
استخدام البيانات السرية
لاستخدام الأسرار للمصادقة، تحتاج إلى إنشاء سر في صفيف تطبيق الحاوية secrets . يتم استخدام القيمة السرية في auth صفيف قاعدة المقياس.
يمكن لمتدرجات KEDA استخدام البيانات السرية في TriggerAuthentication التي تشير إليها الخاصية authenticationRef . يمكنك تعيين كائن TriggerAuthentication إلى قاعدة مقياس Container Apps.
ابحث عن
TriggerAuthenticationالكائن المشار إليه بواسطة مواصفات KEDAScaledObject.في
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في قالب ARM، لكل سر:
إضافة سر إلى صفيف تطبيق
secretsالحاوية الذي يحتوي على الاسم والقيمة السريين.إضافة إدخال إلى
authصفيف قاعدة المقياس.تعيين قيمة الخاصية
triggerParameterإلى قيمة الخاصيةsecretTargetRef.parameterتعيين قيمة الخاصية
secretRefإلى اسم الخاصيةsecretTargetRef'skey.
{ ... "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.
قبل استخدام التعليمات البرمجية التالية، استبدل العناصر النائبة المحيطة <> بالقيم الخاصة بك.
"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، ابحث عن
typeالقيمة.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"في الأمر 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"من مواصفات متدرج KEDA، ابحث عن
metadataالقيم.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️في الأمر 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"
المصادقة
تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد المقياس لموارد Azure، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، وAzure Event Hubs، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.
استخدام البيانات السرية
لتكوين المصادقة المستندة إلى الأسرار لقاعدة مقياس Container Apps، يمكنك تكوين الأسرار في تطبيق الحاوية والإشارة إليها في قاعدة المقياس.
يدعم مقياس KEDA الأسرار في TriggerAuthentication التي تستخدمها الخاصية authenticationRef للرجوع إليها. يمكنك تعيين TriggerAuthentication الكائن إلى قاعدة مقياس Container Apps.
ابحث عن
TriggerAuthenticationالكائن المشار إليه بواسطة مواصفات KEDAScaledObject. تحديد كل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في تطبيق الحاوية ، قم بإنشاء الأسرار التي تطابق الخصائص
secretTargetRef.في الأمر CLI، قم بتعيين معلمات لكل
secretTargetRefإدخال.إنشاء إدخال سري باستخدام المعلمة
--secrets. إذا كانت هناك أسرار متعددة، ففصلها بمسافة.إنشاء إدخال مصادقة باستخدام المعلمة
--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.
قبل استخدام التعليمات البرمجية التالية، استبدل العناصر النائبة المحيطة <> بالقيم الخاصة بك.
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>
انتقل إلى تطبيق الحاوية في مدخل Microsoft Azure.
حدد Scale.
حدد تحرير ونشر.
حدد علامة التبويب Scale and replicas.
حدد الحد الأدنى والحد الأقصى لنطاق النسخ المتماثلة.
حدد إضافة.
في المربع اسم القاعدة، أدخل اسم قاعدة.
من القائمة المنسدلة Type، حدد Custom.
من مواصفات متدرج KEDA، ابحث عن
typeالقيمة.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"في المربع نوع القاعدة المخصصة، أدخل قيمة المقياس
type.من مواصفات متدرج KEDA، ابحث عن
metadataالقيم.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️في المدخل، ابحث عن قسم بيانات التعريف وحدد إضافة. أدخل الاسم والقيمة لكل عنصر في قسم بيانات تعريف مواصفات KEDA
ScaledObject.
المصادقة
تدعم قواعد مقياس تطبيقات الحاوية المصادقة المستندة إلى الأسرار. قواعد المقياس لموارد Azure، بما في ذلك Azure Queue Storage، ناقل خدمة Azure، وAzure Event Hubs، تدعم أيضا الهوية المدارة. حيثما أمكن، استخدم مصادقة الهوية المدارة لتجنب تخزين الأسرار داخل التطبيق.
استخدام البيانات السرية
في تطبيق الحاوية ، قم بإنشاء الأسرار التي تريد الرجوع إليها.
ابحث عن
TriggerAuthenticationالكائن المشار إليه بواسطة مواصفات KEDAScaledObject. تحديد كل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في قسم Authentication ، حدد Add لإنشاء إدخال لكل معلمة KEDA
secretTargetRef.
استخدام الهوية المدارة
مصادقة الهوية المدارة غير مدعومة في مدخل Microsoft Azure. استخدم 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.
- فترة التهدئة هي المدة التي تم فيها ملاحظة الحدث الأخير قبل تقليص التطبيق إلى الحد الأدنى لعدد النسخ المتماثلة.
- نافذة توسيع نطاق الاستقرار هي المدة التي يجب الانتظار خلالها قبل تنفيذ قرار توسيع النطاق بمجرد استيفاء شروط توسيع النطاق.
- نافذة تقليص الاستقرار هي المدة التي يجب انتظارها قبل تنفيذ قرار تقليص الحجم بمجرد استيفاء شروط التقليص.
- خطوة التوسيع هي عدد النسخ المتماثلة التي تتم إضافتها مع توسيع نطاق تطبيق الحاوية. يبدأ من 1، ثم يزيد إلى 4 و8 و16 و32 وما إلى ذلك، حتى الحد الأقصى لعدد النسخ المتماثلة المكونة.
- خطوة تقليص الحجم هي عدد النسخ المتماثلة التي تتم إزالتها مع تحجيم تطبيق الحاوية. تتم إزالة 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 بقائمة انتظار فارغة وينفذ الخطوات التالية:
- تحقق
my-queueكل 30 ثانية. - إذا كان طول قائمة الانتظار يساوي 0، فارجع إلى (1).
- إذا كان طول > قائمة الانتظار 0، فحجم التطبيق إلى 1.
- إذا كان طول قائمة الانتظار 50، فاحسب
desiredReplicas = ceil(50/5) = 10. - تحجيم التطبيق إلى
min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount)) - ارجع إلى (1).
إذا تم تغيير حجم التطبيق إلى الحد الأقصى لعدد النسخ المتماثلة وهو 20، فإن التحجيم يمر بنفس الخطوات السابقة. يحدث تقليص الحجم فقط إذا تم استيفاء الشرط لمدة 300 ثانية (نافذة تقليص الاستقرار). بمجرد أن يكون طول قائمة الانتظار 0، ينتظر KEDA لمدة 300 ثانية (فترة تهدئة) قبل تحجيم التطبيق إلى 0.
الاعتبارات
في وضع "المراجعات المتعددة"، تؤدي إضافة مشغل مقياس جديد إلى إنشاء مراجعة جديدة للتطبيق الخاص بك ولكن تظل المراجعة القديمة متوفرة مع قواعد المقياس القديمة. استخدم صفحة إدارة المراجعة لإدارة تخصيصات نسبة استخدام الشبكة.
لا يتم تكبد رسوم استخدام عند تغيير حجم التطبيق إلى الصفر. لمزيد من معلومات التسعير، راجع الفوترة في Azure Container Apps.
تحتاج إلى تمكين حماية البيانات لجميع تطبيقات .NET على Azure Container Apps. راجع نشر تطبيق ASP.NET Core وتوسيع نطاقه على Azure Container Apps للحصول على التفاصيل.
القيود المعروفة
التحجيم العمودي غير مدعوم.
الكميات المتماثلة هي كمية مستهدفة وليست ضماناً.
إذا كنت تستخدم الجهات الفاعلة في Dapr لإدارة الحالات، فيجب أن تضع في اعتبارك أن التحجيم إلى الصفر غير مدعوم. يستخدم Dapr الجهات الفاعلة الظاهرية لإدارة المكالمات غير المتزامنة، ما يعني أن تمثيلهم في الذاكرة غير مرتبط بهويتهم أو حياتهم.
تغيير وكلاء KEDA من خلال إعدادات الوكلاء غير مدعوم. ضع في اعتبارك استخدام ملفات تعريف حمل العمل مع بوابة NAT أو مسار معرف من قبل المستخدم (UDR) لإرسال نسبة استخدام الشبكة إلى جهاز شبكة، حيث يمكن فحص حركة المرور أو نقلها من هناك.