البرنامج التعليمي: توزيع تطبيق معالجة في الخلفية باستخدام Azure Container Apps

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

‏‫ستتعلم كيفية:

  • إنشاء بيئة Container Apps لنشر تطبيقات الحاوية
  • إنشاء قائمة انتظار Azure Storage لإرسال رسائل إلى تطبيق الحاوية
  • توزيع تطبيق معالجة في الخلفية كتطبيق حاوية
  • التحقُّق من معالجة تطبيق الحاوية لرسائل قائمة الانتظار

الإعداد

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

az login

للتأكد من تشغيل أحدث إصدار من CLI، قم بتشغيل أمر الترقية.

az upgrade

بعد ذلك، قم بتثبيت أو تحديث ملحق Azure Container Apps ل CLI.

az extension add --name containerapp --upgrade

الآن بعد تثبيت الملحق أو الوحدة النمطية Microsoft.App الحالية، قم بتسجيل مساحات الأسماء و Microsoft.OperationalInsights .

إشعار

رٌحِّلت موارد Azure Container Apps من مساحة الاسم Microsoft.Web إلى مساحة الاسم Microsoft.App. راجع ترحيل مساحة الاسم من Microsoft.Web إلى Microsoft.App في مارس 2022 للحصول على مزيدٍ من التفاصيل.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

تعيين متغيرات البيئة

تعيين متغيرات البيئة التالية. استبدل <العناصر النائبة> بالقيم الخاصة بك:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

إنشاء مجموعة موارد Azure

إنشاء مجموعة موارد لتنظيم الخدمات المتعلقة بنشر تطبيق الحاوية.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

إنشاء بيئة

يمكن لبيئة Azure Container Apps إنشاء حدود آمنة حول مجموعة من تطبيقات الحاويات. يتم توزيع Container Apps المنتشرة في نفس البيئة في نفس الشبكة الظاهرية وكتابة سجلات إلى نفس مساحة عمل Log Analytics.

لإنشاء البيئة، قم بتشغيل الأمر التالي:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION"

إعداد قائمة انتظار تخزين

ابدأ بتعريف اسم لحساب التخزين. يجب أن تكون أسماء حسابات التخزين فريدة داخل Azure وأن يتراوح طولها من 3 إلى 24 حرفاً وتحتوي على أرقام وأحرف صغيرة فقط.

STORAGE_ACCOUNT_NAME="<STORAGE_ACCOUNT_NAME>"

إنشاء حساب Azure Storage.

az storage account create \
  --name $STORAGE_ACCOUNT_NAME \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --sku Standard_RAGRS \
  --kind StorageV2

بعد ذلك، احصل على سلسلة الاتصال لقائمة الانتظار.

QUEUE_CONNECTION_STRING=`az storage account show-connection-string -g $RESOURCE_GROUP --name $STORAGE_ACCOUNT_NAME --query connectionString --out json | tr -d '"'`

يمكنك الآن إنشاء قائمة انتظار الرسائل.

az storage queue create \
  --name "myqueue" \
  --account-name $STORAGE_ACCOUNT_NAME \
  --connection-string $QUEUE_CONNECTION_STRING

وفي النهاية، يمكنك إرسال رسالة إلى قائمة الانتظار.

az storage message put \
  --content "Hello Queue Reader App" \
  --queue-name "myqueue" \
  --connection-string $QUEUE_CONNECTION_STRING

توزيع تطبيق الخلفية

أنشئ ملفاً باسم queue.json والصق التعليمات البرمجية للتكوين التالي في هذا الملف.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "defaultValue": "canadacentral",
            "type": "String"
        },
        "environment_name": {
            "type": "String"
        },
        "queueconnection": {
            "type": "secureString"
        }
    },
    "variables": {},
    "resources": [
    {
        "name": "queuereader",
        "type": "Microsoft.App/containerApps",
        "apiVersion": "2022-03-01",
        "kind": "containerapp",
        "location": "[parameters('location')]",
        "properties": {
            "managedEnvironmentId": "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]",
            "configuration": {
                "activeRevisionsMode": "single",
                "secrets": [
                {
                    "name": "queueconnection",
                    "value": "[parameters('queueconnection')]"
                }]
            },
            "template": {
                "containers": [
                    {
                        "image": "mcr.microsoft.com/azuredocs/containerapps-queuereader",
                        "name": "queuereader",
                        "env": [
                            {
                                "name": "QueueName",
                                "value": "myqueue"
                            },
                            {
                                "name": "QueueConnectionString",
                                "secretRef": "queueconnection"
                            }
                        ]
                    }
                ],
                "scale": {
                    "minReplicas": 1,
                    "maxReplicas": 10,
                    "rules": [
                        {
                            "name": "myqueuerule",
                            "azureQueue": {
                                "queueName": "myqueue",
                                "queueLength": 100,
                                "auth": [
                                    {
                                        "secretRef": "queueconnection",
                                        "triggerParameter": "connection"
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        }
    }]
}

يمكنك الآن إنشاء تطبيق الحاوية وتوزيعه.

az deployment group create --resource-group "$RESOURCE_GROUP" \
  --template-file ./queue.json \
  --parameters \
    environment_name="$CONTAINERAPPS_ENVIRONMENT" \
    queueconnection="$QUEUE_CONNECTION_STRING" \
    location="$LOCATION"

ينشر هذا الأمر التطبيق التجريبي من صورة الحاوية العامة المسماة mcr.microsoft.com/azuredocs/containerapps-queuereader ويعين البيانات السرية ومتغيرات البيئات التي يستخدمها التطبيق.

يتوسع التطبيق إلى 10 نسخ متماثلة استنادا إلى طول قائمة الانتظار كما هو محدد في scale قسم من قالب ARM.

تحقق من النتيجة

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

شغِّل الأمر التالي لمشاهدة الرسائل المُسجَّلة. يتطلب هذا الأمر ملحق تحليلات السجل، لذا يُرجى قبول المطالبة بتثبيت الملحق عند الطلب.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`

az monitor log-analytics query \
  --workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'queuereader' and Log_s contains 'Message ID' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s | take 5" \
  --out table

تلميح

هل تواجه مشكلات؟ اسمحوا لنا أن نعرف على GitHub عن طريق فتح مشكلة في Azure Container Apps repo.

تنظيف الموارد

بمجرد الانتهاء، قم بتشغيل الأمر التالي لحذف مجموعة الموارد التي تحتوي على موارد Container Apps.

تنبيه

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

az group delete \
  --resource-group $RESOURCE_GROUP