التشغيل السريع: إرسال الأحداث من تسجيل حاوية خاصة لشبكة الأحداث

شبكة الأحداث Azure هي خدمة توجيه أحداث مدارة كليًا توفر استهلاكًا موحدًا للحدث باستخدام نموذج Publish-subscribe. في هذه البداية السريعة، تستطيع استخدام Azure CLI لإنشاء تسجيل حاوية الاشتراك في أحداث التسجيل ثم نشر نموذج تطبيق ويب من أجل تلقي الأحداث. وأخيرًا، تشغيل صورة الحاوية push والأحداث delete وعرض حمولة الحدث في نموذج التطبيق.

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

Web browser rendering the sample web application with three received events

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

  • لقد تم تنسيق أوامر CLI Azure في هذه المقالة لـ shell Bash. لو كنت تستخدم shell مختلفة مثل PowerShell أو موجه الأوامر، فقد تحتاج إلى ضبط أحرف متابعة السطر أو خطوط تعيين متغير وفقًا لذلك. تستخدم هذه المقالة متغيرات من أجل تقليل مقدار تحرير الأمر المطلوب.

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

مجموعة موارد Azure هي حاوية منطقية تقوم فيها بنشر موارد Azure وإدارتها أيضًا. ينشئ الأمر الآتي من az group مجموعة موارد تسمى myResourceGroup في منطقة eastus. لو كنت تريد استخدام اسم مختلف لمجموعة الموارد الخاصة بك، قم بالتعيين RESOURCE_GROUP_NAME إلى قيمة مختلفة.

RESOURCE_GROUP_NAME=myResourceGroup

az group create --name $RESOURCE_GROUP_NAME --location eastus

إنشاء سجل حاويات

بعد ذلك، نشر تسجيل الحاوية في مجموعة الموارد مع الأوامر الآتية. قبل تشغيل الأمر az acr create ، قم بضبط ACR_NAME اسم للسجل الخاص بك. يجب أن يكون الاسم فريدًا داخل Azure، ويقتصر على 5-50 حرفًا أبجدية رقمية.

ACR_NAME=<acrName>

az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic

فور إنشاء التسجيل، يقوم Azure CLI بإرجاع الإخراج مماثل لما يأتي:

{
  "adminUserEnabled": false,
  "creationDate": "2018-08-16T20:02:46.569509+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry",
  "location": "eastus",
  "loginServer": "myregistry.azurecr.io",
  "name": "myregistry",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

إنشاء نقطة نهاية الحدث

في هذا القسم، يمكنك استخدام قالب Resource Manager الموجود في مستودع GitHub لنشر نموذج تطبيق ويب تم إنشاؤه مسبقا إلى Azure App Service. لاحقًا، تستطيع الاشتراك في أحداث شبكة الأحداث في السجل الخاص بك وتحديد هذا التطبيق كنقطة النهاية التي يتم إرسال الأحداث إليها.

من أجل نشر نموذج التطبيق، قم بالتعيين SITE_NAME إلى اسم فريد لتطبيق الويب الخاص بك، وتنفيذ الأوامر الآتية. يجب أن يكون اسم الموقع فريدًا في Azure لأنه يشكل جزءًا من اسم المجال المؤهل بالكامل (FQDN) لتطبيق الويب. في قسم لاحق، تستطيع الانتقال إلى FQDN التطبيق في مستعرض ويب من أجل عرض أحداث التسجيل الخاص بك.

SITE_NAME=<your-site-name>

az deployment group create \
    --resource-group $RESOURCE_GROUP_NAME \
    --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
    --parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan

بمجرد نجاح عملية النشر (قد يستغرق البشر بضع دقائق)، افتح متصفحًا وانتقل إلى تطبيق الويب للتأكد من تشغيله:

http://<your-site-name>.azurewebsites.net

من المفترض أن ترى نموذج التطبيق معروضًا دون ظهور رسائل الحدث:

Web browser showing sample web app with no events displayed

قم بتمكين مزود موارد Event Grid

  1. إذا لم تكن قد استخدمت Event Grid من قبل في اشتراك Azure، فقد تحتاج إلى تسجيل موفر موارد Event Grid. قم بتشغيل الأمر التالي لتسجيل الموفر :

    az provider register --namespace Microsoft.EventGrid
    
  2. قد يستغرق التسجيل بعض الوقت. للتحقق من الحالة، قم بتشغيل الأمر التالي:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    عندما registrationStateيكونRegistered، كنت على استعداد للمتابعة.

الاشتراك في أحداث التسجيل

يمكنك الاشتراك في Event Grid في موضوع لإخبار شبكة الأحداث بالأحداث التي تريد تعقبها، وتحديد مكان إرسالها. يشترك الأمر التالي az eventgrid event-subscription create في سجل الحاوية الذي أنشأته، ويحدد عنوان URL لتطبيق الويب الخاص بك كنقطة نهاية يجب أن يرسل إليها الأحداث. يتم في العادة استخدام متغيرات البيئة التي قمت بملئها في المقاطع السابقة هنا، ولذلك لا توجد تعديلات مطلوبة.

ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
APP_ENDPOINT=https://$SITE_NAME.azurewebsites.net/api/updates

az eventgrid event-subscription create \
    --name event-sub-acr \
    --source-resource-id $ACR_REGISTRY_ID \
    --endpoint $APP_ENDPOINT

عند اكتمال الاشتراك، يجب أن تشاهد الإخراج مماثلاً لما يلي:

{
  "destination": {
    "endpointBaseUrl": "https://eventgridviewer.azurewebsites.net/api/updates",
    "endpointType": "WebHook",
    "endpointUrl": null
  },
  "filter": {
    "includedEventTypes": [
      "All"
    ],
    "isSubjectCaseSensitive": null,
    "subjectBeginsWith": "",
    "subjectEndsWith": ""
  },
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry/providers/Microsoft.EventGrid/eventSubscriptions/event-sub-acr",
  "labels": null,
  "name": "event-sub-acr",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "topic": "/subscriptions/<Subscription ID>/resourceGroups/myresourcegroup/providers/microsoft.containerregistry/registries/myregistry",
  "type": "Microsoft.EventGrid/eventSubscriptions"
}

أحداث تسجيل المشغل

الآن بعد أن تم تشغيل نموذج التطبيق وقمت بالاشتراك في السجل الخاص بك باستخدام Event Grid، فأنت جاهز لإنشاء بعض الأحداث. في هذا القسم، تستطيع استخدام مهام ACR لإنشاء صورة حاوية ودفعها إلى التسجيل. تعد مهام ACR إحدى ميزات Azure Container Registry التي تتيح لك إنشاء صور حاوية في السحابة ، دون الحاجة إلى تثبيت Docker Engine على جهازك المحلي.

إنشاء صورة ودفعها

تنفيذ الأمر الآتي Azure CLI لإنشاء صورة حاوية من محتويات مستودع GitHub. بصورة افتراضية، تقوم ACR Tasks تلقائيًا بدفع صورة مضمنة بنجاح إلى التسجيل الخاص بك، والذي ينشئ الحدث ImagePushed.

إشعار

يعتمد ملف Docker المستخدَم في المثال التالي على صورة حاوية قاعدة عامة من Docker Hub. لتحسين الموثوقية عند استخدام المحتوى العام، قم باستيراد الصورة وإدارتها في سجل حاوية Azure خاص، وتحديث Dockerfile الخاص بك لاستخدام الصورة الأساسية المُدارة بشكل خاص. تعرف على المزيد حول العمل مع الصور العامة.

az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

يجب أن تشاهد إخراجا مشابها للآتي أثناء إنشاء مهام ACR ثم دفع صورتك. تم اقتطاع الناتج النموذجي التالي للإيجاز.

Sending build context to ACR...
Queued a build with build ID: aa2
Waiting for build agent...
2018/08/16 22:19:38 Using acb_vol_27a2afa6-27dc-4ae4-9e52-6d6c8b7455b2 as the home volume
2018/08/16 22:19:38 Setting up Docker configuration...
2018/08/16 22:19:39 Successfully set up Docker configuration
2018/08/16 22:19:39 Logging in to registry: myregistry.azurecr.io
2018/08/16 22:19:55 Successfully logged in
Sending build context to Docker daemon  94.72kB
Step 1/5 : FROM node:9-alpine
...

للتحقق من أن الصورة المضمنة في السجل الخاص بك، قم بتنفيذ الأمر التالي لعرض العلامات في myimage المستودع:

az acr repository show-tags --name $ACR_NAME --repository myimage

لا بد أن تظهر علامة "v1" للصورة التي بنيتها في الإخراج، على غرار ما يأتي:

[
  "v1"
]

حذف الصورة

حاليًا، قم بإنشاء حدث ImageDeleted عن طريق حذف الصورة باستخدام الأمر az acr repository delete:

az acr repository delete --name $ACR_NAME --image myimage:v1

لا بد أن تشاهد الإخراج مماثلاً لما يلي، وطلب تأكيد لحذف البيان والصور المقترنة:

This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n): 

عرض أحداث التسجيل

لقد قمت الآن بدفع صورة إلى السجل الخاص بك ثم قمت بحذفها. انتقل إلى تطبيق الويب Event Grid Viewer الخاص بك، وسترى كلاً من الأحداث ImageDeletedوImagePushedالأحداث. قد ترى أيًضً حدث التحقق من صحة الاشتراك الذي تم إنشاؤه عن طريق تنفيذ الأمر في قسم الاشتراك في أحداث التسجيل.

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

Web browser showing the sample app with ImagePushed and ImageDeleted events

تهانينا! إذا رأيت ImagePushedالأحداث وImageDeletedالأحداث، فإن السجل الخاص بك يرسل الأحداث إلى Event Grid، وتقوم Event Grid بإعادة توجيه تلك الأحداث إلى نقطة نهاية تطبيق الويب الخاص بك.

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

فور الانتهاء من استخدام الموارد التي أنشأتها في هذه البداية السريعة، تستطيع حذفها جميعًا باستخدام الأمر Azure CLI التالي. عند حذف مجموعة موارد، يتم حذف كافة الموارد التي تحتوي عليها بشكل دائم.

تحذير: هذه العملية لا رجعة فيها. قم بالتأكد من أنك لم تعد بحاجة إلى أي من الموارد في المجموعة قبل تشغيل الأمر.

az group delete --name $RESOURCE_GROUP_NAME

مخطط حدث Event Grid

بإمكانك العثور على مرجع مخطط رسالة الحدث تسجيل حاوية Azure في وثائق شبكة الأحداث:

مخطط حدث Azure Event Grid من أجل تسجيل الحاوية

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

في هذه البداية السريعة، قمت بنشر تسجيل حاوية، وبنيت صورة مع مهام ACR، وحذفتها، وقد استهلكت أحداث التسجيل من شبكة الأحداث مع تطبيق نموذج. بعد ذلك، انتقل إلى البرنامج التعليمي لـ ACR Tasks من أجل معرفة المزيد حول إنشاء صور حاوية في السحابة ، بما في ذلك الإنشاءات الآلية على تحديث الصورة الأساسي: