استضافة Azure Container Apps ل Azure Functions

توفر Azure Functions دعما متكاملا لتطوير تطبيقات الوظائف المعبأة في حاويات ونشرها وإدارتها على Azure Container Apps. استخدم Azure Container Apps لاستضافة حاويات تطبيق الوظائف عندما تحتاج إلى تشغيل الوظائف المستندة إلى الحدث في Azure في نفس البيئة مثل الخدمات المصغرة الأخرى أو واجهات برمجة التطبيقات أو مواقع الويب أو مهام سير العمل أو أي برامج مستضافة على الحاوية. تتيح لك استضافة Container Apps تشغيل وظائفك في بيئة مدارة بالكامل وقائمة على Kubernetes مع دعم مضمن للمراقبة مفتوحة المصدر وmTLS وDpr وKubernetes المستندة إلى الأحداث (KEDA).

يمكنك كتابة التعليمات البرمجية للدالة الخاصة بك في أي مكدس لغة تدعمه الدالات. يمكنك استخدام نفس مشغلات الوظائف والروابط مع التحجيم المستند إلى الحدث. يمكنك أيضا استخدام أدوات عميل Functions الموجودة ومدخل Azure لإنشاء حاويات، ونشر حاويات تطبيق الوظائف إلى Container Apps، وتكوين النشر المستمر.

تكامل تطبيقات الحاوية يعني أيضا أن تكوينات الشبكة وإمكانية المراقبة، والتي يتم تعريفها على مستوى بيئة تطبيق الحاوية، تنطبق على تطبيق الوظائف الخاص بك كما تفعل على جميع الخدمات المصغرة التي تعمل في بيئة Container Apps. يمكنك أيضا الحصول على القدرات السحابية الأصلية الأخرى لتطبيقات الحاويات، بما في ذلك KEDA وDpr و Envoy. لا يزال بإمكانك استخدام Application Insights لمراقبة عمليات تنفيذ الوظائف، ويمكن لتطبيق الوظائف الوصول إلى نفس موارد الشبكات الظاهرية التي توفرها البيئة.

للحصول على نظرة عامة حول خيارات استضافة الحاويات ل Azure Functions، راجع دعم حاوية Linux في Azure Functions.

ملفات تعريف حمل العمل والاستضافة

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

ملف تعريف حمل العمل الاستهلاك هو ملف التعريف الافتراضي المضاف إلى كل نوع بيئة ملفات تعريف حمل العمل. يمكنك إضافة ملفات تعريف حمل العمل المخصصة إلى بيئتك أثناء إنشاء بيئة أو بعد إنشائها. لمعرفة المزيد حول ملفات تعريف حمل العمل، راجع ملفات تعريف حمل العمل في Azure Container Apps.

يتم دعم استضافة تطبيقات الحاوية لتطبيقات الوظائف المعبأة في حاويات في جميع المناطق التي تدعم تطبيقات الحاوية.

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

تدعم Azure Functions على Azure Container Apps الاستضافة التي تدعم وحدة معالجة الرسومات في الخطة المخصصة مع ملفات تعريف حمل العمل.

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

لمعرفة كيفية إنشاء بيئة Container Apps مع ملفات تعريف حمل العمل ونشر حاوية تطبيق دالة إلى حمل عمل معين، راجع ملفات تعريف حمل عمل تطبيقات الحاوية.

دالات في حاويات

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

عند إنشاء مشروع تعليمة برمجية باستخدام Azure Functions Core Tools وتضمين --docker الخيار، تقوم Core Tools بإنشاء Dockerfile بالصورة الأساسية الصحيحة، والتي يمكنك استخدامها كنقطة بداية عند إنشاء الحاوية الخاصة بك.

هام

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

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

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

خيارات النشر

تدعم Azure Functions حاليا الطرق التالية لنشر تطبيق دالة حاوية إلى Azure Container Apps:

تكامل الشبكة الظاهرية

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

تكوين قواعد المقياس

تم تصميم Azure Functions على تطبيقات الحاوية لتكوين معلمات وقواعد المقياس وفقا لهدف الحدث. لا داعي للقلق بشأن تكوين الكائنات التي تم تغيير حجمها في KEDA. لا يزال بإمكانك تعيين الحد الأدنى والحد الأقصى لعدد النسخ المتماثلة عند إنشاء تطبيق الوظائف أو تعديله. يعين أمر Azure CLI التالي الحد الأدنى والحد الأقصى لعدد النسخ المتماثلة عند إنشاء تطبيق دالة جديد في بيئة Container Apps من Azure Container Registry:

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

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

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

مجموعات الموارد المدارة

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

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

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

إذا واجهت أي مشكلات في مجموعات الموارد المدارة هذه، فيجب عليك الاتصال بالدعم.

اعتبارات استضافة تطبيقات الحاوية

ضع في اعتبارك الاعتبارات التالية عند نشر حاويات تطبيق الوظائف إلى Container Apps:

  • بينما يمكن استخدام جميع المشغلات، يمكن فقط للمشغلات التالية تغيير الحجم ديناميكيا (من صفر مثيلات) عند التشغيل في بيئة Container Apps:
    • HTTP
    • Azure Queue Storage
    • ناقل خدمة Azure
    • مراكز أحداث Azure
    • Kafka
    • ⁧⁩عدّاد الوقت⁧⁩
  • تنطبق هذه القيود على مشغلات Kafka:
    • لا يتم دعم قيمة البروتوكول عند ssl استضافتها على Container Apps. استخدم قيمة بروتوكول مختلفة.
    • لكي يتم تغيير حجم مشغل Kafka ديناميكيا عند الاتصال بمراكز الأحداث، username يجب حل الخاصية إلى إعداد تطبيق يحتوي على قيمة اسم المستخدم الفعلية. عند استخدام القيمة الافتراضية $ConnectionString ، لن يتمكن مشغل Kafka من التسبب في تغيير حجم التطبيق ديناميكيا.
  • بالنسبة لتعريفات نهج تطبيقات الحاوية المضمنة، تنطبق حاليا النهج على مستوى البيئة فقط على حاويات Azure Functions.
  • يمكنك استخدام الهويات المدارة لكل من اتصالات المشغل والربط والنشر من Azure Container Registry.
  • عندما يستخدم تطبيق الوظائف والنشر المستند إلى سجل حاويات Azure الاتصالات المدارة المستندة إلى الهوية، لا يمكنك تعديل إعدادات تخصيص وحدة المعالجة المركزية والذاكرة في المدخل. يجب عليك بدلا من ذلك استخدام Azure CLI.
  • لا يمكنك حاليا نقل نشر تطبيق الوظائف المستضاف في Container Apps بين مجموعات الموارد أو بين الاشتراكات. بدلا من ذلك، سيتعين عليك إعادة إنشاء نشر التطبيق الموجود في حاويات في مجموعة موارد جديدة أو اشتراك أو منطقة جديدة.
  • عند استخدام Container Apps، ليس لديك حق الوصول المباشر إلى واجهات برمجة تطبيقات Kubernetes ذات المستوى الأدنى.
  • containerapp يتعارض الملحق مع الملحق appservice-kube في Azure CLI. إذا كنت قد نشرت التطبيقات مسبقا إلى Azure Arc، فقم بتشغيل az extension list وتأكد من عدم تثبيتها appservice-kube . إذا كان كذلك، يمكنك إزالته عن طريق تشغيل az extension remove -n appservice-kube.

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