العمل مع الحاويات وAzure Functions

توضح هذه المقالة الدعم الذي توفره Azure Functions للعمل مع تطبيقات الوظائف الحاوية التي تعمل في بيئة Azure Container Apps. لمزيد من المعلومات، راجع استضافة Azure Container Apps ل Azure Functions.

توضح هذه المقالة الدعم الذي توفره Azure Functions للعمل مع تطبيقات الوظائف التي تعمل في حاويات Linux.

اختر بيئة الاستضافة لتطبيق الوظائف المعبأة في حاويات في أعلى المقالة.

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

إنشاء أول Azure Functions في حاويات على Azure Container Apps

لمعرفة المزيد حول عمليات النشر إلى Azure Container Apps، راجع استضافة Azure Container Apps لوظائف Azure.

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

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

هام

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

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

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

إنشاء Dockerfile

توفر أدوات الوظائف خيار Docker الذي ينشئ Dockerfile مع مشروع التعليمات البرمجية للوظائف. يمكنك استخدام هذا الملف مع Docker لإنشاء وظائفك في حاوية مشتقة من الصورة الأساسية الصحيحة (اللغة والإصدار).

تعتمد طريقة إنشاء Dockerfile على كيفية إنشاء مشروعك.

  • عند إنشاء مشروع Functions باستخدام Azure Functions Core Tools، قم بتضمين --docker الخيار عند تشغيل func init الأمر، كما في المثال التالي:

    func init --docker
    
  • يمكنك أيضا إضافة Dockerfile إلى مشروع موجود باستخدام --docker-only الخيار عند تشغيل func init الأمر في مجلد مشروع موجود، كما في المثال التالي:

    func init --docker-only
    

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

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

باستخدام Dockerfile الذي تم إنشاؤه بواسطة Core Tools في مشروع التعليمات البرمجية، يمكنك استخدام Docker لإنشاء تطبيق الوظائف المضمن في حاويات على الكمبيوتر المحلي. ينشئ الأمر التالي docker build صورة للوظائف الحاوية الخاصة بك من المشروع في الدليل المحلي:

docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .

للحصول على مثال حول كيفية إنشاء الحاوية، راجع إنشاء صورة الحاوية والتحقق محليا.

تحديث صورة في السجل

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

az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .

استبدل <REGISTRY_NAME> بمثيل Container Registry الخاص بك و <LOGIN_SERVER> باسم خادم تسجيل الدخول.

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

az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>

في هذا المثال، <IMAGE_NAME> هو الاسم الكامل للصورة الجديدة مع الإصدار. تتطلب السجلات الخاصة توفير اسم مستخدم وكلمة مرور. قم بتخزين بيانات الاعتماد هذه بشكل آمن.

يجب عليك أيضا التفكير في تمكين النشر المستمر.

إنشاء مدخل Azure باستخدام الحاويات

عند إنشاء تطبيق دالة في مدخل Microsoft Azure، يمكنك اختيار نشر تطبيق الوظائف من صورة في سجل حاوية. لمعرفة كيفية إنشاء تطبيق دالة في حاوية في سجل حاوية، راجع إنشاء تطبيق الوظائف في حاوية.

تنشئ الخطوات التالية تطبيق وظائف موجود في حاويات وتنشره من سجل حاوية.

  1. من قائمة مدخل Azure أو الصفحة الرئيسية، حدد Create a resource.

  2. في صفحة New، قم باختيار Compute>Function App.

  3. ضمن تحديد خيار استضافة، اختر خطة>Premium حدد.

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

  4. في صفحة Basics، استخدم إعدادات تطبيق الوظائف على النحو المحدد في الجدول التالي:

    الإعدادات القيمة المقترحة ‏‏الوصف
    الاشتراك اشتراكك الاشتراك الذي تقوم فيه بإنشاء تطبيق الوظائف الخاص بك.
    مجموعة الموارد myResourceGroup اسم مجموعة الموارد الجديدة التي تقوم فيها بإنشاء تطبيق الوظائف. يجب إنشاء مجموعة موارد لأن هناك قيود معروفة عند إنشاء تطبيقات وظائف جديدة في مجموعة موارد موجودة.
    اسم تطبيق الوظائف اسم فريد* الاسم الذي يحدد تطبيق الوظائف الجديد. الأحرف الصالحة هي a-z (غير حساسة لحالة الأحرف)، و0-9، و-.
    هل تريد نشر التعليمات البرمجية أو صورة الحاوية؟ صورة الحاوية نشر تطبيق دالة في حاوية من سجل. لإنشاء تطبيق دالة في السجل، راجع إنشاء تطبيق دالة في حاوية محلية.
    المنطقة المنطقة المفضلة حدد منطقة قريبة منك أو قريبة من الخدمات الأخرى التي تصل دوالك إليها.
    خطة Linux خطة جديدة (افتراضي) إنشاء خطة Premium جديدة لاستضافة تطبيقك. يمكنك أيضا اختيار خطة متميزة موجودة.
    خطة التسعير Elastic Premium EP1 EP1 هي الخطة الأكثر بأسعار معقولة. يمكنك اختيار خطة أكبر إذا كنت بحاجة إلى ذلك.
    التكرار في المنطقة ⁧⁩مُعطل⁧⁩ لا تحتاج إلى هذه الميزة في تطبيق غير منتج.

    *يجب أن يكون اسم التطبيق فريدا عالميا بين جميع تطبيقات Azure Functions المستضافة.

  5. اقبل الخيارات الافتراضية لإنشاء حساب تخزين جديد في علامة التبويب Storage ومثيل Application Insight جديد في علامة التبويب Monitoring . يمكنك أيضا اختيار استخدام حساب تخزين موجود أو مثيل Application Insights.

  6. حدد "تقييم + إنشاء"لتقييم اختيارات تكوين التطبيق.

  7. في صفحة Review + create ، راجع الإعدادات الخاصة بك، ثم حدد Create لتوفير تطبيق الوظائف باستخدام صورة أساسية افتراضية.

  8. بعد إنشاء مورد تطبيق الوظائف، حدد Go to resource وفي صفحة تطبيق الوظائف حدد Deployment center.

  9. في مركز النشر، يمكنك توصيل سجل الحاوية كمصدر للصورة. يمكنك أيضا تمكين GitHub Actions أو Azure Pipelines لنشر مستمر أكثر قوة للتحديثات إلى الحاوية الخاصة بك في السجل.

إنشاء مدخل Azure باستخدام الحاويات

عند إنشاء تطبيق دالة في مدخل Microsoft Azure، يمكنك اختيار نشر تطبيق الوظائف من صورة في سجل حاوية. لمعرفة كيفية إنشاء تطبيق دالة في حاوية في سجل حاوية، راجع إنشاء تطبيق الوظائف في حاوية.

تنشئ الخطوات التالية تطبيق وظائف موجود في حاويات وتنشره من سجل حاوية.

  1. من قائمة مدخل Azure أو الصفحة الرئيسية، حدد Create a resource.

  2. في صفحة New، قم باختيار Compute>Function App.

  3. ضمن تحديد خيار استضافة، اختر بيئة تطبيقات الحاوية>حدد.

  4. في صفحة Basics، استخدم إعدادات تطبيق الوظائف على النحو المحدد في الجدول التالي:

    الإعدادات القيمة المقترحة ‏‏الوصف
    الاشتراك اشتراكك الاشتراك الذي تقوم فيه بإنشاء تطبيق الوظائف الخاص بك.
    مجموعة الموارد myResourceGroup اسم مجموعة الموارد الجديدة التي تقوم فيها بإنشاء تطبيق الوظائف. يجب إنشاء مجموعة موارد لأن هناك قيود معروفة عند إنشاء تطبيقات وظائف جديدة في مجموعة موارد موجودة.
    اسم تطبيق الوظائف اسم فريد* الاسم الذي يحدد تطبيق الوظائف الجديد. الأحرف الصالحة هي a-z (غير حساسة لحالة الأحرف)، و0-9، و-.
    المنطقة المنطقة المفضلة حدد منطقة قريبة منك أو قريبة من الخدمات الأخرى التي تصل دوالك إليها.

    *يجب أن يكون اسم التطبيق فريدا داخل بيئة Azure Container Apps.

  5. بالنسبة لبيئة Azure Container Apps، اقبل البيئة الجديدة المقترحة في خطة Consumption + Dedicated. بشكل افتراضي، يتم إنشاء البيئة مع ملف تعريف حمل العمل الافتراضي وبدون تكرار المنطقة، ما يقلل من التكاليف. لمزيد من المعلومات، راجع استضافة Azure Container Apps ل Azure Functions.

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

  6. حدد علامة التبويب Deployment وقم بإلغاء تحديد Use quickstart image. وإلا، يتم نشر تطبيق الوظائف من الصورة الأساسية للغة تطبيق الوظائف.

  7. اختر نوع الصورة الخاص بك، عام أو خاص. اختر خاص إذا كنت تستخدم Azure Container Registry أو سجلا خاصا آخر. قم بتوفير اسم الصورة، بما في ذلك بادئة السجل. إذا كنت تستخدم سجلا خاصا، فوفر بيانات اعتماد مصادقة سجل الصور.

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

  9. حدد "تقييم + إنشاء"لتقييم اختيارات تكوين التطبيق.

  10. في صفحة Review + create ، راجع الإعدادات الخاصة بك، ثم حدد Create لتوفير تطبيق الوظائف ونشر صورة الحاوية من السجل.

العمل مع الصور في Azure Functions

عند نشر حاوية تطبيق الوظائف من سجل، تحتفظ Functions بمعلومات حول الصورة المصدر. استخدم الأوامر التالية للحصول على بيانات حول الصورة أو تغيير صورة التوزيع المستخدمة:

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

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

يمكنك أيضا تعيين مقدار وحدة المعالجة المركزية وموارد الذاكرة المخصصة لتطبيقك.

يمكنك إنشاء وإدارة كل من ملفات تعريف حمل العمل وتخصيصات الموارد باستخدام Azure CLI أو في مدخل Microsoft Azure.

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

يمكنك إضافة ملفات التعريف وتحريرها وحذفها في بيئتك. على سبيل المثال، راجع إضافة ملفات تعريف.

عند إنشاء تطبيق دالة في حاوية في بيئة تم فيها تمكين ملفات تعريف حمل العمل، يجب عليك أيضا تحديد ملف التعريف الذي سيتم تشغيله فيه. يمكنك القيام بذلك باستخدام معلمة --workload-profile-name az functionapp create الأمر، كما في هذا المثال:

az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI>  --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

في az functionapp create الأمر، تحدد المعلمة --environment بيئة Container Apps وتحدد المعلمة --image الصورة لاستخدامها لتطبيق الوظائف. في هذا المثال، استبدل <STORAGE_NAME> بالاسم الذي استخدمته في القسم السابق لحساب التخزين. أيضا، استبدل <APP_NAME> باسم فريد عمومي مناسب لك.

لتعيين الموارد المخصصة لتطبيقك، استبدل <CPU_COUNT> بالعدد المطلوب من وحدات المعالجة المركزية الظاهرية، بحد أدنى 0.5 حتى الحد الأقصى المسموح به من قبل ملف التعريف. بالنسبة إلى <MEMORY_SIZE>، اختر كمية ذاكرة مخصصة من 1 غيغابايت حتى الحد الأقصى المسموح به من قبل ملف التعريف.

يمكنك استخدام az functionapp container set الأمر لإدارة الموارد المخصصة وملف تعريف حمل العمل الذي يستخدمه تطبيقك.

az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name  <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

إعدادات التطبيق

تتيح لك Azure Functions العمل مع إعدادات التطبيق لتطبيقات الوظائف المعبأة في حاويات بالطريقة القياسية. لمزيد من المعلومات، راجع استخدام إعدادات التطبيق.

تفعيل النشر المستمر إلى Azure

هام

النشر المستند إلى خطاف الويب غير مدعوم حاليا عند تشغيل الحاوية الخاصة بك في خطة Elastic Premium. إذا كنت بحاجة إلى استخدام أسلوب النشر المستمر الموضح في هذا القسم، فوزع الحاوية بدلا من ذلك في خطة App Service. عند التشغيل في خطة Elastic Premium، تحتاج إلى إعادة تشغيل التطبيق يدويا كلما قمت بإجراء تحديثات على الحاوية في المستودع.

يمكنك تمكين دالات Azure لتحديث نشر صورة تلقائيًّا كلما قمت بتحديث الصورة في السجل.

  1. استخدم الأمر التالي لتمكين النشر المستمر والحصول على عنوان URL الخاص بخطاف الويب:

    az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
    

    az functionapp deployment container config يتيح الأمر النشر المستمر ويعيد عنوان URL الخاص بخطاف الويب للتوزيع. يمكنك استرداد عنوان URL هذا في أي وقت لاحق باستخدام az functionapp deployment container show-cd-url الأمر .

    كما كان الحال من قبل، استبدل <APP_NAME> باسم تطبيق دالتك.

  2. نسخ عنوان نشر webhook للنشر إلى الحافظة.

  3. افتح مركز Docker، سجل الدخول، وحدد Repositories على شريط التنقل. وحدد موقع الصورة وحددها، وحدد علامة التبويب Webhooks، وحدد Webhook name، وألصق عنوان URL الخاص بك في Webhook URL، ثم حدد Create.

    لقطة شاشة توضح كيفية إضافة خطاف الويب في نافذة Docker Hub.

  4. مع مجموعة webhook، تعيد Azure Functions نشر صورتك كلما قمت بتحديثها في Docker Hub.

تفعيل اتصالات SSH

تمكن SSH من الاتصال الآمن بين حاوية وعميل. مع تمكين SSH، يمكنك الاتصال بالحاوية الخاصة بك باستخدام App Service Advanced Tools (Kudu). لسهولة الاتصال بالحاوية الخاصة بك باستخدام SSH، توفر وظائف Azure صورة أساسية تم تمكين SSH بالفعل. تحتاج فقط تعديل Dockerfile الخاص بك، ثم إعادة إنشاء وإعادة نشر الصورة. يمكنك بعد ذلك الاتصال بالحاوية من خلال الأدوات المتقدمة (Kudu).

  1. في Dockerfile الخاص بك، ألحق السلسلة -appservice بالصورة الأساسية في التعليمات الخاصة بكFROM، كما في المثال التالي:

    FROM mcr.microsoft.com/azure-functions/node:4-node18-appservice
    

    يستخدم هذا المثال الإصدار الذي يدعم SSH من الصورة الأساسية للإصدار Node.js 18. قم بزيارة مستودعات الصورة الأساسية ل Azure Functions للتحقق من أنك تستخدم أحدث إصدار من الصورة الأساسية التي تدعم SSH.

  2. أعد إنشاء الصورة باستخدام docker build الأمر ، واستبدل <DOCKER_ID> بمعرف حساب Docker Hub الخاص بك، كما في المثال التالي.

    docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    
  3. ادفع الصورة المحدثة إلى Docker Hub، والتي من المفترض أن تستغرق وقتًا أقل بكثير من الدفعة الأولى. يجب تحميل الأجزاء المحدثة فقط من الصورة الآن.

    docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
    
  4. تقوم دالات Azure تلقائيًّا بإعادة نشر الصورة إلى تطبيق الدالات الخاص بك؛ العملية تجري في أقل من دقيقة.

  5. في المستعرض، افتح https://<app_name>.scm.azurewebsites.net/ واستبدل <app_name> اسم فريد. عنوان URL هذا هو نقطة نهاية Advanced Tools (Kudu) لحاوية تطبيق الدالة.

  6. قم بتسجيل الدخول إلى حساب Azure، ثم حدد SSH لإنشاء اتصال مع الحاوية. قد يستغرق الاتصال بضع لحظات إذا كان Azure لا يزال يقوم بتحديث صورة الحاوية.

  7. بعد إنشاء اتصال مع الحاوية الخاصة بك، قم بتشغيل top الأمر لعرض العمليات قيد التشغيل حاليًّا.

    لقطة شاشة تعرض أمر Linux العلوي قيد التشغيل في جلسة SSH.

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

توفر المقالات التالية المزيد من المعلومات حول نشر الحاويات وإدارتها: