1. مقدمة
يتيح لك التشغيل في السحابة الإلكترونية تشغيل حاويات بدون حالة في بيئة مُدارة بالكامل. تم إنشاء هذا الإصدار من 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 إمكانية تسليم الأحداث غير المتزامنة والموثوقة والآمنة والقابلة للتطوّر من مصادر الأحداث المجمَّعة أو التي تم إنشاؤها من خلال التطبيقات إلى المستهلكين على المجموعة أو خارج المجموعة.
مصادر 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- الحالة الحالية
هذه المعاينة هي الإصدار الأول الذي يقدّم مجموعة أولية من الوظائف طويلة المدى.
لتمكين المستخدمين من إنشاء تطبيقات بدون خادم تعتمد على الأحداث، ينصب تركيزنا الأولي على الجانبين:
- توفير منظومة متكاملة واسعة من مصادر Google Cloud تتيح لخدمات Cloud Run على مجموعة Anthos للاستجابة إلى الأحداث من خدمات Google Cloud.
- في البداية، يتم تقديم الأحداث من مصادر Google Cloud عن طريق سجلات تدقيق Cloud (CAL)، ما يتيح مجموعة متنوعة من مصادر الأحداث. يرتبط وقت الاستجابة ومدى توفُّر تسليم الأحداث من هذه المصادر بسجلات تدقيق Cloud. عند نشر حدث من مصدر Google Cloud، يتم إنشاء إدخال مقابل في سجلّ تدقيق Cloud.
- إلى جانب سجلّات التدقيق في Cloud، تتوفّر خدمة دعم من الدرجة الأولى للاستفادة من الأحداث من Cloud Storage وCloud Pub/Sub وCloud Scheduler. وسنواصل توسيع نطاق هذه المنظومة المتكاملة من المصادر باستخدام مصادر من الدرجة الأولى حيث نتعلم المزيد من تجارب المستخدمين والملاحظات.
- يمكنك تفعيل تطبيقات المستخدم وخدماتها لإصدار أحداث مخصَّصة من خلال النشر على عنوان URL للوسيط المحلي على نطاق مساحة الاسم.
تستخدم آلية التسليم الأساسية مواضيع واشتراكات Cloud Pub/Sub التي تظهر للعملاء. مماثلة. وبالتالي، توفِّر هذه الميزة ضمانات التسليم نفسها المتوفّرة في خدمة Cloud Pub/Sub.
يوفّر "عامل تشغيل الحدث" طريقة للاشتراك في الأحداث ليتم تسليم الأحداث التي تتطابق مع فلتر المشغِّل إلى الوجهة (أو الحوض) التي يشير إليها العامل المشغِّل.
يتم عرض جميع الأحداث بتنسيق Cloud Events v1.0 لإتاحة إمكانية التشغيل التفاعلي على جميع الخدمات.
وسنستمر في تقديم المزيد من القيمة بطريقة تكرارية وصولاً إلى "إحصاءات Google" وما بعدها.
4. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض لهذا المشروع. طالما أنك تتبع اصطلاحات التسمية الخاصة به، يمكنك استخدام أي شيء تريده ويمكنك تحديثه في أي وقت.
- يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تُنشئ وحدة التحكّم في Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الرجوع إلى رقم تعريف المشروع (والذي يتم تحديده عادةً على أنّه
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 مع أحداث تشغيل السحابة الإلكترونية
أنشئ مجموعة 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:
يُرجى العِلم أنّ عبارة "مرحبًا" سيكون بترميز base64 لأنه تم إرساله من قبل Pub/Sub وسيتعين عليك فك ترميزه إذا أردت رؤية الرسالة الأصلية التي تم إرسالها.
حذف العامل المشغِّل
اختياريًا، يمكنك حذف العامل المشغِّل بعد الانتهاء من الاختبار.
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
12. إنشاء مشغل أحداث لسجلات التدقيق
ستقوم بإعداد مشغل للاستماع إلى الأحداث من سجلات التدقيق. وبشكل أكثر تحديدًا، ستبحث عن أحداث إنشاء موضوع النشر/الاشتراك في سجلات التدقيق.
تفعيل سجلات التدقيق
لتلقّي الأحداث من إحدى الخدمات، عليك تفعيل سجلات التدقيق. من Cloud Console، اختَر "IAM & Admin > Audit Logs
" من القائمة في أعلى يمين الصفحة. في قائمة الخدمات، تحقَّق من Google Cloud Pub/Sub:
على يسار الصفحة، تأكّد من اختيار "مشرف" و"قراءة" و"كتابة". انقر على "حفظ":
اختبار سجلات التدقيق
لمعرفة كيفية تحديد المعاملات اللازمة لإعداد عامل تشغيل فعلي، عليك إجراء عملية فعلية.
على سبيل المثال، أنشئ موضوع نشر/اشتراك:
gcloud pubsub topics create cre-gke-topic1
والآن، لنرَ نوع سجلّ التدقيق الذي أنشأه هذا التحديث. من Cloud Console، اختَر "Logging > Logs Viewer
" من القائمة في أعلى يمين الصفحة.
ضمن Query Builder,
، اختر Cloud Pub/Sub Topic
وانقر على Add
:
بعد تشغيل طلب البحث، ستظهر لك سجلات لمواضيع النشر/الاشتراك، ويجب أن يكون أحد هذه السجلات 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 دقائق إلى أن يتم نشر عامل التفعيل وبدء فلترة الأحداث. وبعد اكتمالها، ستتم فلترة إنشاء الأحداث وإرسالها إلى الخدمة. أصبحت جاهزًا الآن لتنشيط حدث.
أنشئ موضوعًا آخر للنشر/الاشتراك، كما فعلت سابقًا:
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
امنح بعد ذلك حقوق "حساب الخدمة" هذا لنشر المحتوى على خدمة "النشر/الاشتراك":
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
سيتم إعداد عامل تشغيل للاستماع إلى الأحداث من أداة جدولة المهام في السحابة الإلكترونية.
إنشاء تطبيق 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
- إنتاج أحداث مخصّصة واستهلاكها