الوظائف في Azure Container Apps

تمكنك وظائف Azure Container Apps من تشغيل المهام الحاوية التي يتم تنفيذها لمدة محدودة والخروج منها. يمكنك استخدام المهام لتنفيذ مهام مثل معالجة البيانات أو التعلم الآلي أو أي سيناريو حيث تكون المعالجة عند الطلب مطلوبة.

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

مقارنة تطبيقات الحاوية ومهامها

هناك نوعان من موارد الحوسبة في Azure Container Apps: التطبيقات والوظائف.

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

الوظائف هي المهام التي تبدأ، وتشغل لمدة محدودة، وتنتهي عند الانتهاء. عادة ما يؤدي كل تنفيذ لوظيفة وحدة عمل واحدة. تبدأ عمليات تنفيذ المهام يدويا، أو على جدول زمني، أو استجابة للأحداث. تتضمن أمثلة الوظائف عمليات الدفعات التي تعمل عند الطلب والمهام المجدولة.

سيناريوهات مقدمة كمثال

يقارن الجدول التالي السيناريوهات الشائعة للتطبيقات والوظائف:

الحاوية حساب المورد ملاحظات
خادم HTTP الذي يخدم محتوى الويب وطلبات واجهة برمجة التطبيقات التطبيق تكوين قاعدة مقياس HTTP.
عملية تقوم بإنشاء تقارير مالية ليلا الوظيفة استخدم نوع مهمة الجدولة وقم بتكوين تعبير cron.
خدمة قيد التشغيل باستمرار تعالج الرسائل من قائمة انتظار ناقل خدمة Azure التطبيق تكوين قاعدة مقياس مخصصة.
مهمة تعالج رسالة واحدة أو دفعة صغيرة من الرسائل من قائمة انتظار Azure وتخرج الوظيفة استخدم نوع مهمة الحدث وقم بتكوين قاعدة مقياس مخصصة لتشغيل عمليات تنفيذ المهام عند وجود رسائل في قائمة الانتظار.
مهمة في الخلفية يتم تشغيلها عند الطلب وتنتهي عند الانتهاء الوظيفة استخدم نوع المهمة اليدوية وابدأ عمليات التنفيذ يدويا أو برمجيا باستخدام واجهة برمجة تطبيقات.
مشغل إجراءات GitHub المستضاف ذاتيا أو عامل Azure Pipelines الوظيفة استخدم نوع مهمة الحدث وقم بتكوين GitHub Actions أو قاعدة مقياس Azure Pipelines.
تطبيق Azure Functions التطبيق توزيع Azure Functions إلى Container Apps.
تطبيق يستند إلى الحدث باستخدام Azure WebJobs SDK التطبيق تكوين قاعدة مقياس لكل مصدر حدث.

المفاهيم

بيئة تطبيقات الحاوية هي حدود آمنة حول واحد أو أكثر من تطبيقات الحاوية ومهامها. تتضمن الوظائف بعض المفاهيم الرئيسية:

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

نظرة عامة على وظائف Azure Container Apps.

أنواع مشغلات الوظائف

يحدد نوع مشغل الوظيفة كيفية بدء المهمة. تتوفر أنواع المشغلات التالية:

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

المهام اليدوية

يتم تشغيل المهام اليدوية عند الطلب باستخدام Azure CLI أو مدخل Azure أو طلب إلى واجهة برمجة تطبيقات Azure Resource Manager.

تتضمن أمثلة المهام اليدوية ما يلي:

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

لإنشاء مهمة يدوية، استخدم نوع Manualالمهمة .

لإنشاء مهمة يدوية باستخدام Azure CLI، استخدم az containerapp job create الأمر . ينشئ المثال التالي مهمة يدوية تسمى my-job في مجموعة موارد تسمى my-resource-group وبيئة Container Apps باسم my-environment:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Manual" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi"

mcr.microsoft.com/k8se/quickstart-jobs:latest الصورة هي صورة حاوية نموذجية عامة تقوم بتشغيل مهمة تنتظر بضع ثوان، وتطبع رسالة إلى وحدة التحكم، ثم تخرج. لمصادقة صورة حاوية خاصة واستخدامها، راجع حاويات.

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

الوظائف المجدولة

لإنشاء مهمة مجدولة، استخدم نوع Scheduleالمهمة .

تستخدم وظائف تطبيقات الحاوية تعبيرات cron لتحديد الجداول الزمنية. وهو يدعم تنسيق تعبير cron القياسي مع خمسة حقول للدقيقة والساعة واليوم من الشهر والشهر واليوم من الأسبوع. فيما يلي أمثلة على تعبيرات cron:

Expression ‏‏الوصف
*/5 * * * * يعمل كل 5 دقائق.
0 */2 * * * يعمل كل ساعتين.
0 0 * * * يعمل كل يوم في منتصف الليل.
0 0 * * 0 يتم تشغيله كل يوم أحد عند منتصف الليل.
0 0 1 * * يعمل في اليوم الأول من كل شهر في منتصف الليل.

يتم تقييم تعبيرات Cron في الوظائف المجدولة في التوقيت العالمي المتفق عليه (UTC).

لإنشاء مهمة مجدولة باستخدام Azure CLI، استخدم az containerapp job create الأمر . ينشئ المثال التالي مهمة مجدولة باسم my-job في مجموعة موارد تسمى my-resource-group وبيئة Container Apps المسماة my-environment:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

mcr.microsoft.com/k8se/quickstart-jobs:latest الصورة هي صورة حاوية نموذجية عامة تقوم بتشغيل مهمة تنتظر بضع ثوان، وتطبع رسالة إلى وحدة التحكم، ثم تخرج. لمصادقة صورة حاوية خاصة واستخدامها، راجع حاويات.

يقوم تعبير */1 * * * * cron بتشغيل المهمة كل دقيقة.

المهام المستندة إلى الحدث

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

  • وظيفة يتم تشغيلها عند إضافة رسالة جديدة إلى قائمة انتظار مثل ناقل خدمة Azure أو Kafka أو RabbitMQ.
  • مشغل إجراءات GitHub المستضاف ذاتيا أو عامل Azure DevOps الذي يتم تشغيله عند وضع مهمة جديدة في قائمة انتظار في سير عمل أو مسار.

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

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

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

لإنشاء مهمة تستند إلى الحدث، استخدم نوع Eventالوظيفة .

لإنشاء مهمة تستند إلى الحدث باستخدام Azure CLI، استخدم az containerapp job create الأمر . ينشئ المثال التالي مهمة تستند إلى الحدث تسمى my-job في مجموعة موارد تسمى my-resource-group وبيئة Container Apps المسماة my-environment:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Event" \
    --replica-timeout 1800 \
    --image "docker.io/myuser/my-event-driven-job:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --min-executions "0" \
    --max-executions "10" \
    --scale-rule-name "queue" \
    --scale-rule-type "azure-queue" \
    --scale-rule-metadata "accountName=mystorage" "queueName=myqueue" "queueLength=1" \
    --scale-rule-auth "connection=connection-string-secret" \
    --secrets "connection-string-secret=<QUEUE_CONNECTION_STRING>"

يقوم المثال بتكوين قاعدة مقياس قائمة انتظار تخزين Azure.

للحصول على برنامج تعليمي كامل، راجع نشر مهمة تستند إلى الحدث.

بدء تنفيذ مهمة عند الطلب

لأي نوع وظيفة، يمكنك بدء تنفيذ وظيفة عند الطلب.

لبدء تنفيذ مهمة باستخدام Azure CLI، استخدم az containerapp job start الأمر . يبدأ المثال التالي في تنفيذ مهمة مسماة my-job في مجموعة موارد تسمى my-resource-group:

az containerapp job start --name "my-job" --resource-group "my-resource-group"

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

هام

عند تجاوز التكوين، يتم استبدال تكوين القالب الكامل للوظيفة بالتكوين الجديد. تأكد من أن التكوين الجديد يتضمن جميع الإعدادات المطلوبة.

لتجاوز تكوين المهمة أثناء بدء التنفيذ، استخدم az containerapp job start الأمر ومرر ملف YAML يحتوي على القالب لاستخدامه في التنفيذ. يبدأ المثال التالي في تنفيذ مهمة تسمى my-job في مجموعة موارد تسمى my-resource-group.

استرجع التكوين الحالي للوظيفة باستخدام az containerapp job show الأمر واحفظ القالب في ملف يسمى my-job-template.yaml:

az containerapp job show --name "my-job" --resource-group "my-resource-group" --query "properties.template" --output yaml > my-job-template.yaml

يقوم --query "properties.template" الخيار بإرجاع تكوين قالب الوظيفة فقط.

قم بتحرير my-job-template.yaml الملف لتجاوز تكوين الوظيفة. على سبيل المثال، لتجاوز متغيرات البيئة، قم بتعديل env القسم :

containers:
- name: print-hello
  image: ubuntu
  resources:
    cpu: 1
    memory: 2Gi
  env:
  - name: MY_NAME
    value: Azure Container Apps jobs
  args:
  - /bin/bash
  - -c
  - echo "Hello, $MY_NAME!"

ابدأ المهمة باستخدام القالب:

az containerapp job start --name "my-job" --resource-group "my-resource-group" \
    --yaml my-job-template.yaml

الحصول على محفوظات تنفيذ المهمة

تحتفظ كل مهمة Container Apps بمحفوظات عمليات تنفيذ المهام الأخيرة.

للحصول على حالات عمليات تنفيذ المهام باستخدام Azure CLI، استخدم az containerapp job execution list الأمر . يقوم المثال التالي بإرجاع حالة التنفيذ الأخير لوظيفة تسمى my-job في مجموعة موارد تسمى my-resource-group:

az containerapp job execution list --name "my-job" --resource-group "my-resource-group"

تقتصر محفوظات التنفيذ للمهام المجدولة والمستندة إلى الحدث على أحدث 100 عملية تنفيذ مهمة ناجحة وفشلت.

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

تكوين الوظيفة المتقدمة

تدعم وظائف Container Apps خيارات التكوين المتقدمة مثل إعدادات الحاوية وإعادة المحاولة والمهلات والتوازي.

إعدادات الحاوية

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

إعدادات الوظيفة

يتضمن الجدول التالي إعدادات الوظيفة التي يمكنك تكوينها:

الإعدادات خاصية Azure Resource Manager معلمة CLI ‏‏الوصف
نوع الوظيفة triggerType --trigger-type نوع الوظيفة. (Manualأو Scheduleأو Event)
مهلة النسخة المتماثلة replicaTimeout --replica-timeout الحد الأقصى للوقت بالثوان لانتظار اكتمال النسخة المتماثلة.
الفاصل الزمني للاستقصاء pollingInterval --polling-interval الوقت بالثوان للانتظار بين التحقق من الأحداث. الافتراضي هو 30 ثانية.
حد إعادة محاولة النسخة المتماثلة replicaRetryLimit --replica-retry-limit الحد الأقصى لعدد المرات لإعادة محاولة نسخة متماثلة فاشلة. لفشل نسخة متماثلة دون إعادة المحاولة، قم بتعيين القيمة إلى 0.
تماثل parallelism --parallelism عدد النسخ المتماثلة التي سيتم تشغيلها لكل تنفيذ. بالنسبة لمعظم الوظائف، قم بتعيين القيمة إلى 1.
عدد إكمال النسخ المتماثلة replicaCompletionCount --replica-completion-count عدد النسخ المتماثلة التي يجب إكمالها بنجاح حتى ينجح التنفيذ. معظمها يساوي أو أقل من التوازي. بالنسبة لمعظم الوظائف، قم بتعيين القيمة إلى 1.

مثال

ينشئ المثال التالي وظيفة بخيارات تكوين متقدمة:

az containerapp job create \
    --name "my-job" --resource-group "my-resource-group"  --environment "my-environment" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 --replica-retry-limit 3 --replica-completion-count 5 --parallelism 5 \
    --image "myregistry.azurecr.io/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --command "/startup.sh" \
    --env-vars "MY_ENV_VAR=my-value" \
    --cron-expression "0 0 * * *"  \
    --registry-server "myregistry.azurecr.io" \
    --registry-username "myregistry" \
    --registry-password "myregistrypassword"

قيود الوظائف

الميزات التالية غير مدعومة:

  • Dapr
  • الدخول والميزات ذات الصلة مثل المجالات المخصصة وشهادات SSL

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