אירועים של Cloud Run for Anthos Codelab

1. מבוא

6a5cf23c8e20491f.png

Cloud Run מאפשר להריץ קונטיינרים בלי שמירת מצב בסביבה מנוהלת. הוא מבוסס על Knative בקוד פתוח, ומאפשר לכם לבחור אם להריץ את הקונטיינרים שלכם בניהול מלא באמצעות Cloud Run, או באשכול Google Kubernetes Engine באמצעות Cloud Run for Anthos.

Events for Cloud Run for Anthos מאפשרת לחבר בקלות שירותי Cloud Run לאירועים ממגוון מקורות. הוא מאפשר לכם לבנות ארכיטקטורות מבוססות-אירועים שבהן מיקרו-שירותים (microservices) מצומדים בצורה חלשה ומפוזרים. השירות גם מטפל בהעברה, באספקה, באבטחה, בהרשאה ובטיפול בשגיאות של אירועים, וכך משפר את הגמישות של המפתחים ואת עמידות האפליקציה.

ב-codelab הזה תלמדו על אירועים ב-Cloud Run for Anthos. באופן ספציפי, תלמדו איך להאזין לאירועים מ-Cloud Pub/Sub, מיומני ביקורת, מ-Cloud Storage ומ-Cloud Scheduler, ואיך ליצור ולצרוך אירועים בהתאמה אישית.

מה תלמדו

  • החזון לטווח ארוך של Events for Cloud Run for Anthos
  • המצב הנוכחי של Events for Cloud Run for Anthos
  • יצירת יעד ב-Cloud Run
  • יצירת טריגר לאירוע ב-Cloud Pub/Sub
  • יצירת טריגר מסוג Event ליומני ביקורת
  • יצירת טריגר לאירוע ב-Cloud Storage
  • יצירת טריגר מסוג Event ל-Cloud Scheduler
  • יצירה ושימוש באירועים מותאמים אישית

2. חזון לטווח ארוך

כשאנחנו מאמצים ארכיטקטורה בלי שרתים, אירועים הופכים לחלק בלתי נפרד מהאופן שבו מיקרו-שירותים (microservices) מנותקים מתקשרים. Events for Cloud Run for Anthos הופך את האירועים לחלק בלתי נפרד מהשירות Cloud Run for Anthos, כדי שיהיה קל ליצור אפליקציות serverless מבוססות-אירועים.

האירועים ב-Cloud Run for Anthos מאפשרים העברה אסינכרונית אמינה, מאובטחת וניתנת להרחבה של אירועים ממקורות אירועים ארוזים או ממקורות אירועים שנוצרו באפליקציה לצרכנים בתוך האשכול ומחוצה לו.

ce389bcafba6d669.png

מקורות של Google Cloud

מקורות אירועים שהם מוצרים בבעלות Google Cloud

מקורות של Google

מקורות אירועים שהם מוצרים בבעלות Google, כמו Gmail,‏ Hangouts,‏ Android Management ועוד

מקורות מותאמים אישית

מקורות אירועים שאינם מוצרים בבעלות Google ונוצרים על ידי משתמשי קצה. יכול להיות שמדובר במקורות Knative שפותחו על ידי משתמשים או בכל אפליקציה אחרת שפועלת באשכול ויכולה ליצור אירוע Cloud.

מקורות צד שלישי

מקורות אירועים שלא נמצאים בבעלות של Google או של משתמשי קצה. הם כוללים מקורות פופולריים של אירועים כמו GitHub, ‏ SAP, ‏ Datadog, ‏ Pagerduty וכו', שנמצאים בבעלות של ספקי צד שלישי, שותפים או קהילות OSS, ומתופעלים על ידם.

האירועים עוברים נורמליזציה לפורמט CloudEvents v1.0 כדי לאפשר יכולת פעולה הדדית בין שירותים. ‫CloudEvents הוא מפרט פתוח שאינו תלוי בספק, שמתאר נתוני אירועים בפורמטים נפוצים, ומאפשר יכולת פעולה הדדית בין שירותים, פלטפורמות ומערכות.

האירועים ב-Cloud Run תואמים ל-Knative Eventing ומאפשרים ניידות של קונטיינרים אל ומיישומים אחרים שמבוססים על Knative. היא מספקת framework עקבי שלא תלוי בענן, לחיבור מוצהר של יוצרי אירועים עם צרכני אירועים.

3. המצב הנוכחי

התצוגה המקדימה הזו היא הגרסה הראשונה שכוללת קבוצה ראשונית של פונקציות לטווח הארוך.

b1dd0d8a73185b95.png

כדי לאפשר למשתמשים ליצור אפליקציות ללא שרת (serverless) שמבוססות על אירועים, אנחנו מתמקדים בשני תחומים:

  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 של Broker מקומי באשכול ברמת מרחב השמות.

מנגנון המסירה הבסיסי משתמש בנושאים ובמינויים של Cloud Pub/Sub שגלויים בפרויקטים של הלקוחות. לכן, התכונה מספקת את אותן התחייבויות למסירה כמו Cloud Pub/Sub.

הטריגר Event Trigger מאפשר להירשם לאירועים כך שאירועים שתואמים למסנן הטריגר מועברים ליעד (או למאגר) שאליו הטריגר מצביע.

כל האירועים מועברים בפורמט Cloud Events v1.0 כדי לאפשר פעולה הדדית בין שירותים.

נמשיך לספק ערך רב יותר באופן איטרטיבי עד להשקת הגרסה הזמינה לכולם ומעבר לכך.

4. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • שם הפרויקט הוא השם המוצג שלכם בפרויקט הזה. כל עוד אתם פועלים לפי מוסכמות השמות, אתם יכולים להשתמש בכל שם שתרצו ולעדכן אותו מתי שתרצו.
  • מזהה הפרויקט חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך להתייחס אליה. ברוב ה-codelab, תצטרכו להפנות למזהה הפרויקט (ובדרך כלל הוא מזוהה כ-PROJECT_ID), אז אם אתם לא אוהבים אותו, תוכלו ליצור מזהה אקראי אחר, או לנסות מזהה משלכם ולראות אם הוא זמין. אחרי שהפרויקט נוצר, הוא 'קפוא'.
  1. לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.

העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

מפעילים את Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.

ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

bce75f34b2c53987.png

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

f6ef2b5f13479f3a.png

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.

5. הפעלת ממשקי API, הגדרת אזור ופלטפורמה

הגדרת מזהה פרויקט והתקנת רכיבי אלפא

ב-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

הפעלת ממשקי ה-API

מפעילים את כל השירותים הנדרשים:

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, צריך להגדיר את שם האשכול, האזור והפלטפורמה. לדוגמה, כאן הגדרנו את השם והתחום ל-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 Events

יוצרים אשכול 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 Events (מישור הנתונים)

השלב הבא הוא להגדיר את מישור הנתונים במרחבי השמות של המשתמשים. כך נוצר ברוקר עם הרשאות מתאימות לקריאה מ-Pub/Sub ולכתיבה ל-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. יצירת יעד (Sink) של 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 באמצעות Events for 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"

ה-sink של Cloud Run שיצרנו מתעד את גוף ההודעה הנכנסת. אפשר לראות את זה בקטע Logs (יומנים) של מופע Cloud Run:

9526909a06c6d4f4.png

שימו לב שהמחרוזת "Hello there" תעבור קידוד base64 כי היא נשלחה על ידי Pub/Sub, ותצטרכו לפענח אותה אם אתם רוצים לראות את ההודעה המקורית שנשלחה.

מחיקת הטריגר

אפשר גם למחוק את הטריגר אחרי שמסיימים את הבדיקה.

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

12. יצירת טריגר מסוג Event ליומני ביקורת

תגדירו טריגר שיאזין לאירועים מיומני הביקורת. במילים אחרות, צריך לחפש ביומני הביקורת אירועים של יצירת נושא 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.

Create a bucket

קודם יוצרים קטגוריה של 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. יצירת טריגר מסוג Event ל-Cloud Scheduler

תגדירו טריגר להאזנה לאירועים מ-Cloud Scheduler.

יצירת אפליקציית App Engine

בשלב הזה, המשתמשים צריכים ליצור אפליקציית App Engine כדי להשתמש ב-Cloud Scheduler. בוחרים מיקום של 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. אירועים מותאמים אישית (נקודת קצה של ברוקר)

בחלק הזה של ה-codelab, תיצרו אירועים מותאמים אישית ותשתמשו בהם באמצעות ה-Broker.

יצירת 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 ל-Broker. כדי לראות את כתובת ה-URL של הברוקר, מריצים את הפקודה הבאה:

kubectl get brokers -n ${NAMESPACE}

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

מתחברים באמצעות SSH אל ה-pod‏ curl שיצרתם קודם:

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. מעולה!

כל הכבוד, סיימתם את ה-Codelab.

מה נכלל

  • החזון לטווח ארוך של Events for Cloud Run for Anthos
  • המצב הנוכחי של Events for Cloud Run for Anthos
  • יצירת יעד ב-Cloud Run
  • יצירת טריגר לאירוע ב-Cloud Pub/Sub
  • יצירת טריגר מסוג Event ליומני ביקורת
  • יצירת טריגר לאירוע ב-Cloud Storage
  • יצירת טריגר מסוג Event ל-Cloud Scheduler
  • יצירה ושימוש באירועים מותאמים אישית