1. מבוא
ב-Cloud Run אפשר להריץ קונטיינרים ללא שמירת מצב בסביבה מנוהלת. היא מבוססת על קוד פתוח Knative, ומאפשרת לכם להריץ את הקונטיינרים בניהול מלא באמצעות Cloud Run, או באשכול Google Kubernetes Engine באמצעות Cloud Run for Anthos.
בעזרת Eventarc קל לקשר בין שירותים שונים (Cloud Run, Cloud Functions, Workfklows) לאירועים ממגוון מקורות. הוא מאפשר לפתח ארכיטקטורות מבוססות-אירועים שבהן מיקרו-שירותים (microservices) בצימוד חלש ומפוזרים. הוא גם מטפל בהטמעת נתונים של אירועים, מסירה, אבטחה, הרשאות וטיפול בשגיאות, כדי לשפר את הגמישות של המפתחים ואת עמידות האפליקציות.
ב-Codelab הזה, תלמדו על Eventarc. באופן ספציפי יותר, תוכלו להאזין לאירועים מ-Pub/Sub, ל-Cloud Storage וליומני הביקורת של Cloud באמצעות Eventarc, ולהעביר אותם לשירות Cloud Run.
מה תלמדו
- החזון של Eventarc
- אירועים ב-Eventarc
- יצירת sink ב-Cloud Run
- יצירת טריגר ל-Pub/Sub
- יצירת טריגר ל-Cloud Storage
- יצירת טריגר ליומני הביקורת של Cloud
- ממשק המשתמש של Eventarc
2. החזון של Eventarc
המטרה של Eventarc היא להעביר אירועים ממגוון מקורות אירועים של Google, Google Cloud וצדדים שלישיים ליעדי אירועים ב-Google Cloud.
המקורות של Google Cloud | מקורות אירועים שהם מוצרים בבעלות Google Cloud |
מקורות של Google | מקורות של אירועים שהם מוצרים בבעלות Google, כמו Gmail , Hangouts, ניהול Android ועוד |
מקורות מותאמים אישית | מקורות של אירועים שהם לא מוצרים בבעלות Google, שנוצרים על ידי משתמשי הקצה עצמם |
מקורות של צד שלישי | מקורות של אירועים שלא בבעלות Google או בייצור של לקוחות. מקורות כאלה כוללים אירועים פופולריים כמו Check Point CloudGuard, Datadog, ForgeRock, Lacework וכו' שנמצאים בבעלות ובתחזוקה של ספקים ושותפים של צד שלישי. |
האירועים מנורמלים לפורמט CloudEvents v1.0 לצורך יכולת פעולה הדדית בין שירותים. CloudEvents הוא מפרט פתוח ניטרלי מבחינת הספקים, שמתאר נתוני אירועים בפורמטים נפוצים, ומאפשר יכולת פעולה הדדית בין שירותים, פלטפורמות ומערכות.
3. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא נעשה בה שימוש ב-Google APIs, ואפשר לעדכן אותה בכל שלב.
- Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID
), כך שאם הוא לא מוצא חן בעיניכם, תוכלו ליצור פרויקט אקראי אחר או לנסות בעצמכם ולבדוק אם הוא זמין. ואז המכשיר 'קפוא' לאחר יצירת הפרויקט. - יש ערך שלישי, Project Number, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, פועלים לפי ההנחיות לניקוי בסוף ה-Codelab. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.
לפני שמתחילים
ב-Inside Cloud Shell, מוודאים שמזהה הפרויקט מוגדר:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. פריסת שירות של Cloud Run
פריסת שירות של Cloud Run לקבלת אירועים. בשלב הזה פורסים קונטיינר Hello של Cloud Run שמתעד את התוכן של CloudEvents.
קודם כול, מפעילים את השירותים הנדרשים בשביל Cloud Run:
gcloud services enable run.googleapis.com
פורסים את הקונטיינר מסוג hello ב-Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
לאחר הצלחה, שורת הפקודה תציג את כתובת ה-URL של השירות. אפשר לפתוח את כתובת ה-URL של השירות בכל חלון דפדפן כדי לוודא שהשירות נפרס.
5. גילוי אירועים
לפני שיוצרים טריגרים ב-Eventarc, אפשר לגלות מהם מקורות האירועים, אילו סוגי אירועים הם יכולים לקלוט ואיך להגדיר טריגרים כדי לצרוך אותם.
כדי לראות את הרשימה של סוגי האירועים השונים:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
כדי לקבל מידע נוסף על כל סוג אירוע:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
כדי להציג את רשימת השירותים שפולטים אירוע מסוג מסוים:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
כדי לראות את הרשימה של שמות השיטות (אירועי משנה) שכל שירות יכול פולט:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. יצירת טריגר של Pub/Sub
אחת הדרכים לקבל אירועים היא באמצעות Cloud Pub/Sub. כל אפליקציה יכולה לפרסם הודעות ב-Pub/Sub, וניתן להעביר את ההודעות האלה ל-Cloud Run דרך Eventarc.
הגדרה
לפני שיוצרים טריגרים, צריך להפעיל את השירותים הנדרשים ל-Eventarc:
gcloud services enable eventarc.googleapis.com
צריך גם חשבון שירות שישמש בטריגרים. יוצרים חשבון שירות:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
יצירה
יוצרים טריגר כדי לסנן אירועים שפורסמו בנושא Pub/Sub לפי שירות Cloud Run שנפרס:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
בדיקה
הטריגר של Pub/Sub יוצר נושא מתחת לכריכה. בואו נמצא אותו ונקצה למשתנה:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
משתמשים ב-gcloud
כדי לפרסם הודעה בנושא:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
השירות Cloud Run רושם את גוף ההודעה הנכנסת. אפשר להציג את הנתונים האלה בקטע Logs במכונה של Cloud Run:
יצירה באמצעות נושא Pub/Sub קיים
כברירת מחדל, כשיוצרים טריגר של Pub/Sub, Eventarc יוצר נושא בכיסויים שישמש אתכם כנושא העברה בין האפליקציה שלכם לשירות Cloud Run. זו אפשרות שימושית כדי ליצור בקלות ובמהירות טריגר המגובה ב-Pub/Sub, אבל לפעמים רוצים להשתמש בנושא קיים. באמצעות Eventarc אפשר לציין נושא Pub/Sub קיים באותו פרויקט באמצעות הדגל --transport-topic
של gcloud.
כדי לראות איך זה עובד, יוצרים נושא Pub/Sub שישמש כנושא העברה:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
יוצרים טריגר:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
כדי לבדוק את הטריגר, שולחים הודעה לנושא:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. יצירת טריגר ל-Cloud Storage
בשלב הזה תיצרו טריגר להאזנה לאירועים מ-Cloud Storage.
הגדרה
קודם כול, יוצרים קטגוריה כדי לקבל אירועים מ:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
מקצים את התפקיד eventarc.eventReceiver
כדי שאפשר יהיה להשתמש בחשבון השירות בטריגר של Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
צריך גם להוסיף את התפקיד pubsub.publisher
לחשבון השירות של Cloud Storage עבור טריגרים של Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
יצירה
יוצרים טריגר כדי לנתב אירועים חדשים של יצירת קבצים מהקטגוריה לשירות שלכם:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
בדיקה
מציגים את כל הטריגרים כדי לאשר שהטריגר נוצר בהצלחה:
gcloud eventarc triggers list
העלאת קובץ לקטגוריה של Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
אם תבדקו את היומנים של שירות Cloud Run במסוף Cloud, אתם אמורים לראות את האירוע שהתקבל:
8. יצירת טריגר ליומני ביקורת של Cloud
על אף שהטריגר של Cloud Storage הוא הדרך הטובה יותר להאזין לאירועים של Cloud Storage, בשלב הזה תיצרו טריגר של Cloud Audit Log, כדי לעשות זאת.
הגדרה
כדי לקבל אירועים משירות מסוים, צריך להפעיל את יומני הביקורת של Cloud. במסוף Cloud, בוחרים את IAM & Admin
ואת Audit Logs
בתפריט שבפינה הימנית העליונה. ברשימת השירותים, מסמנים את Google Cloud Storage
:
בצד שמאל, מוודאים שהאפשרויות Admin
, Read
ו-Write
מסומנות ולוחצים על Save
:
יצירה
יוצרים טריגר כדי לנתב אירועים חדשים של יצירת קבצים מהקטגוריה לשירות שלכם:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
בדיקה
האתחול של הטריגרים של יומני הביקורת נמשך קצת זמן. כדי לבדוק אם הטריגר נוצר, תוכלו לפרט את כל הטריגרים:
gcloud eventarc triggers list
אתם אמורים לראות שהשדה ACTIVE
הוא Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
מעלים את אותו קובץ לקטגוריה של Cloud Storage כמו שעשיתם קודם לכן:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
אם תבדקו את היומנים של שירות Cloud Run במסוף Cloud, אתם אמורים לראות את האירוע שהתקבל:
9. ממשק המשתמש של Eventarc
בשלב הזה תלמדו על ממשק המשתמש של Eventarc במסוף Google Cloud. בממשק המשתמש של Eventarc אפשר לראות סקירה כללית של כל הטריגרים, לערוך ולמחוק אותם וליצור טריגרים חדשים דרך מסוף Google Cloud.
נכנסים לקטע Eventarc ב-Google Cloud:
תוצג רשימת הטריגרים שיצרתם קודם:
אם לוחצים על טריגר, אפשר לראות את פרטי הטריגר, לערוך או למחוק אותו:
אפשר גם ליצור טריגר חדש על ידי בחירה באפשרות Create trigger
ומילוי פרטי הטריגר:
10. מעולה!
ברכות על השלמת ה-Codelab.
הנושאים שטיפלנו בהם
- החזון של Eventarc
- אירועים ב-Eventarc
- יצירת sink ב-Cloud Run
- יצירת טריגר ל-Pub/Sub
- יצירת טריגר ל-Cloud Storage
- יצירת טריגר ליומני הביקורת של Cloud
- ממשק המשתמש של Eventarc