إنشاء مهام سير عمل التطبيقات المنطقية المستندة إلى مستأجر واحد ونشرها باستخدام التطبيقات المنطقية (معاينة) التي تدعم Azure Arc
ملاحظة
هذه الإمكانية قيد المعاينة وتخضع لشروط الاستخدام التكميلية لمعاينات Microsoft Azure.
باستخدام التطبيقات المنطقية التي تدعم Azure Arc ومدخل Azure، يمكنك إنشاء مهام سير عمل التطبيقات المنطقية المستندة إلى مستأجر واحد ونشرها في البنية الأساسية Kubernetes التي تقوم بتشغيلها وإدارتها. يتم تشغيل تطبيقاتك المنطقية في موقع مخصص تم تعيينه إلى مجموعة Kubernetes ممكنة من Azure Arc حيث قمت بتثبيت حزمة ملحقات النظام الأساسي لخدمة تطبيقات Azure وتمكينها.
على سبيل المثال، يمكن أن تكون هذه المجموعة خدمة Azure Kubernetes أو Kubernetes المعدنية أو إعدادًا آخر. تمكنك حزمة الملحقات من تشغيل خدمات النظام الأساسي مثل Azure Logic Apps وخدمة Azure App Service ووظائف Azure على مجموعة Kubernetes الخاصة بك.
لمعرفة مزيد من المعلومات، راجع الوثائق التالية:
- ما هو تمكين Azure Arc لـ Logic Apps؟
- بيئة خدمة المستأجر الواحد مقابل المستأجرين المتعددين والتكامل
- نظرة عامة على Azure Arc
- نظرة عامة على Azure Kubernetes Service (AKS)
- ما تعريف Kubernetes الذي يدعم Azure Arc؟
- مواقع مخصصة على Kubernetes المُمكّنة في Azure Arc
- App Service وFunctions وLogic Apps على Azure Arc (معاينة)
- إعداد مجموعة Kubernetes الممكّنة في Azure Arc لتشغيل App Service وFunctions وLogic Apps (معاينة)
المتطلبات الأساسية
يصف هذا القسم المتطلبات الأساسية الشائعة عبر جميع الأساليب والأدوات التي يمكنك استخدامها لإنشاء مهام سير عمل التطبيق المنطقي ونشرها. تظهر المتطلبات الأساسية الخاصة بالأدوات جنبا إلى جنب مع الخطوات المقابلة لها.
حساب Azure باشتراك نشط. إذا لم يكن لديك اشتراك Azure، أنشئ حساباً مجانياً.
بيئة Kubernetes مع مجموعة Kubernetes ممكنة من Azure Arc وموقع مخصص حيث يمكنك استضافة وتشغيل Azure Logic Apps وAzure App Service وAzure Functions.
هام
تأكد من استخدام نفس موقع المورد لبيئة Kubernetes والموقع المخصص والتطبيق المنطقي.
عند إنشاء ملحق حزمة App Service على مجموعة Kubernetes، يمكنك تغيير سلوك القياس الافتراضي لتشغيل مهام سير عمل التطبيق المنطقي. عند إنشاء الملحق باستخدام الأمر Azure CLI،
az k8s-extension createتأكد من تضمين إعداد التكوين،keda.enabled=true:az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"لمعرفة مزيد من المعلومات، راجع الوثائق التالية:
هوية Azure Active Directory (Azure AD) الخاصة بك
إذا كانت مهام سير العمل بحاجة إلى استخدام أي اتصالات مستضافة من Azure، مثل Office 365 Outlook أو Azure Storage، فيجب أن يستخدم تطبيقك المنطقي هوية Azure AD للمصادقة. يمكن تشغيل التطبيقات المنطقية التي تدعم Azure Arc على أي بنية أساسية ولكنها تتطلب هوية لديها أذونات لاستخدام الاتصالات التي يستضيفها Azure. لإعداد هذه الهوية، قم بإنشاء تسجيل تطبيق في Azure AD يستخدمه تطبيقك المنطقي كهوية مطلوبة.
ملاحظة
لا يتوفر دعم الهوية المدارة حاليا للتطبيقات المنطقية التي تدعم Azure Arc.
لإنشاء تسجيل تطبيق Azure Active Directory (Azure AD) باستخدام Azure CLI، اتبع الخطوات التالية:
قم بإنشاء تسجيل تطبيق باستخدام الأمر
az ad sp create.لمراجعة كافة التفاصيل، قم بتشغيل
az ad sp showالأمر.من إخراج كلا الأمرين ، ابحث عن معرف العميل ومعرف الكائن ومعرف المستأجر والقيم السرية للعميل واحفظها ، والتي تحتاج إلى الاحتفاظ بها لاستخدامها لاحقا.
لإنشاء تسجيل تطبيق Azure Active Directory (Azure AD) باستخدام مدخل Azure، اتبع الخطوات التالية:
قم بإنشاء تسجيل تطبيق Azure AD جديد باستخدام مدخل Azure.
بعد انتهاء الإنشاء، ابحث عن تسجيل التطبيق الجديد في البوابة الإلكترونية.
في قائمة التسجيل، حدد نظرة عامة، واحفظ معرف العميل ومعرف المستأجر والقيم السرية للعميل.
للعثور على معرف الكائن، بجوار حقل التطبيق المدار في الدليل المحلي ، حدد اسم تسجيل التطبيق. من طريقة عرض الخصائص، انسخ معرف الكائن.
إنشاء تطبيقات منطقية ونشرها
استنادا إلى ما إذا كنت تريد استخدام Azure CLI أو Visual Studio Code أو مدخل Azure، حدد علامة التبويب المطابقة لمراجعة المتطلبات والخطوات المحددة.
قبل البدء ، يجب أن يكون لديك العناصر التالية:
أحدث ملحق Azure CLI مثبت على الكمبيوتر المحلي.
إذا لم يكن لديك هذا الملحق، فراجع دليل التثبيت لنظام التشغيل أو النظام الأساسي.
إذا لم تكن متأكدا من أن لديك أحدث إصدار، فاتبع الخطوات للتحقق من بيئتك وإصدار CLI.
ملحق معاينة Azure Logic Apps (قياسي) ل Azure CLI.
على الرغم من توفر Azure Logic Apps أحادي المستأجر بشكل عام، إلا أن ملحق Azure Logic Apps لا يزال قيد المعاينة.
مجموعة موارد Azure لمكان إنشاء تطبيقك المنطقي.
إذا لم يكن لديك مجموعة الموارد هذه، فاتبع الخطوات لإنشاء مجموعة الموارد.
حساب تخزين Azure لاستخدامه مع تطبيقك المنطقي للبيانات وتشغيل الاحتفاظ بالمحفوظات.
إذا لم يكن لديك حساب التخزين هذا، يمكنك إنشاء هذا الحساب عند إنشاء تطبيقك المنطقي، أو يمكنك اتباع الخطوات لإنشاء حساب تخزين.
التحقق من البيئة وإصدار CLI
سجّل الدخول إلى مدخل Azure. تحقق من أن اشتراكك نشط عن طريق تشغيل الأمر التالي:
az loginتحقق من إصدار Azure CLI الخاص بك في نافذة طرفية أو نافذة أوامر عن طريق تشغيل الأمر التالي:
az --versionللحصول على أحدث إصدار، راجع ملاحظات الإصدار الأخيرة .
إذا لم يكن لديك أحدث إصدار، فحدِّث التثبيت باتباع دليل التثبيت لنظام التشغيل أو النظام الأساسي لديك .
تثبيت ملحق Azure Logic Apps (Standard) ل Azure CLI
قم بتثبيت ملحق معاينة Azure Logic Apps (قياسي) أحادي المستأجر ل Azure CLI عن طريق تشغيل الأمر التالي:
az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"
إنشاء مجموعة الموارد
إذا لم يكن لديك بالفعل مجموعة موارد لتطبيقك المنطقي، فقم بإنشاء المجموعة عن طريق تشغيل الأمر، az group create. ما لم تقم بالفعل بتعيين اشتراك افتراضي لحساب Azure الخاص بك، تأكد من استخدام المعلمة --subscription مع اسم الاشتراك أو معرفه. خلاف ذلك ، لن تضطر إلى استخدام المعلمة --subscription .
تلميح
لتعيين اشتراك افتراضي، قم بتشغيل الأمر التالي، واستبدله MySubscription باسم الاشتراك أو معرفه.
az account set --subscription MySubscription
على سبيل المثال، ينشئ الأمر التالي مجموعة موارد تسمى MyResourceGroupName باستخدام اشتراك Azure المسمى MySubscription في الموقع eastus:
az group create --name MyResourceGroupName
--subscription MySubscription
--location eastus
إذا تم إنشاء مجموعة الموارد بنجاح، فسيظهر الإخراج على provisioningState النحو التالي Succeeded:
<...>
"name": "testResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
<...>
إنشاء تطبيق منطقي
لإنشاء تطبيق منطقي ممكن بواسطة Azure Arc، قم بتشغيل الأمر، az logicapp createمع المعلمات المطلوبة التالية. يجب أن تكون مواقع الموارد لتطبيقك المنطقي وموقعك المخصص وبيئة Kubernetes متشابهة.
| المعلمات | الوصف |
|---|---|
--name -n |
اسم فريد لتطبيقك المنطقي |
--resource-group -g |
اسم مجموعة الموارد التي تريد إنشاء تطبيق المنطق فيها. إذا لم يكن لديك واحد لاستخدامه، فقم بإنشاء مجموعة موارد. |
--storage-account -s |
حساب التخزين المطلوب استخدامه مع تطبيقك المنطقي. بالنسبة لحسابات التخزين في نفس مجموعة الموارد، استخدم قيمة سلسلة. بالنسبة لحسابات التخزين في مجموعة موارد مختلفة، استخدم معرف مورد. |
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
لإنشاء تطبيق منطقي ممكن بواسطة Azure Arc باستخدام صورة خاصة لتسجيل حاوية Azure (ACR)، قم بتشغيل الأمر، az logicapp createمع المعلمات المطلوبة التالية:
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
--deployment-container-image-name myacr.azurecr.io/myimage:tag
--docker-registry-server-password MyPassword
--docker-registry-server-user MyUsername
إظهار تفاصيل التطبيق المنطقي
لإظهار تفاصيل حول تطبيق المنطق الذي تم تمكين Azure Arc له، قم بتشغيل الأمر، az logicapp showمع المعلمات المطلوبة التالية:
az logicapp show --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
نشر تطبيق المنطق
لنشر تطبيق المنطق الذي تم تمكين Azure Arc فيه باستخدام نشر Kudu zip الخاص ب Azure App Service، قم بتشغيل الأمر، az logicapp deployment source config-zipباستخدام المعلمات المطلوبة التالية:
هام
تأكد من أن الملف المضغوط يحتوي على القطع الأثرية لمشروعك على مستوى الجذر. تتضمن هذه القطع الأثرية كافة مجلدات سير العمل وملفات التكوين مثل host.json وconnections.json وأي ملفات أخرى ذات صلة. لا تقم بإضافة أي مجلدات إضافية أو وضع أي قطع أثرية في مجلدات غير موجودة بالفعل في بنية مشروعك. على سبيل المثال، تعرض هذه القائمة مثالا MyBuildArtifacts.zip بنية الملف:
MyStatefulWorkflow1-Folder
MyStatefulWorkflow2-Folder
connections.json
host.json
az logicapp deployment source config-zip --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--src MyBuildArtifact.zip
بدء تطبيق المنطق
لبدء تشغيل تطبيق المنطق الذي تم تمكين Azure Arc، قم بتشغيل الأمر، az logicapp startمع المعلمات المطلوبة التالية:
az logicapp start --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
تطبيق إيقاف المنطق
لإيقاف تطبيق المنطق الذي تم تمكين Azure Arc عليه، قم بتشغيل الأمر، az logicapp stopباستخدام المعلمات المطلوبة التالية:
az logicapp stop --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
إعادة تشغيل التطبيق المنطقي
لإعادة تشغيل تطبيق المنطق الذي تم تمكين Azure Arc له، قم بتشغيل الأمر، az logicapp restartباستخدام المعلمات المطلوبة التالية:
az logicapp restart --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
حذف التطبيق المنطقي
لحذف تطبيق المنطق الذي تم تمكين Azure Arc له، قم بتشغيل الأمر، az logicapp deleteمع المعلمات المطلوبة التالية:
az logicapp delete --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
إعداد مصادقة الاتصال
حاليا، لا تدعم مجموعات Kubernetes التي تدعم Azure Arc استخدام الهوية المدارة لتطبيق منطقي لمصادقة اتصالات واجهة برمجة التطبيقات المدارة. يمكنك إنشاء هذه الاتصالات المدارة والمستضافة من Azure عند استخدام الموصلات المدارة في مهام سير العمل.
بدلا من ذلك، يجب عليك إنشاء تسجيل التطبيق الخاص بك في Azure Active Directory (Azure AD). يمكنك بعد ذلك استخدام تسجيل التطبيق هذا كهوية للتطبيقات المنطقية التي يتم نشرها وتشغيلها في التطبيقات المنطقية التي تدعم Azure Arc. لمزيد من المعلومات، راجع المتطلبات الأساسية للمستوى الأعلى.
من تسجيل التطبيق، تحتاج إلى معرف العميل ومعرف الكائن ومعرف المستأجر وسر العميل. إذا كنت تستخدم Visual Studio Code للنشر، فستكون لديك تجربة مضمنة لإعداد تطبيقك المنطقي باستخدام هوية Azure AD. لمزيد من المعلومات، راجع إنشاء مهام سير عمل التطبيق المنطقي ونشرها - Visual Studio Code.
ومع ذلك، إذا كنت تستخدم التعليمات البرمجية Visual Studio للتطوير، ولكنك تستخدم Azure CLI أو خطوط الأنابيب التلقائية للنشر، فاتبع الخطوات التالية.
تكوين إعدادات الاتصال والتطبيق في مشروعك
في ملف connections.json الخاص بمشروع التطبيق المنطقي، ابحث عن كائن الاتصال المدار
authentication. استبدل محتويات هذا الكائن بمعلومات تسجيل التطبيق، التي قمت بإنشائها مسبقا في متطلبات المستوى الأعلى:"authentication": { "type": "ActiveDirectoryOAuth", "audience": "https://management.core.windows.net/", "credentialType": "Secret", "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')", "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')", "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')" }في ملف local.settings.json الخاص بمشروع التطبيق المنطقي، أضف معرف العميل ومعرف الكائن ومعرف المستأجر وسر العميل. بعد النشر، تصبح هذه الإعدادات إعدادات التطبيق المنطقي.
{ "IsEncrypted": false, "Values": { <...> "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>", "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID", "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>", "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>" } }
هام
بالنسبة لسيناريوهات الإنتاج أو البيئات، تأكد من حماية هذه الأسرار والمعلومات الحساسة وتأمينها، على سبيل المثال، باستخدام مخزن رئيسي.
إضافة سياسات الوصول
في تطبيقات Azure Logic ذات المستأجر الواحد، يحتوي كل تطبيق منطقي على هوية يتم منحها أذونات بواسطة نهج الوصول لاستخدام الاتصالات المستضافة والمدارة بواسطة Azure. يمكنك إعداد نهج الوصول هذه باستخدام مدخل Azure أو عمليات نشر البنية الأساسية.
قالب ARM
في قالب Azure Resource Manager (قالب ARM)، قم بتضمين تعريف المورد التالي لكل اتصال واجهة برمجة تطبيقات مدار وقم بتوفير المعلومات التالية:
| المعلمة | الوصف |
|---|---|
| <اسم الاتصال> | اسم اتصال واجهة برمجة التطبيقات المدارة، على سبيل المثال office365 |
| <معرف الكائن> | معرف الكائن لهوية Azure AD، المحفوظة مسبقا من تسجيل التطبيق |
| <معرف المستأجر> | معرف المستأجر لهوية Azure AD الخاصة بك، والتي تم حفظها مسبقا من تسجيل التطبيق |
{
"type": "Microsoft.Web/connections/accessPolicies",
"apiVersion": "2016-06-01",
"name": "[concat('<connection-name>'),'/','<object-ID>')]",
"location": "<location>",
"dependsOn": [
"[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
],
"properties": {
"principal": {
"type": "ActiveDirectory",
"identity": {
"objectId": "<object-ID>",
"tenantId": "<tenant-ID>"
}
}
}
}
لمزيد من المعلومات، راجع وثائق Microsoft.Web/connections/accesspolicies (قالب ARM ).
مدخل Azure
لهذه المهمة، استخدم معرف العميل المحفوظ مسبقا كمعرف التطبيق.
في مدخل Azure، ابحث عن تطبيق المنطق وافتحه. في قائمة تطبيق المنطق، ضمن مهام سير العمل، حدد الاتصالات، التي تسرد جميع الاتصالات في مهام سير عمل تطبيق المنطق.
ضمن اتصالات واجهة برمجة التطبيقات، حدد اتصالا، وهو موجود
office365في هذا المثال.في قائمة الاتصال، ضمن الإعدادات، حدد سياسات الوصولإضافة>.
في جزء نهج إضافة وصول، في مربع البحث، ابحث عن معرف العميل المحفوظ مسبقا وحدده.
عند الانتهاء، حدد إضافة.
كرر هذه الخطوات لكل اتصال مستضاف من Azure في تطبيقك المنطقي.
أتمتة نشر DevOps
لإنشاء التطبيقات المنطقية التي تدعم Azure Arc ونشرها، يمكنك استخدام نفس خطوط الأنابيب والعمليات كما هو الحال بالنسبة للتطبيقات المنطقية المستندة إلى مستأجر واحد. لأتمتة عمليات نشر البنية التحتية باستخدام خطوط أنابيب DevOps، قم بإجراء التغييرات التالية على مستوى البنية الأساسية لكل من عمليات النشر غير المتعلقة بالحاويات والحاويات.
النشر القياسي (بدون حاوية)
إذا كنت تستخدم zip deploy لنشر التطبيق المنطقي، فلن تحتاج إلى إعداد سجل Docker لاستضافة صور الحاويات. على الرغم من أن التطبيقات المنطقية على Kubernetes تعمل تقنيا على الحاويات، إلا أن التطبيقات المنطقية التي تدعم Azure Arc تدير هذه الحاويات نيابة عنك. بالنسبة لهذا السيناريو، أكمل المهام التالية عند إعداد البنية الأساسية الخاصة بك:
- قم بإعلام موفر الموارد بأنك تقوم بإنشاء تطبيق منطقي على Kubernetes.
- قم بتضمين خطة خدمة التطبيق مع النشر. لمزيد من المعلومات، راجع تضمين خطة خدمة التطبيق مع النشر.
في قالب Azure Resource Manager (قالب ARM) ، قم بتضمين القيم التالية:
| Item | خاصية JSON | الوصف |
|---|---|---|
| الموقع | location |
تأكد من استخدام نفس موقع المورد (منطقة Azure) مثل موقعك المخصص وبيئة Kubernetes. يجب أن تكون مواقع الموارد لتطبيقك المنطقي وموقعك المخصص وبيئة Kubernetes متشابهة. ملاحظة: هذه القيمة ليست هي نفسها اسم موقعك المخصص. |
| نوع التطبيق | kind |
نوع التطبيق الذي تقوم بنشره حتى يتمكن النظام الأساسي ل Azure من تحديد تطبيقك. بالنسبة لتطبيقات Azure المنطقية، تبدو هذه المعلومات مثل المثال التالي: kubernetes,functionapp,workflowapp,linux |
| الموقع الممتد | extendedLocation |
يتطلب هذا الكائن موقعك المخصص لبيئة Kubernetes الخاصة بك ويجب أن يكون لديه "type" التعيين "name" إلى "CustomLocation". |
| معرف مورد خطة الاستضافة | serverFarmId |
معرف المورد الخاص بخطة خدمة التطبيقات المقترنة، المنسقة على النحو التالي:
|
| سلسلة اتصال التخزين | AzureWebJobsStorage |
سلسلة الاتصال لحساب التخزين الخاص بك ملاحظة مهمة: تحتاج إلى توفير سلسلة الاتصال لحساب التخزين الخاص بك في قالب ARM. بالنسبة لسيناريوهات الإنتاج أو البيئات، تأكد من حماية هذه الأسرار والمعلومات الحساسة وتأمينها، على سبيل المثال، باستخدام مخزن رئيسي. |
قالب ARM
يصف المثال التالي نموذجا لتعريف مورد Logic Apps ممكن بواسطة Azure Arc يمكنك استخدامه في قالب ARM. لمزيد من المعلومات، راجع وثائق تنسيق قالب Microsoft.Web/sites (JSON ).
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-12-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"kind": "kubernetes,functionapp,workflowapp,linux",
"extendedLocation": {
"name": "[parameters('customLocationId')]",
"type": "CustomLocation"
},
"properties": {
"clientAffinityEnabled": false,
"name": "[parameters('name')]",
"serverFarmId": "<hosting-plan-ID>",
"siteConfig": {
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~3"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "AzureWebJobsStorage",
"value": "<storage-connection-string>"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__id",
"value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__version",
"value": "[1.*, 2.0.0)"
},
{
"name": "APP_KIND",
"value": "workflowapp"
}
],
"use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
"linuxFxVersion": "Node|12"
}
}
}
نشر الحاوية
إذا كنت تفضل استخدام أدوات الحاوية وعمليات النشر، فيمكنك وضع تطبيقاتك المنطقية في حاويات ونشرها في التطبيقات المنطقية التي تدعم Azure Arc. بالنسبة لهذا السيناريو، أكمل المهام عالية المستوى التالية عند إعداد البنية الأساسية الخاصة بك:
قم بإعداد سجل Docker لاستضافة صور الحاوية الخاصة بك.
لاحتواء تطبيقك المنطقي في حاويات، أضف ملف Dockerfile التالي إلى المجلد الجذر لمشروع التطبيق المنطقي، واتبع الخطوات اللازمة لإنشاء صورة ونشرها في سجل Docker، على سبيل المثال، راجع البرنامج التعليمي: إنشاء صور حاوية ونشرها في السحابة باستخدام مهام تسجيل حاوية Azure.
ملاحظة
إذا كنت تستخدم SQL كموفر تخزين، فتأكد من استخدام الإصدار 3.3.1 من صورة Azure Functions أو إصدار أحدث.
FROM mcr.microsoft.com/azure-functions/node:3.3.1 ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ FUNCTIONS_V2_COMPATIBILITY_MODE=true COPY . /home/site/wwwroot RUN cd /home/site/wwwrootقم بإعلام موفر الموارد بأنك تقوم بإنشاء تطبيق منطقي على Kubernetes.
في قالب النشر، أشر إلى سجل Docker وصورة الحاوية حيث تخطط للنشر. تستخدم تطبيقات Azure Logic Apps ذات المستأجر الواحد هذه المعلومات للحصول على صورة الحاوية من سجل Docker.
قم بتضمين خطة خدمة التطبيق مع النشر. لمزيد من المعلومات، راجع تضمين خطة خدمة التطبيق مع النشر.
في قالب Azure Resource Manager (قالب ARM)، قم بتضمين القيم التالية:
| Item | خاصية JSON | الوصف |
|---|---|---|
| الموقع | location |
تأكد من استخدام نفس موقع المورد (منطقة Azure) مثل موقعك المخصص وبيئة Kubernetes. يجب أن تكون مواقع الموارد لتطبيقك المنطقي وموقعك المخصص وبيئة Kubernetes متشابهة. ملاحظة: هذه القيمة ليست هي نفسهااسم موقعك المخصص. |
| نوع التطبيق | kind |
نوع التطبيق الذي تقوم بنشره حتى يتمكن النظام الأساسي ل Azure من تحديد تطبيقك. بالنسبة لتطبيقات Azure المنطقية، تبدو هذه المعلومات مثل المثال التالي: kubernetes,functionapp,workflowapp,container |
| الموقع الممتد | extendedLocation |
يتطلب هذا الكائن "name"موقعك المخصص لبيئة Kubernetes الخاصة بك ويجب أن يكون قد "type" تم تعيينه على "CustomLocation". |
| اسم الحاوية | linuxFxVersion |
اسم الحاوية الخاصة بك، منسقة على النحو التالي: DOCKER\|<container-name> |
| معرف مورد خطة الاستضافة | serverFarmId |
معرف المورد الخاص بخطة خدمة التطبيقات المقترنة، المنسقة على النحو التالي:
|
| سلسلة اتصال التخزين | AzureWebJobsStorage |
سلسلة الاتصال لحساب التخزين الخاص بك ملاحظة مهمة: عند النشر في حاوية Docker، ستحتاج إلى توفير سلسلة الاتصال لحساب التخزين الخاص بك في قالب ARM. بالنسبة لسيناريوهات الإنتاج أو البيئات، تأكد من حماية هذه الأسرار والمعلومات الحساسة وتأمينها، على سبيل المثال، باستخدام مخزن رئيسي. |
للرجوع إلى سجل Docker وصورة الحاوية، قم بتضمين هذه القيم في القالب:
| Item | خاصية JSON | الوصف |
|---|---|---|
| عنوان URL لخادم تسجيل Docker | DOCKER_REGISTRY_SERVER_URL |
عنوان URL لخادم تسجيل Docker |
| خادم تسجيل Docker | DOCKER_REGISTRY_SERVER_USERNAME |
اسم المستخدم للوصول إلى خادم تسجيل Docker |
| كلمة مرور خادم تسجيل Docker | DOCKER_REGISTRY_SERVER_PASSWORD |
كلمة المرور للوصول إلى خادم تسجيل Docker |
قالب ARM
يصف المثال التالي نموذجا لتعريف مورد Logic Apps ممكن بواسطة Azure Arc يمكنك استخدامه في قالب ARM. لمزيد من المعلومات، راجع وثائق تنسيق قالب Microsoft.Web/sites (قالب ARM ).
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-12-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"kind": " kubernetes,functionapp,workflowapp,container",
"extendedLocation": {
"name": "[parameters('customLocationId')]",
"type": "CustomLocation"
},
"properties": {
"name": "[parameters('name')]",
"clientAffinityEnabled": false,
"serverFarmId": "<hosting-plan-ID>",
"siteConfig": {
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~3"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "AzureWebJobsStorage",
"value": "<storage-connection-string>"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__id",
"value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__version",
"value": "[1.*, 2.0.0)"
},
{
"name": "APP_KIND",
"value": "workflowapp"
},
{
"name": "DOCKER_REGISTRY_SERVER_URL",
"value": "<docker-registry-server-URL>"
},
{
"name": "DOCKER_REGISTRY_SERVER_USERNAME",
"value": "<docker-registry-server-username>"
},
{
"name": "DOCKER_REGISTRY_SERVER_PASSWORD",
"value": "<docker-registry-server-password>"
}
],
"use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
"linuxFxVersion": "DOCKER|<container-name>"
}
}
}
تضمين خطة خدمة التطبيق مع النشر
سواء كان لديك نشر قياسي أو حاوية ، يجب عليك تضمين خطة خدمة التطبيق مع النشر. على الرغم من أن هذه الخطة تصبح أقل ملاءمة مع بيئة Kubernetes ، إلا أن عمليات النشر القياسية والحاويات لا تزال تتطلب خطة App Service.
في حين أن خيارات الإنشاء الأخرى عادة ما تتعامل مع توفير مورد Azure لهذه الخطة، إذا كانت عمليات النشر الخاصة بك تستخدم قوالب "البنية التحتية كرمز برمجي"، فيجب عليك إنشاء مورد Azure للخطة بشكل صريح. لا يتغير مورد خطة الاستضافة ، فقط sku المعلومات.
في قالب Azure Resource Manager (قالب ARM)، قم بتضمين القيم التالية:
| Item | خاصية JSON | الوصف |
|---|---|---|
| الموقع | location |
تأكد من استخدام نفس موقع المورد (منطقة Azure) مثل موقعك المخصص وبيئة Kubernetes. يجب أن تكون مواقع الموارد لتطبيقك المنطقي وموقعك المخصص وبيئة Kubernetes متشابهة. ملاحظة: هذه القيمة ليست هي نفسها اسم موقعك المخصص. |
| النوع | kind |
نوع خطة خدمة التطبيق التي يتم نشرها والتي يجب أن تكون kubernetes,linux |
| الموقع الممتد | extendedLocation |
يتطلب هذا الكائن "name"موقعك المخصص لبيئة Kubernetes الخاصة بك ويجب أن يكون قد "type" تم تعيينه على "CustomLocation". |
| اسم خطة الاستضافة | name |
اسم خطة خدمة التطبيقات |
| فئة الخطة | sku: tier |
طبقة خطة خدمة التطبيق، وهي K1 |
| اسم الخطة | sku: name |
اسم خطة خدمة التطبيق، وهو Kubernetes |
قالب ARM
يصف المثال التالي نموذجا لتعريف مورد خطة خدمة التطبيقات الذي يمكنك استخدامه مع نشر التطبيق. لمزيد من المعلومات، راجع وثائق تنسيق قالب Microsoft.Web/serverfarms (قالب ARM ).
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2020-12-01",
"location": "<location>",
"name": "<hosting-plan-name>",
"kind": "kubernetes,linux",
"extendedLocation": {
"name": "[parameters('customLocationId')]",
"type": "CustomLocation"
},
"sku": {
"tier": "K1",
"name": "Kubernetes",
"capacity": 1
},
"properties": {
"kubeEnvironmentProfile": {
"id": "[parameters('kubeEnvironmentId')]"
}
}
}
تغيير سلوك القياس الافتراضي
تدير التطبيقات المنطقية التي تدعم Azure Arc تلقائيا عملية القياس لتطبيقاتك المنطقية استنادا إلى عدد المهام في قائمة انتظار التخزين الخلفية. ومع ذلك، يمكنك تغيير سلوك القياس الافتراضي.
في تطبيق منطقي، يحدد تعريف سير العمل تسلسل الإجراءات المطلوب تشغيلها. كلما تم تشغيل سير عمل، يقوم وقت تشغيل Azure Logic Apps بإنشاء مهمة لكل نوع إجراء في تعريف سير العمل. ثم ينظم وقت التشغيل هذه الوظائف في تسلسل الوظائف. يقوم هذا المتسلسل بتنسيق تشغيل المهام لتعريف سير العمل، ولكن يقوم محرك تنسيق المهام الأساسي في Azure Logic Apps بتشغيل كل مهمة.
بالنسبة لمهام سير العمل الجيدة، يستخدم محرك تنسيق المهام رسائل قائمة انتظار التخزين لجدولة المهام في أجهزة تسلسل المهام. خلف الكواليس، يراقب مرسلو الوظائف (أو مثيلات عمال المرسل) قوائم انتظار الوظائف هذه. يستخدم محرك التزامن الحد الأدنى والحد الأقصى الافتراضي لعدد مثيلات العمال لمراقبة قوائم انتظار المهام. بالنسبة لمهام سير العمل عديمة الجنسية، يحتفظ محرك التنسيق تماما بحالات الحركة في الذاكرة.
لتغيير سلوك القياس الافتراضي، يمكنك تحديد عدد مختلف من مثيلات العمال التي تراقب قوائم انتظار المهام والحد الأقصى لها.
المتطلبات الأساسية لتغيير القياس
في مجموعة Kubernetes التي تم تمكين Azure Arc لها، يجب أن يكون لملحق حزمة خدمة التطبيقات الذي تم إنشاؤه مسبقا الخاصية مضبوطة keda.enabled على true. لمزيد من المعلومات، راجع المتطلبات الأساسية للمستوى الأعلى.
تغيير عتبة القياس
في التطبيقات المنطقية التي تدعم Azure Arc، يؤدي طول قائمة انتظار المهام إلى تشغيل حدث مقياس وتعيين حد لعدد مرات حدوث القياس لتطبيقك المنطقي. يمكنك تغيير طول قائمة الانتظار، التي تم تعيين القيمة الافتراضية لها إلى 20 مهام. للتوسع في كثير من الأحيان ، قم بزيادة طول قائمة الانتظار. لتوسيع نطاق في كثير من الأحيان، قم بتقليل طول قائمة الانتظار. قد تتطلب هذه العملية بعض التجربة والخطأ.
لتغيير طول قائمة الانتظار، في ملف host.json على مستوى الجذر لمشروع التطبيق المنطقي، قم بتعيين Runtime.ScaleMonitor.KEDA.TargetQueueLength الخاصية، على سبيل المثال:
"extensions": {
"workflow": {
"settings": {
"Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
}
}
}
تغيير الحد الأقصى للإنتاجية
على مورد تطبيق منطقي موجود، يمكنك تغيير الحد الأقصى لعدد مثيلات العاملين، والذي تم تعيين القيمة الافتراضية إلى 2. تتحكم هذه القيمة في الحد الأعلى لعدد مثيلات العمال التي يمكنها مراقبة قوائم انتظار الوظائف.
لتغيير هذا الحد الأقصى، استخدم Azure CLI (إنشاء التطبيق المنطقي فقط) ومدخل Azure.
Azure CLI
لإنشاء تطبيق منطقي جديد، قم بتشغيل الأمر، az logicapp createباستخدام المعلمات التالية:
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
[--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]
لتكوين الحد الأقصى لعدد المثيلات، استخدم المعلمة --settings :
az logicapp config appsettings set --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--settings "K8SE_APP_MAX_INSTANCE_COUNT=10"
مدخل Azure
في إعدادات تطبيق المنطق المستند إلى مستأجر واحد، أضف قيمة الإعداد أو حررها K8SE_APP_MAX_INSTANCE_COUNT باتباع الخطوات التالية:
في مدخل Azure، ابحث عن تطبيق المنطق المستند إلى مستأجر واحد وافتحه.
في قائمة التطبيق المنطقي، ضمن الإعدادات، حدد تكوين.
في جزء التكوين ، ضمن إعدادات التطبيق، يمكنك إما إضافة إعداد تطبيق جديد أو تحرير القيمة الموجودة، إذا تمت إضافتها بالفعل.
حدد إعداد تطبيق جديد، وأضف
K8SE_APP_MAX_INSTANCE_COUNTالإعداد بالقيمة القصوى التي تريدها.قم بتحرير القيمة الموجودة للإعداد
K8SE_APP_MAX_INSTANCE_COUNT.
عند الانتهاء، احفظ التغييرات.
تغيير الحد الأدنى للإنتاجية
على مورد تطبيق منطقي موجود، يمكنك تغيير الحد الأدنى لعدد مثيلات العاملين، والذي تم تعيين القيمة الافتراضية إلى 1. تتحكم هذه القيمة في الحد الأدنى لعدد مثيلات العمال التي يمكنها مراقبة قوائم انتظار الوظائف. للحصول على توفر أو أداء عاليين، قم بزيادة هذه القيمة.
لتغيير هذا الحد الأدنى، استخدم Azure CLI أو مدخل Azure.
Azure CLI
بالنسبة لمورد تطبيق منطقي موجود، قم بتشغيل الأمر، az logicapp scaleباستخدام المعلمات التالية:
az logicapp scale --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--instance-count 5
لإنشاء تطبيق منطقي جديد، قم بتشغيل الأمر، az logicapp createباستخدام المعلمات التالية:
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
[--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]
مدخل Azure
في إعدادات التطبيق المنطقي المستند إلى مستأجر واحد، قم بتغيير قيمة الخاصية "توسيع النطاق" باتباع الخطوات التالية:
في مدخل Azure، ابحث عن تطبيق المنطق المستند إلى مستأجر واحد وافتحه.
في قائمة التطبيق المنطقي، ضمن الإعدادات، حدد قياس.
في الجزء تغيير الحجم ، اسحب شريط تمرير الحد الأدنى للمثيلات إلى القيمة التي تريدها.
عند الانتهاء، احفظ التغييرات.
استكشاف المشاكل وإصلاحها
للحصول على مزيد من المعلومات حول التطبيقات المنطقية المنشورة، جرب الخيارات التالية:
الوصول إلى إعدادات التطبيق وتكوينه
للوصول إلى إعدادات التطبيق، قم بتشغيل الأمر، az logicapp config appsettingsمع المعلمات التالية:
az logicapp config appsettings list --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
لتكوين إعداد تطبيق، قم بتشغيل الأمر، az logicapp config appsettings setمع المعلمات التالية. تأكد من استخدام المعلمة --settings مع اسم الإعداد وقيمته.
az logicapp config appsettings set --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--settings "MySetting=1"
لحذف إعداد تطبيق، قم بتشغيل الأمر، ، az logicapp config appsettings deleteباستخدام المعلمات التالية. تأكد من استخدام المعلمة --setting-names مع اسم الإعداد الذي تريد حذفه.
az logicapp config appsettings delete --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--setting-names MySetting
عرض خصائص التطبيق المنطقي
لعرض معلومات تطبيقك وخصائصه، قم بتشغيل الأمر، az logicapp showباستخدام المعلمات التالية:
az logicapp show --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
مراقبة نشاط سير العمل
لعرض النشاط لسير عمل في تطبيق المنطق الخاص بك، اتبع الخطوات التالية:
في مدخل Azure، ابحث عن تطبيق المنطق المنشور وافتحه.
من القائمة تطبيق المنطق، حدد سير العمل، ثم حدد سير العمل.
في قائمة سير العمل، حدد مراقبة.
جمع السجلات
للحصول على بيانات مسجلة حول تطبيقك المنطقي، قم بتمكين تطبيق Insights على تطبيقك المنطقي إذا لم يكن ممكنا بالفعل.