1. مقدمة

تتيح لك خدمة Cloud Run تشغيل حاويات لا يتم تسجيل بياناتها في بيئة مُدارة بالكامل. وهي تستند إلى 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 for Anthos
- الحالة الحالية لـ "الأحداث في Cloud Run for Anthos"
- إنشاء مخزَن Cloud Run
- إنشاء مشغّل أحداث لخدمة Cloud Pub/Sub
- إنشاء مشغّل أحداث لسجلات التدقيق
- إنشاء مشغّل أحداث لخدمة Cloud Storage
- إنشاء مشغّل أحداث لخدمة Cloud Scheduler
- إنشاء أحداث مخصّصة واستخدامها
2. الرؤية على المدى الطويل
مع اعتمادنا على بنية الحوسبة بدون خادم، أصبحت الأحداث جزءًا لا يتجزأ من طريقة تواصل الخدمات المصغّرة المنفصلة. تتيح أحداث Cloud Run for Anthos إمكانية التعامل مع الأحداث كعنصر أساسي في عرض Cloud Run for Anthos، ما يسهّل إنشاء تطبيقات بدون خادم مستندة إلى الأحداث.
تتيح "أحداث Cloud Run for Anthos" إمكانية تسليم الأحداث غير المتزامنة بشكل موثوق وآمن وقابل للتوسيع من مصادر الأحداث المجمّعة أو التي تم إنشاؤها بواسطة التطبيق إلى المستهلكين داخل المجموعة وخارجها.

مصادر Google Cloud | مصادر الأحداث التي هي منتجات تملكها Google Cloud |
مصادر Google | مصادر الأحداث التي هي منتجات تملكها Google، مثل Gmail وHangouts وAndroid Management وغيرها |
المصادر المخصّصة | مصادر الأحداث التي لا تملكها Google والتي ينشئها المستخدمون النهائيون بأنفسهم يمكن أن تكون هذه مصادر Knative من تطوير المستخدمين أو أي تطبيق آخر يتم تشغيله على المجموعة ويمكنه إنشاء حدث Cloud. |
المصادر التابعة لجهات خارجية | مصادر الأحداث التي لا تملكها Google ولا يملكها المستخدم النهائي ويشمل ذلك مصادر الأحداث الشائعة، مثل Github وSAP وDatadog وPagerduty وما إلى ذلك، التي يملكها ويصونها مقدّمو خدمات أو شركاء أو منتديات مفتوحة المصدر تابعة لجهات خارجية. |
يتم تعديل الأحداث لتتوافق مع تنسيق CloudEvents v1.0 من أجل إمكانية التشغيل التفاعلي بين الخدمات. CloudEvents هي مواصفات مفتوحة لا تعتمد على أي بائع وتصف بيانات الأحداث بتنسيقات شائعة، ما يتيح إمكانية التشغيل التفاعلي بين الخدمات والمنصات والأنظمة.
تتوافق أحداث Cloud Run مع Knative Eventing وتتيح إمكانية نقل الحاويات من وإلى عمليات التنفيذ الأخرى المستندة إلى Knative. يوفر ذلك إطار عمل متسقًا ومستقلاً عن السحابة الإلكترونية لربط منتجي الأحداث بمستهلكي الأحداث بشكل تعريفي.
3- الحالة الحالية
هذه المعاينة هي الإصدار الأول الذي يقدّم مجموعة أولية من الوظائف طويلة الأمد.

لتمكين المستخدمين من إنشاء تطبيقات بدون خادم مستندة إلى الأحداث، نركّز في البداية على جانبَين:
- توفير منظومة متكاملة واسعة من مصادر Google Cloud التي تتيح لخدمات Cloud Run على مجموعة Anthos الاستجابة للأحداث من خدمات Google Cloud
- في البداية، يتم تسليم الأحداث من مصادر Google Cloud من خلال "سجلات تدقيق السحابة الإلكترونية" (CAL)، ما يتيح مجموعة كبيرة من مصادر الأحداث. يرتبط وقت الاستجابة ومدى توفّر عملية تسليم الأحداث من هذه المصادر بوقت الاستجابة ومدى توفّر Cloud Audit Logs. عند نشر حدث من مصدر Google Cloud، يتم إنشاء إدخال مطابق في "سجلّ تدقيق Cloud".
- بالإضافة إلى "سجلّات تدقيق Cloud"، يتوفّر دعم من الدرجة الأولى لاستهلاك الأحداث من Cloud Storage وCloud Pub/Sub وCloud Scheduler. سنواصل توسيع هذه المنظومة المتكاملة للمصادر لتشمل المزيد من المصادر الممتازة، وذلك استنادًا إلى المعلومات التي نكتسبها من رحلات المستخدمين وملاحظاتهم.
- السماح لتطبيقات وخدمات المستخدم النهائي بإصدار أحداث مخصّصة من خلال النشر إلى عنوان URL لـ Broker على مستوى المجموعة على مستوى مساحة الاسم
تستخدِم آلية التسليم الأساسية مواضيع واشتراكات Cloud Pub/Sub التي تظهر في مشاريع العملاء. وبالتالي، توفّر الميزة ضمانات التسليم نفسها التي توفّرها خدمة Cloud Pub/Sub.
توفّر أداة "مشغّل الأحداث" طريقة للاشتراك في الأحداث، بحيث يتم تسليم الأحداث التي تتطابق مع فلتر المشغّل إلى الوجهة (أو المخزَن) الذي يشير إليه المشغّل.
يتم تسليم جميع الأحداث بتنسيق Cloud Events v1.0 لتحقيق التشغيل التفاعلي بين الخدمات.
سنواصل تقديم المزيد من الميزات القيّمة بشكل متكرّر حتى الوصول إلى مرحلة الإتاحة العامة وما بعدها.
4. الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



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

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

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 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 باستخدام "أحداث Cloud Run"
أنشئ مجموعة 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 Run" (لوحة التحكّم)
تتضمّن Cloud Run Events لوحة تحكّم ولوحة بيانات يجب إعدادهما بشكل منفصل. لإعداد "مستوى التحكّم"، اتّبِع الخطوات التالية:
في 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. إعداد "أحداث Cloud Run" (مستوى البيانات)
بعد ذلك، عليك إعداد مستوى البيانات في مساحات أسماء المستخدمين. يؤدي ذلك إلى إنشاء وسيط لديه الأذونات المناسبة للقراءة والكتابة من وإلى 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. إنشاء مخزَن Cloud Run
بصفتك مصدرًا لتلقّي الأحداث، يمكنك نشر خدمة Cloud Run تسجّل محتوى 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
انشر تطبيقك المحفوظ في حاوية على 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 الذي أنشأناه نص الرسالة الواردة. يمكنك الاطّلاع على ذلك في قسم "السجلّات" في مثيل Cloud Run:

يُرجى العِلم أنّه سيتم ترميز "Hello there" باستخدام base64 لأنّها أُرسلت من خلال Pub/Sub، وعليك فك ترميزها إذا أردت الاطّلاع على الرسالة الأصلية المُرسَلة.
حذف المشغّل
يمكنك اختياريًا حذف المشغّل بعد الانتهاء من الاختبار.
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
12. إنشاء مشغّل أحداث لسجلات التدقيق
عليك إعداد مشغّل للاستماع إلى الأحداث من "سجلات التدقيق". على وجه التحديد، ستبحث عن أحداث إنشاء مواضيع Pub/Sub في "سجلات التدقيق".
تفعيل سجلّات التدقيق
لتلقّي الأحداث من إحدى الخدمات، عليك تفعيل سجلّات التدقيق. من Cloud Console، انقر على IAM & Admin > Audit Logs من القائمة في أعلى يمين الصفحة. في قائمة الخدمات، تحقَّق من Google Cloud Pub/Sub:

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

سجلّات تدقيق الاختبار
لمعرفة كيفية تحديد المَعلمات التي تحتاج إلى إعدادها لتفعيل مشغّل فعلي، عليك تنفيذ عملية فعلية.
على سبيل المثال، أنشئ موضوعًا على Pub/Sub:
gcloud pubsub topics create cre-gke-topic1
لنطّلع الآن على نوع سجلّ التدقيق الذي أنشأه هذا التحديث. من Cloud Console، انقر على Logging > Logs Viewer من القائمة في أعلى يمين الصفحة.
ضمن Query Builder,، اختَر Cloud Pub/Sub Topic وانقر على Add:

بعد تنفيذ الاستعلام، ستظهر لك سجلّات لمواضيع Pub/Sub، ويجب أن يكون أحدها google.pubsub.v1.Publisher.CreateTopic:

يُرجى الاطّلاع على 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 دقائق حتى يتم نشر عملية إنشاء المشغّل وبدء فلترة الأحداث. وبعد أن يصبح جاهزًا، سيعمل على فلترة أحداث الإنشاء وإرسالها إلى الخدمة. أنت الآن جاهز لتفعيل حدث.
أنشئ موضوعًا آخر على Pub/Sub كما فعلت سابقًا:
gcloud pubsub topics create cre-gke-topic2
إذا تحقّقت من سجلّات خدمة Cloud Run في Cloud Console، من المفترض أن يظهر لك الحدث الذي تم تلقّيه:

حذف المشغّل والمواضيع
يمكنك اختياريًا حذف المشغّل بعد الانتهاء من الاختبار باتّباع الخطوات التالية:
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
بعد ذلك، امنح حساب الخدمة هذا الحقوق اللازمة للنشر في Pub/Sub:
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، من المفترض أن يظهر لك الحدث الذي تم تلقّيه:

حذف المشغّل
يمكنك اختياريًا حذف المشغّل بعد الانتهاء من الاختبار باتّباع الخطوات التالية:
gcloud beta events triggers delete trigger-storage
14. إنشاء مشغّل أحداث لخدمة Cloud Scheduler
ستُعدّ إعداد مشغّل للاستماع إلى الأحداث من 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
اختَر موقعًا جغرافيًا في Cloud Scheduler لإنشاء أداة الجدولة:
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 Pod لإنتاج الأحداث
يتم عادةً إنشاء الأحداث آليًا. ومع ذلك، في هذه الخطوة، ستستخدِم curl لإرسال أحداث فردية يدويًا والاطّلاع على كيفية تلقّي هذه الأحداث من قِبل المستهلك المناسب.
لإنشاء وحدة Pod تعمل كمنتج للأحداث، شغِّل الأمر التالي:
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) سيتم إصداره. يُرجى العلم أنّه يمكن فلترة التطابقات التامة على أي عدد من سمات CloudEvents بالإضافة إلى الإضافات. إذا كانت مجموعة الفلاتر تحدّد سمات متعدّدة، يجب أن يتضمّن الحدث جميع السمات لكي يفلترها عامل التشغيل. في المقابل، إذا لم تحدّد فلترًا، سيتم تلقّي جميع الأحداث في خدمتك.
إنشاء المشغّل:
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
انتقِل إلى curl pod الذي أنشأته سابقًا باستخدام SSH:
kubectl --namespace ${NAMESPACE} attach curl -it
لقد تمكّنت من الوصول إلى وحدة pod باستخدام 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
تأكَّد من إرسال الحدث المنشور من خلال الاطّلاع على سجلّات خدمة Cloud Run:
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 for Anthos
- الحالة الحالية لـ "الأحداث في Cloud Run for Anthos"
- إنشاء مخزَن Cloud Run
- إنشاء مشغّل أحداث لخدمة Cloud Pub/Sub
- إنشاء مشغّل أحداث لسجلات التدقيق
- إنشاء مشغّل أحداث لخدمة Cloud Storage
- إنشاء مشغّل أحداث لخدمة Cloud Scheduler
- إنشاء أحداث مخصّصة واستخدامها