أحداث دورة تشغيل السحابة الإلكترونية في الدرس التطبيقي حول الترميز Anthos

1. مقدمة

6a5cf23c8e20491f.png

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

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

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

المُعطيات

  • رؤية طويلة الأمد لأحداث Cloud Run في Anthos
  • الحالة الحالية لأحداث Cloud Run في Anthos
  • إنشاء حوض Cloud Run
  • إنشاء عامل تشغيل للحدث في Cloud Pub/Sub
  • إنشاء مشغل أحداث لسجلات التدقيق
  • إنشاء عامل تشغيل حدث في Cloud Storage
  • إنشاء عامل تشغيل حدث لـ Cloud Scheduler
  • إنتاج أحداث مخصّصة واستهلاكها

2. رؤية طويلة الأمد

عند استخدام البنية بدون خادم، تصبح الأحداث جزءًا لا يتجزأ من طريقة اتصال الخدمات المصغَّرة غير المقترنة. بفضل أحداث Cloud Run for Anthos، أصبحت الأحداث من الدرجة الأولى ضمن عرض Cloud Run for Anthos، ما يتيح إنشاء تطبيقات بدون خوادم تعتمد على الأحداث.

تتيح ميزة أحداث Cloud Run for Anthos إمكانية تسليم الأحداث غير المتزامنة والموثوقة والآمنة والقابلة للتطوّر من مصادر الأحداث المجمَّعة أو التي تم إنشاؤها من خلال التطبيقات إلى المستهلكين على المجموعة أو خارج المجموعة.

ce389bcafba6d669.png

مصادر Google Cloud

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

مصادر Google

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

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

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

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

مصادر الأحداث التي لا تملكها Google ولا للمستخدم النهائي. يشمل ذلك مصادر الأحداث الرائجة، مثل Github وSAP وDatadog وPagerduty وما إلى ذلك، والتي يملكها ويديرها مقدّمو خدمات تابعون لجهات خارجية أو شركاء أو منتديات OSS.

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

تتوافق أحداث Cloud Run مع سياسة Knative Eventing وتسمح بقابلية نقل الحاويات من وإلى عمليات التنفيذ الأخرى المستندة إلى Knative. يوفّر ذلك إطارًا متّسقًا وغير مرتبط بالسحابة الإلكترونية من أجل منتجي الفعاليات الذين يسعون إلى جمع الأسلاك من أجل الإعلان عن مستهلكي الأحداث.

3- الحالة الحالية

هذه المعاينة هي الإصدار الأول الذي يقدّم مجموعة أولية من الوظائف طويلة المدى.

b1dd0d8a73185b95.png

لتمكين المستخدمين من إنشاء تطبيقات بدون خادم تعتمد على الأحداث، ينصب تركيزنا الأولي على الجانبين:

  1. توفير منظومة متكاملة واسعة من مصادر Google Cloud تتيح لخدمات Cloud Run على مجموعة Anthos للاستجابة إلى الأحداث من خدمات Google Cloud.
  • في البداية، يتم تقديم الأحداث من مصادر Google Cloud عن طريق سجلات تدقيق Cloud (CAL)، ما يتيح مجموعة متنوعة من مصادر الأحداث. يرتبط وقت الاستجابة ومدى توفُّر تسليم الأحداث من هذه المصادر بسجلات تدقيق Cloud. عند نشر حدث من مصدر Google Cloud، يتم إنشاء إدخال مقابل في سجلّ تدقيق Cloud.
  • إلى جانب سجلّات التدقيق في Cloud، تتوفّر خدمة دعم من الدرجة الأولى للاستفادة من الأحداث من Cloud Storage وCloud Pub/Sub وCloud Scheduler. وسنواصل توسيع نطاق هذه المنظومة المتكاملة من المصادر باستخدام مصادر من الدرجة الأولى حيث نتعلم المزيد من تجارب المستخدمين والملاحظات.
  1. يمكنك تفعيل تطبيقات المستخدم وخدماتها لإصدار أحداث مخصَّصة من خلال النشر على عنوان URL للوسيط المحلي على نطاق مساحة الاسم.

تستخدم آلية التسليم الأساسية مواضيع واشتراكات Cloud Pub/Sub التي تظهر للعملاء. مماثلة. وبالتالي، توفِّر هذه الميزة ضمانات التسليم نفسها المتوفّرة في خدمة Cloud Pub/Sub.

يوفّر "عامل تشغيل الحدث" طريقة للاشتراك في الأحداث ليتم تسليم الأحداث التي تتطابق مع فلتر المشغِّل إلى الوجهة (أو الحوض) التي يشير إليها العامل المشغِّل.

يتم عرض جميع الأحداث بتنسيق Cloud Events v1.0 لإتاحة إمكانية التشغيل التفاعلي على جميع الخدمات.

وسنستمر في تقديم المزيد من القيمة بطريقة تكرارية وصولاً إلى "إحصاءات Google" وما بعدها.

4. الإعداد والمتطلبات

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

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

بدء Cloud Shell

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

5- تمكين واجهات برمجة التطبيقات وتعيين المنطقة والنظام الأساسي

إعداد رقم تعريف المشروع وتثبيت مكونات الإصدار الأولي

داخل Cloud Shell، من المفترض أن يكون قد تم ضبط GOOGLE_CLOUD_PROJECT على رقم تعريف مشروعك. إذا لم يكن الأمر كذلك، تأكَّد من ضبطه ومن ضبط خدمة gcloud على رقم تعريف المشروع هذا:

export GOOGLE_CLOUD_PROJECT=your-project-id
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

تأكَّد من تثبيت مكوّن gcloud للإصدار الأولي:

gcloud components install alpha

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

تفعيل جميع الخدمات اللازمة:

gcloud services enable cloudapis.googleapis.com 
gcloud services enable container.googleapis.com 
gcloud services enable containerregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com

تحديد المنطقة والمنصة

قبل إنشاء مجموعة GKE باستخدام أحداث Cloud Run، اضبط اسم المجموعة والمنطقة والنظام الأساسي. على سبيل المثال، نضبط هنا الاسم والمنطقة على events-cluster وeurope-west1-b والنظام الأساسي هو gke,.

في Cloud Shell:

export CLUSTER_NAME=events-cluster
export CLUSTER_ZONE=europe-west1-b

gcloud config set run/cluster ${CLUSTER_NAME}
gcloud config set run/cluster_location ${CLUSTER_ZONE}
gcloud config set run/platform gke

يمكنك التحقّق من أنّه تم ضبط الإعدادات:

gcloud config list

...
[run]
cluster = events-cluster
cluster_location = europe-west1-b
platform = gke

6- إنشاء مجموعة GKE مع أحداث تشغيل السحابة الإلكترونية

أنشئ مجموعة GKE تعمل على تشغيل Kubernetes >= 1.15.9-gke.26، مع تفعيل الإضافات التالية: CloudRun وHttpLoadBalancing وHorizontalPodAutoscaling:

gcloud beta container clusters create ${CLUSTER_NAME} \
  --addons=HttpLoadBalancing,HorizontalPodAutoscaling,CloudRun \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=3 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=3 --image-type=cos \
  --enable-stackdriver-kubernetes \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone ${CLUSTER_ZONE} \
  --release-channel=rapid

7. إعداد أحداث تشغيل السحابة الإلكترونية (مستوى التحكّم)

تحتوي أحداث تشغيل السحابة الإلكترونية على مستوى تحكُّم وخطة بيانات يجب إعدادهما بشكلٍ منفصل. لإعداد مستوى التحكّم:

في Cloud Shell:

gcloud beta events init 

سيؤدي ذلك إلى بدء الأحداث وإنشاء عدد من حسابات الخدمة اللازمة. احرص على اختيار "نعم". عندما يُطلب منك إنشاء حساب الخدمة

في هذه المرحلة، يجب إعداد مستوى التحكم بشكل صحيح. من المفترض أن تظهر لك أربع مجموعات

Running، 2 (controller-xxx-xxx وwebhook-xxx-xxx) في مساحة الاسم cloud-run-events و2 (eventing-controller-xxx-xxx وeventing-webhook-xxx-xxx) في مساحة الاسم knative-eventing. يمكنك التحقّق من ذلك من خلال تنفيذ الأوامر التالية:

kubectl get pods -n cloud-run-events

NAME                         READY   STATUS    RESTARTS   AGE
controller-9cc679b67-2952n   1/1     Running   0          22s
webhook-8576c4cfcb-dhz82     1/1     Running   0          16m
kubectl get pods -n knative-eventing

NAME                                   READY   STATUS    RESTARTS   AGE
eventing-controller-77f46f6cf8-kj9ck   1/1     Running   0          17m
eventing-webhook-5bc787965f-hcmwg      1/1     Running   0          17m

8. إعداد أحداث التشغيل في السحابة الإلكترونية (خطة البيانات)

الخطوة التالية هي إعداد مستوى البيانات في مساحات اسم المستخدم. يؤدي هذا إلى إنشاء وسيط لديه الأذونات المناسبة للقراءة/الكتابة من/إلى Pub/Sub.

داخل Cloud Shell، اضبط متغيّر بيئة NAMESPACE لمساحة الاسم التي تريد استخدامها للعناصر. يمكنك ضبطها على default إذا كنت تريد استخدام مساحة الاسم التلقائية كما هو موضّح أدناه:

export NAMESPACE=default

لاحظ أنه في حالة عدم وجود مساحة الاسم المحددة (أي أن مساحة الاسم ليست افتراضية)، سيلزمك إنشائها:

kubectl create namespace ${NAMESPACE}

قم بتهيئة مساحة الاسم باستخدام المفتاح السرّي الافتراضي:

gcloud beta events namespaces init ${NAMESPACE} --copy-default-secret 

إنشاء وسيط افتراضي في مساحة الاسم:

gcloud beta events brokers create default --namespace ${NAMESPACE}

تحقق من أنه تم إنشاء الوسيط. لاحظ أنه قد يستغرق الأمر بضع ثوانٍ حتى يصبح الوسيط جاهزًا:

kubectl get broker -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-brokercell-ingress.cloud-run-events.svc.cluster.local/default/default

9. استكشاف الأحداث

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

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

gcloud beta events types list

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

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

10. إنشاء حوض تشغيل السحابة الإلكترونية

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

ويمكنك استخدام event_display في Knative التي سبق تجميعها وصورة حاويتها التي تم إنشاؤها كجزء من إصدار Knative. يمكنك الاطّلاع على تفاصيل صورة الحاوية في event-display.yaml:

...
containers:
  - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

النشر إلى تشغيل السحابة الإلكترونية

نشر تطبيقك المحوَّل إلى Cloud Run:

export SERVICE_NAME=event-display
gcloud run deploy ${SERVICE_NAME} \
  --namespace=${NAMESPACE} \
  --image gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

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

11. إنشاء عامل تشغيل للحدث في Cloud Pub/Sub

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

إنشاء موضوع

أولاً، أنشِئ موضوع Cloud Pub/Sub. يمكنك استبدال "TOPIC_ID" باسم موضوع فريد تفضّله:

export TOPIC_ID=cr-gke-topic
gcloud pubsub topics create ${TOPIC_ID}

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

قبل إنشاء عامل التفعيل، اطّلِع على مزيد من التفاصيل عن المَعلمات التي ستحتاج إليها لإنشاء عامل تشغيل للأحداث من Cloud Pub/Sub:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

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

gcloud beta events triggers create trigger-pubsub \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type google.cloud.pubsub.topic.v1.messagePublished \
  --parameters topic=${TOPIC_ID}

اختبار العامل المشغِّل

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

gcloud beta events triggers list

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

لمحاكاة إرسال تطبيق مخصّص للرسالة، يمكنك استخدام gcloud لتنشيط حدث:

gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"

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

9526909a06c6d4f4.png

يُرجى العِلم أنّ عبارة "مرحبًا" سيكون بترميز base64 لأنه تم إرساله من قبل Pub/Sub وسيتعين عليك فك ترميزه إذا أردت رؤية الرسالة الأصلية التي تم إرسالها.

حذف العامل المشغِّل

اختياريًا، يمكنك حذف العامل المشغِّل بعد الانتهاء من الاختبار.

gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}

12. إنشاء مشغل أحداث لسجلات التدقيق

ستقوم بإعداد مشغل للاستماع إلى الأحداث من سجلات التدقيق. وبشكل أكثر تحديدًا، ستبحث عن أحداث إنشاء موضوع النشر/الاشتراك في سجلات التدقيق.

تفعيل سجلات التدقيق

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

97bd4b57c6a05fcc.png

على يسار الصفحة، تأكّد من اختيار "مشرف" و"قراءة" و"كتابة". انقر على "حفظ":

bec31b4f35fbcea.png

اختبار سجلات التدقيق

لمعرفة كيفية تحديد المعاملات اللازمة لإعداد عامل تشغيل فعلي، عليك إجراء عملية فعلية.

على سبيل المثال، أنشئ موضوع نشر/اشتراك:

gcloud pubsub topics create cre-gke-topic1

والآن، لنرَ نوع سجلّ التدقيق الذي أنشأه هذا التحديث. من Cloud Console، اختَر "Logging > Logs Viewer" من القائمة في أعلى يمين الصفحة.

ضمن Query Builder,، اختر Cloud Pub/Sub Topic وانقر على Add:

f5c634057e935bc6.png

بعد تشغيل طلب البحث، ستظهر لك سجلات لمواضيع النشر/الاشتراك، ويجب أن يكون أحد هذه السجلات google.pubsub.v1.Publisher.CreateTopic:

b083cce219773d24.png

يُرجى الاطّلاع على serviceName وmethodName وresourceName. سنستخدم هذه في إنشاء المشغل.

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

أنت الآن جاهز لإنشاء مشغل أحداث لسجلات التدقيق.

يمكنك الحصول على مزيد من التفاصيل عن المَعلمات التي ستحتاجها لإنشاء عامل تشغيل للأحداث من مصادر Google Cloud عن طريق تنفيذ الأمر التالي:

gcloud beta events types describe google.cloud.audit.log.v1.written

إنشاء عامل التفعيل باستخدام الفلاتر الصحيحة:

gcloud beta events triggers create trigger-auditlog \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.audit.log.v1.written \
  --parameters serviceName=pubsub.googleapis.com \
  --parameters methodName=google.pubsub.v1.Publisher.CreateTopic

اختبار العامل المشغِّل

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

gcloud beta events triggers list

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

أنشئ موضوعًا آخر للنشر/الاشتراك، كما فعلت سابقًا:

gcloud pubsub topics create cre-gke-topic2

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

aff3b2e7ad05c75d.png

حذف عامل التفعيل والمواضيع

اختياريًا، يمكنك حذف العامل المشغِّل بعد الانتهاء من الاختبار:

gcloud beta events triggers delete trigger-auditlog

حذف المواضيع أيضًا:

gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2

13. إنشاء عامل تشغيل حدث في Cloud Storage

سيتم إعداد عامل تشغيل للاستماع إلى الأحداث من Cloud Storage.

إنشاء حزمة

أولاً، أنشئ حزمة Cloud Storage في المنطقة نفسها التي تتوفّر فيها خدمة Cloud Run المنشورة. يمكنك استبدال BUCKET_NAME باسم فريد تفضّله:

export BUCKET_NAME=[new bucket name]
export REGION=europe-west1

gsutil mb -p $(gcloud config get-value project) \
  -l $REGION \
  gs://$BUCKET_NAME/

إعداد أذونات Cloud Storage

قبل إنشاء مشغِّل، يجب منح حساب الخدمة التلقائي لإذن Cloud Storage للنشر على منصة Pub/Sub.

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

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/projects/$(gcloud config get-value project)/serviceAccount"

يجب أن يكون حساب الخدمة مدرجًا ضمن email_address.

لنفترض أنّ حساب الخدمة الذي عثرت عليه أعلاه كان service-XYZ@gs-project-accounts.iam.gserviceaccount.com، اضبط هذا الإعداد على متغيّر بيئة:

export GCS_SERVICE_ACCOUNT=service-XYZ@gs-project-accounts.iam.gserviceaccount.com

امنح بعد ذلك حقوق "حساب الخدمة" هذا لنشر المحتوى على خدمة "النشر/الاشتراك":

gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
  --member=serviceAccount:${GCS_SERVICE_ACCOUNT} \
  --role roles/pubsub.publisher

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

يمكنك الآن إنشاء عامل تشغيل للأحداث لأحداث Cloud Storage.

يمكنك الحصول على مزيد من التفاصيل عن المَعلمات التي ستحتاج إليها لإنشاء عامل التفعيل:

gcloud beta events types describe google.cloud.storage.object.v1.finalized

إنشاء عامل التفعيل باستخدام الفلاتر الصحيحة:

gcloud beta events triggers create trigger-storage \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.storage.object.v1.finalized \
  --parameters bucket=${BUCKET_NAME}

اختبار العامل المشغِّل

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

gcloud beta events triggers list

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

أصبحت جاهزًا الآن لتنشيط حدث.

تحميل ملف عشوائي إلى حزمة Cloud Storage:

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

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

aff3b2e7ad05c75d.png

حذف العامل المشغِّل

اختياريًا، يمكنك حذف العامل المشغِّل بعد الانتهاء من الاختبار:

gcloud beta events triggers delete trigger-storage

14. إنشاء عامل تشغيل حدث لـ Cloud Scheduler

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

إنشاء تطبيق App Engine

يحتاج برنامج Cloud Scheduler حاليًا إلى المستخدمين لإنشاء تطبيق App Engine. اختر موقعًا في App Engine وأنشئ التطبيق:

export APP_ENGINE_LOCATION=europe-west
gcloud app create --region=${APP_ENGINE_LOCATION}

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

يمكنك الحصول على مزيد من التفاصيل عن المَعلمات التي ستحتاجها لإنشاء عامل تشغيل للأحداث من مصادر Google Cloud عن طريق تنفيذ الأمر التالي:

gcloud beta events types describe google.cloud.scheduler.job.v1.executed

اختَر موقع "أداة جدولة المهام في السحابة الإلكترونية" لإنشاء أداة الجدولة:

export SCHEDULER_LOCATION=europe-west1

أنشِئ مشغّلاً سيؤدي إلى إنشاء مهمة يتمّ تنفيذها كل دقيقة في Google Cloud Scheduler واستدعاء الخدمة المستهدَفة:

gcloud beta events triggers create trigger-scheduler \
  --namespace ${NAMESPACE} \
  --target-service=${SERVICE_NAME} \
  --type=google.cloud.scheduler.job.v1.executed \
  --parameters location=${SCHEDULER_LOCATION} \
  --parameters schedule="* * * * *" \
  --parameters data="trigger-scheduler-data"

اختبار العامل المشغِّل

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

gcloud beta events triggers list

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

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

حذف العامل المشغِّل

اختياريًا، يمكنك حذف العامل المشغِّل بعد الانتهاء من الاختبار:

gcloud beta events triggers delete trigger-scheduler

15. الأحداث المخصّصة (نقطة نهاية الوسيط)

في هذا الجزء من الدرس التطبيقي حول الترميز، ستنتج أحداثًا مخصّصة وتستخدِمها باستخدام الوسيط.

إنشاء مجموعة Curl لإنتاج الأحداث

يتم عادةً إنشاء الأحداث بشكل آلي. وفي هذه الخطوة، عليك استخدام curl لإرسال أحداث فردية يدويًا والاطّلاع على كيفية تلقّي المستهلك المناسب لهذه الأحداث.

لإنشاء مجموعة تعمل كمنتِج للحدث، شغِّل الأمر التالي:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: curl
  name: curl
  namespace: $NAMESPACE
spec:
  containers:
  - image: radial/busyboxplus:curl
    imagePullPolicy: IfNotPresent
    name: curl
    resources: {}
    stdin: true
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    tty: true
EOF

تأكَّد من أنّ لوحة curl Pod تعمل بشكل صحيح. من المفترض أن تظهر لك لوحة اسمها curl تحتوي على Status=Running:

kubectl get pod curl -n ${NAMESPACE}

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

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

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

gcloud beta events triggers create trigger-custom \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=alpha-type \
  --custom-type

اختبار العامل المشغِّل

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

gcloud beta events triggers list

أنشئ حدثًا من خلال إرسال طلب HTTP إلى الوسيط. ذكّر نفسك عنوان URL للوسيط من خلال تشغيل ما يلي:

kubectl get brokers -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-broker.<NAMESPACE>.svc.cluster.local

بروتوكول النقل الآمن (SSH) في مجموعة الإعلانات المتسلسلة curl التي أنشأتها سابقًا:

kubectl --namespace ${NAMESPACE} attach curl -it

لقد أدخلت بروتوكول النقل الآمن (SSH) في المجموعة ويمكنك الآن تقديم طلب HTTP. سيظهر طلب مشابه لما يرد أدناه:

Defaulting container name to curl.
Use 'kubectl describe pod/curl -n default' to see all of the containers in this pod.
If you don't see a command prompt, try pressing enter.
[ root@curl:/ ]$

إنشاء حدث:

curl -v "<BROKER-URL>" \
-X POST \
-H "Ce-Id: my-id" \
-H "Ce-Specversion: 1.0" \
-H "Ce-Type: alpha-type" \
-H "Ce-Source: my-source" \
-H "Content-Type: application/json" \
-d '{"msg":"send-cloudevents-to-broker"}'

إذا تم استلام الحدث، سيصلك رد HTTP 202 Accepted. إنهاء جلسة بروتوكول النقل الآمن (SSH) مع "Ctrl + D"

تحقَّق من إرسال الحدث المنشور من خلال الاطّلاع على سجلات "خدمة تشغيل السحابة الإلكترونية":

kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \
 -c user-container -n $NAMESPACE --tail=100

حذف العامل المشغِّل

اختياريًا، يمكنك حذف العامل المشغِّل بعد الانتهاء من الاختبار:

gcloud beta events triggers delete trigger-custom

16. تهانينا!

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

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

  • رؤية طويلة الأمد لأحداث Cloud Run في Anthos
  • الحالة الحالية لأحداث Cloud Run في Anthos
  • إنشاء حوض Cloud Run
  • إنشاء عامل تشغيل للحدث في Cloud Pub/Sub
  • إنشاء مشغل أحداث لسجلات التدقيق
  • إنشاء عامل تشغيل حدث في Cloud Storage
  • إنشاء عامل تشغيل حدث لـ Cloud Scheduler
  • إنتاج أحداث مخصّصة واستهلاكها