טריגר ב-Eventarc מציין שיש לכם עניין באירוע מסוים או בקבוצת אירועים. אתם יכולים להגדיר ניתוב אירועים על ידי ציון מסננים לטריגר, כולל מקור האירוע ושירות היעד של Google Kubernetes Engine (GKE) שפועל באשכול GKE. שימו לב: יעדים יכולים לכלול רק שירותים שפועלים באשכולות GKE (ציבוריים או פרטיים) עם נקודות קצה ציבוריות. כדי לטרגט שירותים באשכולות GKE עם נקודות קצה פרטיות, צריך לנתב אירועים אל נקודות קצה פנימיות של HTTP.
Eventarc מעביר אירועים למקבל האירועים בפורמט CloudEvents באמצעות בקשת HTTP.
ההוראות האלה מסבירות איך להגדיר ניתוב אירועים לשירות GKE שמופעל על ידיCloud Pub/Sub אירוע ישיר. במקרה הזה, הודעה שפורסמה בנושא Pub/Sub. פרטים נוספים זמינים ברשימה של אירועים ישירים נתמכים.
לפני שמתחילים
צריך להפעיל איחוד זהויות של עומסי עבודה ל-GKE באשכול GKE ובמאגר הצמתים שבו פועל שירות היעד. כדי להגדיר את העברת האירועים בצורה נכונה, צריך להשתמש באיחוד זהויות של עומסי עבודה ל-GKE. זו גם הדרך המומלצת לגשת לשירותי Google Cloud מתוך אפליקציות שפועלות ב-GKE, כי היא מאפשרת אבטחה וניהול משופרים.
איחוד זהויות של עומסי עבודה ל-GKE
יכול להיות שאפליקציות שפועלות ב-GKE יצטרכו גישה ל-Google Cloud APIs. איחוד זהויות של עומסי עבודה ל-GKE מאפשר לחשבון שירות של Kubernetes באשכול GKE לפעול כחשבון שירות של IAM. פודים שמשתמשים בחשבון השירות של Kubernetes שהוגדר עוברים אימות אוטומטי כחשבון השירות של IAM כשניגשים אל ממשקי Google Cloud API. שימוש באיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE מאפשר להקצות זהויות והרשאות שונות ומפורטות לכל אפליקציה באשכול. חשוב לשים לב שצריך להעניק הרשאות ספציפיות לחשבון השירות של טריגר Eventarc. במאמר הזה מוסבר איך יוצרים חשבון שירות.
מידע נוסף על הפעלה והגדרה של איחוד זהויות של עומסי עבודה ל-GKE באשכולות GKE זמין במאמר אימות ל- Google Cloud APIs מתוך עומסי עבודה של GKE.
העברת אירועים
הכלי להעברת אירועים של Eventarc מושך אירועים חדשים מ-Eventarc ומעביר אותם ליעד GKE. הרכיב הזה משמש כמתווך בין שכבת התעבורה של Pub/Sub לבין שירות GKE. הוא פועל בשירותים קיימים ותומך גם בשירותי איתות (כולל שירותים שלא נחשפים מחוץ לאשכול שמנוהל במלואו), תוך פישוט ההגדרה והתחזוקה. ברמת הרשת, כדי לקבל אירועים בשירות GKE, לא צריך לפתוח את השירות לתעבורה חיצונית כי כל האירועים מועברים ממקור שנמצא באותו אשכול GKE.
שימו לב שמחזור החיים של מעביר האירועים מנוהל על ידי Eventarc, ואם תמחקו בטעות את מעביר האירועים, Eventarc ישחזר את הרכיב הזה.
לכל טריגר שמפנה ליעד GKE, מעביר האירועים (pod gke-forwarder שהוגדר במיוחד) מבצע את הפעולות הבאות:
הוא משתמש ב-Pub/Sub API כדי לפתוח חיבור
StreamingPullל-trigger transporter (נושא ומינוי ב-Pub/Sub) ומקבל אירועים כשהם זמינים.הוא משנה את האירועים לפורמט CloudEvents הנכון, מקודד אותם ומעביר אותם כבקשת
HTTP POSTלשירות היעד ב-GKE.
לסוכן השירות של Eventarc צריכה להיות הרשאה להפעיל ולעדכן באופן קבוע את מופע gke-forwarder. צריך להעניק את ההרשאה הזו פעם אחת לכל פרויקט. פרטים נוספים זמינים במאמר הזה בקטע הפעלת יעדים של GKE.
פתרון בעיות
כדי לפתור בעיות שעלולות לקרות כשמשתמשים ב-Eventarc ל-GKE, אפשר לעיין במאמר פתרון בעיות ב-Eventarc ל-Google Kubernetes Engine (GKE).
הכנה ליצירת טריגר
לכל טריגר שמטרגט שירות GKE, Eventarc יוצר רכיב להעברת אירועים. כדי להתקין את הרכיב ולנהל משאבים באשכול GKE, צריך לתת הרשאות ל-Eventarc. לפני שיוצרים טריגר Eventarc ליעדי GKE, צריך לבצע את המשימות הבאות.
המסוף
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
מפעילים את ממשקי ה-API של Eventarc, Eventarc Publishing, Google Kubernetes Engine ומנהל המשאבים.
אם רלוונטי, מפעילים את ממשק ה-API שקשור לאירועים הישירים. לדוגמה, כדי להשתמש ב Cloud Pub/Sub אירועים, צריך להפעיל אתCloud Pub/Sub API.
אם עדיין אין לכם חשבון שירות, אתם צריכים ליצור חשבון שירות בניהול המשתמש, ואז להקצות לו את התפקידים וההרשאות הנדרשים כדי ש-Eventarc יוכל לנהל אירועים בשירות היעד.
במסוף Google Cloud , נכנסים לדף יצירת חשבון שירות.
בוחרים את הפרויקט הרצוי.
כותבים שם בשדה Service account name. השדה Service account ID ימולא במסוף Google Cloud בהתאם לשם הזה.
כותבים תיאור בשדה Service account description. לדוגמה,
Service account for event trigger.לוחצים על Create and continue.
כדי לספק גישה מתאימה, ברשימה Select a role בוחרים את תפקידי ניהול הזהויות והגישה (IAM) שרוצים להקצות לחשבון השירות. מידע נוסף זמין במאמר תפקידים והרשאות ליעדי GKE.
כדי להוסיף עוד תפקידים, לוחצים על Add another role ומוסיפים אותם אחד אחרי השני.
לוחצים על Continue.
כדי לסיים את יצירת החשבון, לוחצים על סיום.
gcloud
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מפעילים את ממשקי ה-API של Eventarc, Eventarc Publishing, Google Kubernetes Engine ומנהל המשאבים.
gcloud services enable eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com
אם רלוונטי, מפעילים את ממשק ה-API שקשור לאירועים הישירים. לדוגמה, כדי להפעיל Cloud Pub/Sub אירועים, צריך להפעיל את האפשרות
pubsub.googleapis.com.אם עדיין אין לכם חשבון שירות שמנוהל על ידי המשתמש, אתם צריכים ליצור אותו ולהקצות לו את התפקידים וההרשאות הנדרשים כדי ש-Eventarc יוכל לנהל אירועים ביעד GKE.
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות. הוא צריך להיות באורך שבין 6 ל-30 תווים, והוא יכול לכלול תווים אלפאנומריים ומקפים. אחרי שיוצרים חשבון שירות, אי אפשר לשנות את השם שלו.מעניקים את התפקידים או ההרשאות הנדרשים לניהול זהויות והרשאות גישה (IAM). מידע נוסף זמין במאמר תפקידים והרשאות ליעדי GKE.
הפעלת יעדים ב-GKE
כדי לאפשר ל-Eventarc לנהל משאבים באשכול GKE, צריך להפעיל יעדי GKE ולקשר את סוכן השירות של Eventarc לתפקידים הנדרשים.
מפעילים יעדי GKE ל-Eventarc:
gcloud eventarc gke-destinations init
בהנחיה לקשירת התפקידים הנדרשים, מזינים
y.התפקידים הבאים מקושרים:
roles/compute.viewerroles/container.developerroles/iam.serviceAccountAdmin
יצירת טריגר
אפשר ליצור טריגר Eventarc באמצעות Google Cloud CLI או דרך מסוף Google Cloud .
המסוף
- נכנסים לדף Triggers ב-Eventarc במסוף Google Cloud .
- לוחצים על Create trigger (יצירת ביטוי להפעלה).
- מקלידים Trigger name.
זהו המזהה של הטריגר, והוא חייב להתחיל באות. הוא יכול להכיל עד 63 אותיות קטנות, מספרים או מקפים.
- בשדה Trigger type, בוחרים באפשרות Google sources.
- ברשימה Event provider בוחרים באפשרות Cloud Pub/Sub.
שימו לב: יכול להיות שבשם ספק האירועים שמופיע בGoogle Cloud מסמכי התיעוד המשויכים לא מופיעה התחילית Cloud או Google Cloud. לדוגמה, במסוף, Memorystore for Redis נקרא Google Cloud Memorystore for Redis.
- ברשימה Event type (סוג האירוע), מתוך האירועים Direct (ישירים), בוחרים באפשרות google.cloud.pubsub.topic.v1.messagePublished.
- ברשימה Select a Cloud Pub/Sub topic, בוחרים נושא או מאשרים את ברירת המחדל None כדי ליצור נושא חדש.
- ברשימה Region, בוחרים את אותו אזור כמוGoogle Cloud השירות שמייצר את האירועים.
מידע נוסף זמין במאמר בנושא מיקומי Eventarc.
- בוחרים את חשבון השירות שיפעיל את השירות או את תהליך העבודה.
אפשר גם ליצור חשבון שירות חדש.
כאן מציינים את כתובת האימייל בחשבון השירות של ניהול הזהויות והרשאות הגישה (IAM) שמשויך לטריגר, ושקודם לכן הענקתם לו תפקידים ספציפיים שנדרשים על ידי Eventarc.
- ברשימה Event destination בוחרים באפשרות Kubernetes Engine.
- בוחרים שירות.
זהו שם השירות שמקבל את האירועים להפעלת הטריגר. השירות צריך להיות באותו פרויקט כמו הטריגר, והוא יקבל אירועים כבקשות HTTP POST שנשלחות לנתיב של כתובת ה-URL הבסיסית שלו (
/), בכל פעם שהאירוע נוצר. - אפשר גם לציין את נתיב כתובת ה-URL של השירות שאליו רוצים לשלוח את הבקשה הנכנסת.
זהו הנתיב היחסי בשירות היעד שאליו יישלחו האירועים של הטריגר. לדוגמה:
/,/route,route,route/subroute. - אפשר גם ללחוץ על הוספת תווית . תוויות הן צמדי מפתח/ערך שעוזרים לכם לארגן אתGoogle Cloud המשאבים. מידע נוסף זמין במאמר מהן תוויות?
- לוחצים על יצירה.
אחרי שיוצרים טריגר, אי אפשר לשנות את המסננים של מקור האירועים. במקום זאת, אפשר ליצור טריגר חדש ולמחוק את הטריגר הישן. מידע נוסף זמין במאמר בנושא ניהול טריגרים.
gcloud
כדי ליצור טריגר, מריצים gcloud eventarc triggers createפקודה עם דגלים נדרשים ואופציונליים.
הודעות Pub/Sub (נושא קיים)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
TRIGGER: המזהה של הטריגר או מזהה מוגדר במלואו-
LOCATION: המיקום של טריגר Eventarc. אפשר גם להגדיר את המאפייןeventarc/location, למשלgcloud config set eventarc/location us-central1.טריגרים של Pub/Sub ל-Eventarc זמינים רק במיקומים של אזור יחיד, ואי אפשר ליצור טריגר Eventarc גלובלי. מידע נוסף זמין במאמר בנושא מיקומי Eventarc.
-
DESTINATION_GKE_CLUSTER: השם של אשכול GKE שבו פועל שירות GKE היעד שמקבל אירועים. -
DESTINATION_GKE_LOCATION: (אופציונלי) האזור של Compute Engine של אשכול GKE שבו פועל שירות היעד של GKE. אם לא מציינים זאת, ההנחה היא שהאשכול הוא אשכול אזורי שנמצא באותו אזור כמו הטריגר. -
DESTINATION_GKE_NAMESPACE: (אופציונלי) מרחב השמות שבו פועל שירות היעד של GKE. אם לא מציינים מרחב שמות, המערכת משתמשת במרחב השמותdefault. -
DESTINATION_GKE_SERVICE: השם של שירות GKE שמקבל את האירועים להפעלת הטריגר. השירות יכול להיות בכל אחד מהמיקומים שנתמכים ב-GKE, והוא לא צריך להיות באותו מיקום כמו הטריגר. עם זאת, השירות צריך להיות באותו פרויקט כמו הטריגר והוא יקבל אירועים כבקשות HTTP POST שנשלחות לנתיב כתובת ה-URL הבסיסית שלו (/), בכל פעם שהאירוע נוצר. -
DESTINATION_GKE_PATH: (אופציונלי) הנתיב היחסי שאתם מציינים בשירות GKE של היעד שאליו יישלחו האירועים של הטריגר. לדוגמה:/,/route,route,route/subroute. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
TOPIC_ID: המזהה של נושא ה-Pub/Sub הקיים. הנושא צריך להיות באותו פרויקט כמו הטריגר. -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמנוהל על ידי המשתמש.
הערות:
- חובה להשתמש בדגל
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"ואי אפשר לשנות אותו. כדי להגדיר סוג אירוע אחר, צריך ליצור טריגר חדש. - לכל טריגר יכולים להיות כמה מסנני אירועים, שמופרדים בפסיקים בדגל אחד
--event-filters=[ATTRIBUTE=VALUE,...] או שאפשר לחזור על הדגל כדי להוסיף עוד מסננים. רק אירועים שתואמים לכל המסננים נשלחים ליעד. אין תמיכה בתווים כלליים לחיפוש ובביטויים רגולריים. - הדגל
--transport-topicמשמש לציון המזהה של נושא Pub/Sub קיים או המזהה המוגדר במלואו שלו. - כברירת מחדל, מינויים ל-Pub/Sub שנוצרו עבור Eventarc נשמרים ללא קשר לפעילות ולא פוקע תוקפם. הוראות לשינוי משך הזמן של חוסר הפעילות מופיעות במאמר בנושא ניהול מינויים.
דוגמה:
gcloud eventarc triggers create helloworld-trigger \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_ID} \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
הפקודה הזו יוצרת טריגר בשם helloworld-trigger לנושא Pub/Sub שמזוהה על ידי projects/${PROJECT_ID}/topics/${TOPIC_ID}.
הודעות Pub/Sub (נושא חדש)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
TRIGGER: המזהה של הטריגר או מזהה מוגדר במלואו-
LOCATION: המיקום של טריגר Eventarc. אפשר גם להגדיר את המאפייןeventarc/location, למשלgcloud config set eventarc/location us-central1.טריגרים של Pub/Sub ל-Eventarc זמינים רק במיקומים של אזור יחיד, ואי אפשר ליצור טריגר גלובלי של Eventarc. מידע נוסף זמין במאמר בנושא מיקומים של Eventarc.
-
DESTINATION_GKE_CLUSTER: השם של אשכול GKE שבו פועל שירות GKE היעד שמקבל אירועים. -
DESTINATION_GKE_LOCATION: (אופציונלי) האזור של Compute Engine של אשכול GKE שבו פועל שירות היעד של GKE. אם לא מציינים זאת, ההנחה היא שהאשכול הוא אשכול אזורי שנמצא באותו אזור כמו הטריגר. -
DESTINATION_GKE_NAMESPACE: (אופציונלי) מרחב השמות שבו פועל שירות היעד של GKE. אם לא מציינים מרחב שמות, המערכת משתמשת במרחב השמותdefault. -
DESTINATION_GKE_SERVICE: השם של שירות GKE שמקבל את האירועים להפעלת הטריגר. השירות יכול להיות בכל אחד מהמיקומים שנתמכים ב-GKE, והוא לא צריך להיות באותו מיקום כמו הטריגר. עם זאת, השירות צריך להיות באותו פרויקט כמו הטריגר והוא יקבל אירועים כבקשות HTTP POST שנשלחות לנתיב כתובת ה-URL הבסיסית שלו (/), בכל פעם שהאירוע נוצר. -
DESTINATION_GKE_PATH: (אופציונלי) הנתיב היחסי שאתם מציינים בשירות GKE של היעד שאליו יישלחו האירועים של הטריגר. לדוגמה:/,/route,route,route/subroute. -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמנוהל על ידי המשתמש. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
הערות:
- חובה להשתמש בדגל
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"ואי אפשר לשנות אותו. כדי להגדיר סוג אירוע אחר, צריך ליצור טריגר חדש. - לכל טריגר יכולים להיות כמה מסנני אירועים, שמופרדים בפסיקים בדגל אחד
--event-filters=[ATTRIBUTE=VALUE,...] או שאפשר לחזור על הדגל כדי להוסיף עוד מסננים. רק אירועים שתואמים לכל המסננים נשלחים ליעד. אין תמיכה בתווים כלליים לחיפוש ובביטויים רגולריים. - כברירת מחדל, מינויים ל-Pub/Sub שנוצרו עבור Eventarc נשמרים ללא קשר לפעילות ולא פוקע תוקפם. הוראות לשינוי משך הזמן של חוסר הפעילות מופיעות במאמר בנושא ניהול מינויים.
דוגמה:
gcloud eventarc triggers create helloworld-trigger \
--location=us-central1 \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
הפעולה הזו יוצרת נושא Pub/Sub חדש וטריגר בשם helloworld-trigger.
Terraform
אפשר ליצור טריגר ליעד GKE באמצעות Terraform. פרטים נוספים זמינים במאמר יצירת טריגר באמצעות Terraform.
הצגת טריגר
אפשר לאשר את יצירת הטריגר באמצעות רשימת הטריגרים של Eventarc ב-Google Cloud CLI או במסוף Google Cloud .
המסוף
נכנסים לדף Triggers ב-Eventarc במסוף Google Cloud .
בדף הזה מפורטים הטריגרים בכל המיקומים, כולל פרטים כמו שמות, אזורים, ספקי אירועים, יעדים ועוד.
כדי לסנן את הטריגרים:
- לוחצים על מסנן או על השדה הפעלת מסנן.
- ברשימה Properties, בוחרים אפשרות לסינון הטריגרים.
אפשר לבחור נכס אחד או להשתמש באופרטור הלוגי
ORכדי להוסיף עוד נכסים.כדי למיין את הטריגרים, לוחצים על מיון לצד כותרת של עמודה נתמכת.
gcloud
מריצים את הפקודה הבאה כדי להציג את הטריגרים:
gcloud eventarc triggers list --location=-
הפקודה הזו מציגה רשימה של הטריגרים בכל המיקומים, וכוללת פרטים כמו שמות, סוגים, יעדים וסטטוסים.