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

1. مقدمة

6a5cf23c8e20491f.png

تتيح لك خدمة 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" إمكانية تسليم الأحداث غير المتزامنة بشكل موثوق وآمن وقابل للتوسيع من مصادر الأحداث المجمّعة أو التي تم إنشاؤها بواسطة التطبيق إلى المستهلكين داخل المجموعة وخارجها.

ce389bcafba6d669.png

مصادر 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- الحالة الحالية

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

b1dd0d8a73185b95.png

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

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

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

توفّر أداة "مشغّل الأحداث" طريقة للاشتراك في الأحداث، بحيث يتم تسليم الأحداث التي تتطابق مع فلتر المشغّل إلى الوجهة (أو المخزَن) الذي يشير إليه المشغّل.

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

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

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

إعداد البيئة بالسرعة التي تناسبك

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

9526909a06c6d4f4.png

يُرجى العِلم أنّه سيتم ترميز "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:

97bd4b57c6a05fcc.png

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

bec31b4f35fbcea.png

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

لمعرفة كيفية تحديد المَعلمات التي تحتاج إلى إعدادها لتفعيل مشغّل فعلي، عليك تنفيذ عملية فعلية.

على سبيل المثال، أنشئ موضوعًا على Pub/Sub:

gcloud pubsub topics create cre-gke-topic1

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

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

f5c634057e935bc6.png

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

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

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

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

aff3b2e7ad05c75d.png

حذف المشغّل

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

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
  • إنشاء أحداث مخصّصة واستخدامها