تشغيل Cloud Run باستخدام أحداث Eventarc

1. مقدمة

894762ebb681671c.png

يتيح لك التشغيل في السحابة الإلكترونية تشغيل حاويات بدون حالة في بيئة مُدارة بالكامل. تم إنشاء هذا الإصدار من Knative مفتوح المصدر، ما يتيح لك اختيار تشغيل الحاويات إما مُدارة بالكامل باستخدام Cloud Run، أو في مجموعة Google Kubernetes Engine مع Cloud Run for Anthos.

cb762f29e9183a3f.png

تسهِّل منصة Eventarc ربط خدمات مختلفة (Cloud Functions وCloud Functions وWorkfklows) بأحداث من مصادر مختلفة. ويسمح لك ذلك بإنشاء بُنى تستند إلى الأحداث، حيث يتم إقران الخدمات المصغَّرة وتوزيعها بشكل غير محكم. ويعتني أيضًا بنقل الأحداث وتسليمها والأمان والتفويض ومعالجة الأخطاء نيابةً عنك، ما يحسِّن سرعة أداء المطوِّر ومرونة التطبيقات.

ستتعرّف في هذا الدرس التطبيقي على منصة Eventarc. وبشكل أكثر تحديدًا، سيكون بإمكانك الاستماع إلى أحداث من Pub/Sub، وCloud Storage، وCloud التدقيق في السجلات باستخدام Eventarc وتمريرها إلى خدمة Cloud Run.

المُعطيات

  • رؤية شركة Eventarc
  • الاطّلاع على الفعاليات في Eventarc
  • إنشاء حوض Cloud Run
  • إنشاء مشغِّل لنشر/اشتراك
  • إنشاء مشغِّل في Cloud Storage
  • إنشاء عامل تشغيل لسجلّات تدقيق السحابة الإلكترونية
  • استكشِف واجهة مستخدم Eventarc.

2. رؤية شركة Eventarc

تهدف شركة Eventarc إلى إرسال الفعاليات من مختلف Google وGoogle Cloud ومصادر فعاليات تابعة لجهات خارجية إلى وجهات فعاليات Google Cloud.

59b147dc030b2b0b.png

مصادر Google Cloud

مصادر الأحداث التي تملكها منتجات Google Cloud

مصادر Google

مصادر الأحداث التي تملكها Google، مثل Gmail وHangouts و"إدارة Android" وغيرها

المصادر المخصّصة

مصادر الأحداث التي لا تملكها Google وينشئها المستخدمون النهائيون بأنفسهم

مصادر تابعة لجهات خارجية

مصادر الأحداث التي لا تملكها Google ولا من إنشاء العملاء. ويشمل ذلك مصادر الأحداث الرائجة، مثل Check Point CloudGuard وDatadog وForgeRock وLacework وغيرها، والتي يملكها شركاء ومقدّمو خدمات تابعون لجهات خارجية وصيانتها.

يتم تسوية الأحداث إلى تنسيق CloudEvents v1.0 لإتاحة التشغيل التفاعلي على مستوى الخدمات. CloudEvent هي مواصفات مفتوحة محايدة للمورّدين تصف بيانات الأحداث بتنسيقات شائعة، وتتيح إمكانية التشغيل التفاعلي على مستوى الخدمات والأنظمة الأساسية والأنظمة.

3- الإعداد والمتطلبات

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي عبارة عن سلسلة أحرف لا تستخدمها Google APIs، ويمكنك تحديثها في أي وقت.
  • يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه PROJECT_ID). لذلك، إذا لم يعجبك، يمكنك إنشاء رقم تعريف عشوائي آخر، أو يمكنك تجربة رقم تعريف المشروع الخاص بك ومعرفة ما إذا كان متاحًا. بعد أن يصبح "مجمّد" بعد إنشاء المشروع.
  • هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد أكثر من هذا البرنامج التعليمي، اتبع أي عملية "تنظيف". التعليمات الموجودة في نهاية الدرس التطبيقي حول الترميز. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ كل أعمالك في هذا التمرين من خلال متصفح.

قبل البدء

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك:

PROJECT_ID=your-project-id
gcloud config set project $PROJECT_ID

4. نشر خدمة Cloud Run

نشر خدمة تشغيل السحابة الإلكترونية لتلقي الأحداث. سيتم نشر حاوية مرحبًا في Cloud Run التي تُسجِّل محتوى Cloudالأحداث.

أولاً، يجب تفعيل الخدمات المطلوبة لتشغيل Cloud:

gcloud services enable run.googleapis.com

انشر حاوية hello في تشغيل السحابة:

REGION=us-central1
SERVICE_NAME=hello

gcloud run deploy $SERVICE_NAME \
  --allow-unauthenticated \
  --image=gcr.io/cloudrun/hello \
  --region=$REGION

عند نجاح العملية، يعرض سطر الأوامر عنوان URL للخدمة. يمكنك فتح عنوان URL للخدمة في أي نافذة متصفِّح للتأكّد من نشر الخدمة الآن.

5- استكشاف الأحداث

قبل إنشاء عوامل تشغيل في Eventarc، يمكنك التعرّف على مصادر الأحداث وأنواع الأحداث التي يمكن أن تنبعث منها وطريقة ضبط هذه المصادر لاستهلاكها.

للاطّلاع على قائمة الأنواع المختلفة من الأحداث:

gcloud beta eventarc attributes types list

NAME                                           DESCRIPTION
google.cloud.audit.log.v1.written              Cloud Audit Log written
google.cloud.pubsub.topic.v1.messagePublished  Cloud Pub/Sub message published
google.cloud.storage.object.v1.archived         Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted.
google.cloud.storage.object.v1.deleted          Cloud Storage: Sent when an object has been permanently deleted.
google.cloud.storage.object.v1.finalized        Cloud Storage: Sent when a new object (or a new generation of an existing object).
google.cloud.storage.object.v1.metadataUpdated  Cloud Storage: Sent when the metadata of an existing object changes.

للحصول على مزيد من المعلومات عن كل نوع من الأحداث، اتّبِع الخطوات التالية:

gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written

attributes: type,serviceName,methodName,resourceName
description: 'Cloud Audit Log: Sent when a log is written.'
name: google.cloud.audit.log.v1.written

للاطّلاع على قائمة الخدمات التي تنبعث من نوع حدث معيّن:

gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written

SERVICE_NAME                                DISPLAY_NAME
accessapproval.googleapis.com               Access Approval
accesscontextmanager.googleapis.com         Access Context Manager
admin.googleapis.com                        Google Workspace Admin
aiplatform.googleapis.com                   AI Platform (under Vertex AI)
apigee.googleapis.com                       Apigee
apigeeconnect.googleapis.com                Apigee Connect
...
workflows.googleapis.com                    Workflows

للاطّلاع على قائمة أسماء الطرق (الأحداث الفرعية) التي يمكن أن تنبعث منها كل خدمة:

gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com

METHOD_NAME
google.cloud.workflows.v1.Workflows.CreateWorkflow
google.cloud.workflows.v1.Workflows.DeleteWorkflow
google.cloud.workflows.v1.Workflows.GetWorkflow
google.cloud.workflows.v1.Workflows.ListWorkflows
google.cloud.workflows.v1.Workflows.UpdateWorkflow
google.cloud.workflows.v1beta.Workflows.CreateWorkflow
google.cloud.workflows.v1beta.Workflows.DeleteWorkflow
google.cloud.workflows.v1beta.Workflows.GetWorkflow
google.cloud.workflows.v1beta.Workflows.ListWorkflows
google.cloud.workflows.v1beta.Workflows.UpdateWorkflow

6- إنشاء مشغِّل نشر/اشتراك

ويمكن تلقّي الأحداث من خلال خدمة Cloud Pub/Sub. يمكن لأي تطبيق نشر الرسائل إلى Pub/Sub ويمكن تسليم هذه الرسائل إلى Cloud Run من خلال Eventarc.

ضبط إعدادات الجهاز

قبل إنشاء أي مشغِّلات، عليك تفعيل الخدمات المطلوبة لمنصة Eventarc:

gcloud services enable eventarc.googleapis.com

وتحتاج أيضًا إلى حساب خدمة ليتم استخدامه بواسطة المشغلات. إنشاء حساب خدمة:

SERVICE_ACCOUNT=eventarc-trigger-sa

gcloud iam service-accounts create $SERVICE_ACCOUNT

إنشاء

أنشئ عامل تشغيل لفلترة الأحداث المنشورة في موضوع النشر/الاشتراك في خدمة Cloud Run التي تم نشرها:

TRIGGER_NAME=trigger-pubsub

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

اختبار

ينشئ مشغِّل النشر/الاشتراك موضوعًا تحت الأغلفة. دعنا نكتشفه ونُعيّنه لمتغير:

TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')

استخدِم "gcloud" لنشر رسالة حول الموضوع:

gcloud pubsub topics publish $TOPIC_ID --message="Hello World"

تسجِّل خدمة تشغيل السحابة الإلكترونية نص الرسالة الواردة. يمكنك عرض هذا في قسم السجلات لمثيل Cloud Run:

69e0177e04a0d1af.png

الإنشاء باستخدام موضوع نشر/اشتراك حالي

عندما تنشئ مشغِّل نشر/اشتراك تلقائيًا، تنشئ Eventarc موضوعًا تحت الغلاف لاستخدامه كموضوع نقل بين تطبيقك وخدمة تشغيل السحابة الإلكترونية. يفيدك هذا الخيار في إنشاء مشغِّل متوافق مع ميزة "النشر/الاشتراك" بسهولة وسرعة، ولكن قد تحتاج أحيانًا إلى استخدام موضوع حالي. يتيح لك Eventarc تحديد موضوع نشر/اشتراك حالي في المشروع نفسه باستخدام علامة gcloud --transport-topic.

للتعرّف على ذلك، أنشِئ موضوع النشر/الاشتراك لاستخدامه كموضوع للنقل:

TOPIC_ID=eventarc-topic

gcloud pubsub topics create $TOPIC_ID

إنشاء عامل تشغيل:

TRIGGER_NAME=trigger-pubsub-existing

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --location=$REGION \
  --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

يمكنك اختبار العامل المشغِّل من خلال إرسال رسالة إلى الموضوع:

gcloud pubsub topics publish $TOPIC_ID --message="Hello again"

7. إنشاء مشغِّل في Cloud Storage

في هذه الخطوة، سيتم إنشاء عامل تشغيل للاستماع إلى الأحداث من Cloud Storage.

ضبط إعدادات الجهاز

عليك أولاً إنشاء حزمة لتلقّي الأحداث من:

BUCKET_NAME=eventarc-gcs-$PROJECT_ID

gsutil mb -l $REGION gs://$BUCKET_NAME

منح الدور "eventarc.eventReceiver" حتى يمكن استخدام حساب الخدمة في مشغّل Cloud Storage:

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --role roles/eventarc.eventReceiver \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

عليك أيضًا إضافة الدور "pubsub.publisher" إلى حساب خدمة Cloud Storage لعوامل التشغيل في Cloud Storage:

SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
    --role roles/pubsub.publisher

إنشاء

أنشِئ عامل تشغيل لتوجيه أحداث إنشاء الملفات الجديدة من الحزمة إلى خدمتك:

TRIGGER_NAME=trigger-storage

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=$BUCKET_NAME" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

اختبار

أدرِج جميع العوامل المُشغِّلة للتأكّد من إنشاء هذا المشغِّل بنجاح:

gcloud eventarc triggers list

تحميل ملف إلى حزمة Cloud Storage:

echo "Hello World" > random.txt
gsutil cp random.txt gs://$BUCKET_NAME/random.txt

إذا راجعت سجلات خدمة Cloud Run في Cloud Console، من المفترض أن يظهر لك الحدث الذي تم استلامه:

904cfc93bb8e8df1.png

8. إنشاء مشغِّل سجلات تدقيق السحابة الإلكترونية

على الرغم من أنّ مشغّل Cloud Storage هو الطريقة الأفضل للاستماع إلى أحداث Cloud Storage، يمكنك في هذه الخطوة إنشاء مشغِّل سجلّ تدقيق Cloud لتنفيذ الإجراء نفسه.

ضبط إعدادات الجهاز

لتلقّي الأحداث من إحدى الخدمات، عليك تفعيل سجلّات تدقيق السحابة الإلكترونية. من Cloud Console، اختَر IAM & Admin وAudit Logs من القائمة في أعلى يمين الصفحة. في قائمة الخدمات، ضع علامة في المربّع "Google Cloud Storage":

3c654597faed237c.png

على يسار الصفحة، تأكد من اختيار Admin وRead وWrite وانقر على Save:

1deb3ad78f11dd5f.png

إنشاء

أنشِئ عامل تشغيل لتوجيه أحداث إنشاء الملفات الجديدة من الحزمة إلى خدمتك:

TRIGGER_NAME=trigger-auditlog-storage

gcloud eventarc triggers create $TRIGGER_NAME\
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --event-filters="type=google.cloud.audit.log.v1.written" \
  --event-filters="serviceName=storage.googleapis.com" \
  --event-filters="methodName=storage.objects.create" \
  --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

اختبار

تستغرق مشغلات سجلات التدقيق بعض الوقت للتهيئة. يمكنك التأكّد من أنّ العامل المشغِّل تم إنشاؤه من خلال إدراج جميع العوامل المُشغِّلة:

gcloud eventarc triggers list

من المفترض أن يظهر لك أنّ الحقل ACTIVE هو Yes:

NAME                          TYPE                                       DESTINATION               ACTIVE
trigger-auditlog-storage  google.cloud.audit.log.v1.written              Cloud Run service: hello  Yes

حمِّل الملف نفسه إلى حزمة Cloud Storage كما فعلت سابقًا:

gsutil cp random.txt gs://$BUCKET_NAME/random.txt

إذا راجعت سجلات خدمة Cloud Run في Cloud Console، من المفترض أن يظهر لك الحدث الذي تم استلامه:

7be7859bcc8976f8.png

9. استكشِف واجهة مستخدم Eventarc.

في هذه الخطوة، يمكنك استكشاف واجهة مستخدم Eventarc في Google Cloud Console. في واجهة مستخدم Eventarc، يمكنك الحصول على نظرة عامة على جميع المشغِّلات وتعديلها وحذفها وإنشاء مشغِّلات جديدة من Google Cloud Console.

انتقِل إلى قسم Eventarc في Google Cloud:

81e139f17e0d29bf.png

ستظهر لك قائمة بالعوامل المُشغِّلة التي أنشأتها سابقًا:

3240c7c830398718.png

إذا نقرت على أحد المشغِّلات، يمكنك الاطّلاع على تفاصيله أو تعديله أو حذفه:

b4d8bbc6601a8b9e.png

يمكنك أيضًا إنشاء عامل تشغيل جديد من خلال النقر على Create trigger وملء تفاصيل العامل المفعِّل:

3ee290ec72f130d5.png

10. تهانينا!

تهانينا على إكمال الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها

  • رؤية شركة Eventarc
  • الاطّلاع على الفعاليات في Eventarc
  • إنشاء حوض Cloud Run
  • إنشاء مشغِّل لنشر/اشتراك
  • إنشاء مشغِّل في Cloud Storage
  • إنشاء عامل تشغيل لسجلّات تدقيق السحابة الإلكترونية
  • استكشِف واجهة مستخدم Eventarc.