העברה של אירועי אימות ב-Firebase ל-GKE

טריגר ב-Eventarc מציין שיש לכם עניין באירוע מסוים או בקבוצת אירועים. אתם יכולים להגדיר ניתוב אירועים על ידי ציון מסננים לטריגר, כולל מקור האירוע ושירות היעד של Google Kubernetes Engine ‏ (GKE) שפועל באשכול GKE. שימו לב: יעדים יכולים לכלול רק שירותים שפועלים באשכולות GKE (ציבוריים או פרטיים) עם נקודות קצה ציבוריות. כדי לטרגט שירותים באשכולות GKE עם נקודות קצה פרטיות, צריך לנתב אירועים אל נקודות קצה פנימיות של HTTP.

‫Eventarc מעביר אירועים למקבל האירועים בפורמט CloudEvents באמצעות בקשת HTTP.

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

לפני שמתחילים

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

ארכיטקטורה של אירועים ב-Eventarc שמכוונים ליעדים ב-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 שהוגדר במיוחד) מבצע את הפעולות הבאות:

  1. הוא משתמש ב-Pub/Sub API כדי לפתוח חיבור StreamingPull ל-trigger transporter (נושא ומינוי ב-Pub/Sub) ומקבל אירועים כשהם זמינים.

  2. הוא משנה את האירועים לפורמט CloudEvents הנכון, מקודד אותם ומעביר אותם כבקשת HTTP POST לשירות היעד ב-GKE.

לסוכן השירות של Eventarc צריכה להיות הרשאה להפעיל ולעדכן באופן קבוע את מופע gke-forwarder. צריך להעניק את ההרשאה הזו פעם אחת לכל פרויקט. פרטים נוספים זמינים במאמר הזה בקטע הפעלת יעדים של GKE.

פתרון בעיות

כדי לפתור בעיות שעלולות לקרות כשמשתמשים ב-Eventarc ל-GKE, אפשר לעיין במאמר פתרון בעיות ב-Eventarc ל-Google Kubernetes Engine ‏ (GKE).

הכנה ליצירת טריגר

לכל טריגר שמטרגט שירות GKE,‏ Eventarc יוצר רכיב להעברת אירועים. כדי להתקין את הרכיב ולנהל משאבים באשכול GKE, צריך לתת הרשאות ל-Eventarc. לפני שיוצרים טריגר Eventarc ליעדי GKE, צריך לבצע את המשימות הבאות.

המסוף

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    כניסה לדף לבחירת הפרויקט

  2. מפעילים את ממשקי ה-API של Eventarc,‏ Eventarc Publishing,‏ Google Kubernetes Engine ומנהל המשאבים.

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

  3. אם רלוונטי, מפעילים את ממשק ה-API שקשור לאירועים הישירים. לדוגמה, כדי להשתמש ב Firebase Authentication אירועים, צריך להפעיל את Identity Toolkit API.

  4. אם עדיין אין לכם חשבון שירות, אתם צריכים ליצור חשבון שירות בניהול המשתמש, ואז להקצות לו את התפקידים וההרשאות הנדרשים כדי ש-Eventarc יוכל לנהל אירועים בשירות היעד.

    1. במסוף Google Cloud , נכנסים לדף יצירת חשבון שירות.

      כניסה לדף Create service account

    2. בוחרים את הפרויקט הרצוי.

    3. כותבים שם בשדה Service account name. השדה Service account ID ימולא במסוף Google Cloud בהתאם לשם הזה.

      כותבים תיאור בשדה Service account description. לדוגמה, Service account for event trigger.

    4. לוחצים על Create and continue.

    5. כדי לספק גישה מתאימה, ברשימה Select a role בוחרים את תפקידי ניהול הזהויות והגישה (IAM) שרוצים להקצות לחשבון השירות. מידע נוסף זמין במאמר תפקידים והרשאות ליעדי GKE.

      כדי להוסיף עוד תפקידים, לוחצים על Add another role ומוסיפים אותם אחד אחרי השני.

    6. לוחצים על Continue.

    7. כדי לסיים את יצירת החשבון, לוחצים על סיום.

gcloud

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  2. מפעילים את ממשקי ה-API של Eventarc,‏ Eventarc Publishing,‏ Google Kubernetes Engine ומנהל המשאבים.

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        container.googleapis.com \
        cloudresourcemanager.googleapis.com

  3. אם רלוונטי, מפעילים את ממשק ה-API שקשור לאירועים הישירים. לדוגמה, כדי להפעיל Firebase Authentication אירועים, צריך להפעיל את האפשרות identitytoolkit.googleapis.com.

  4. אם עדיין אין לכם חשבון שירות שמנוהל על ידי המשתמש, אתם צריכים ליצור אותו ולהקצות לו את התפקידים וההרשאות הנדרשים כדי ש-Eventarc יוכל לנהל אירועים ביעד GKE.

    1. יוצרים את חשבון השירות:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      מחליפים את SERVICE_ACCOUNT_NAME בשם של חשבון השירות. הוא צריך להיות באורך שבין 6 ל-30 תווים, והוא יכול לכלול תווים אלפאנומריים ומקפים. אחרי שיוצרים חשבון שירות, אי אפשר לשנות את השם שלו.

    2. מעניקים את התפקידים או ההרשאות הנדרשים לניהול זהויות והרשאות גישה (IAM). מידע נוסף זמין במאמר תפקידים והרשאות ליעדי GKE.

הפעלת יעדים ב-GKE

כדי לאפשר ל-Eventarc לנהל משאבים באשכול GKE, צריך להפעיל יעדי GKE ולקשר את סוכן השירות של Eventarc לתפקידים הנדרשים.

  1. מפעילים יעדי GKE ל-Eventarc:

    gcloud eventarc gke-destinations init
  2. בהנחיה לקשירת התפקידים הנדרשים, מזינים y.

    התפקידים הבאים מקושרים:

    • roles/compute.viewer
    • roles/container.developer
    • roles/iam.serviceAccountAdmin

יצירת טריגר

אפשר ליצור טריגר Eventarc באמצעות Google Cloud CLI או דרך מסוף Google Cloud .

המסוף

  1. נכנסים לדף Triggers ב-Eventarc במסוף Google Cloud .

    כניסה לדף Triggers

  2. לוחצים על Create trigger (יצירת ביטוי להפעלה).
  3. מקלידים Trigger name.

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

  4. בשדה Trigger type, בוחרים באפשרות Google sources.
  5. ברשימה Event provider בוחרים באפשרות Firebase Authentication.

    שימו לב: יכול להיות שבשם ספק האירועים שמופיע בGoogle Cloud מסמכי התיעוד המשויכים לא מופיעה התחילית Cloud או Google Cloud. לדוגמה, במסוף, Memorystore for Redis נקרא Google Cloud Memorystore for Redis.

  6. ברשימה Event type (סוג האירוע), בוחרים סוג אירוע מתוך האירועים Direct (ישירים).
  7. כדי לציין את הקידוד של מטען הייעודי (payload) של האירוע, ברשימה Event data content type (סוג התוכן של נתוני האירוע), בוחרים באפשרות application/json או באפשרות application/protobuf.

    שימו לב שמטען ייעודי (payload) של אירוע בפורמט JSON גדול יותר ממטען ייעודי בפורמט Protobuf. הדבר הזה עשוי להשפיע על המהימנות, בהתאם ליעד של האירוע ולמגבלות שלו לגבי גודל האירוע. מידע נוסף זמין במאמר בנושא בעיות מוכרות.

  8. ברשימה Region, בוחרים באפשרות global (Global).

    מידע נוסף זמין במאמר בנושא מיקומי Eventarc.

  9. אופציונלי: אפשר לסנן אירועים לפי מזהה דייר ספציפי ב-Identity Platform על ידי ציון ערך מאפיין tenantid.
  10. בוחרים את חשבון השירות שיפעיל את השירות או את תהליך העבודה.

    אפשר גם ליצור חשבון שירות חדש.

    כאן מציינים את כתובת האימייל בחשבון השירות של ניהול הזהויות והרשאות הגישה (IAM) שמשויך לטריגר, ושקודם לכן הענקתם לו תפקידים ספציפיים שנדרשים על ידי Eventarc.

  11. ברשימה Event destination בוחרים באפשרות Kubernetes Engine.
  12. בוחרים שירות.

    זהו שם השירות שמקבל את האירועים להפעלת הטריגר. השירות צריך להיות באותו פרויקט כמו הטריגר, והוא יקבל אירועים כבקשות HTTP POST שנשלחות לנתיב של כתובת ה-URL הבסיסית שלו (/), בכל פעם שהאירוע נוצר.

  13. אפשר גם לציין את נתיב כתובת ה-URL של השירות שאליו רוצים לשלוח את הבקשה הנכנסת.

    זהו הנתיב היחסי בשירות היעד שאליו יישלחו האירועים של הטריגר. לדוגמה: /, /route, route, route/subroute.

  14. אפשר גם ללחוץ על הוספת תווית . תוויות הן צמדי מפתח/ערך שעוזרים לכם לארגן אתGoogle Cloud המשאבים. מידע נוסף זמין במאמר מהן תוויות?
  15. לוחצים על יצירה.
  16. אחרי שיוצרים טריגר, אי אפשר לשנות את המסננים של מקור האירועים. במקום זאת, אפשר ליצור טריגר חדש ולמחוק את הטריגר הישן. מידע נוסף זמין במאמר בנושא ניהול טריגרים.

gcloud

כדי ליצור טריגר, מריצים gcloud eventarc triggers createפקודה עם דגלים נדרשים ואופציונליים.

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --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=EVENT_FILTER_TYPE" \
    --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

מחליפים את מה שכתוב בשדות הבאים:

  • TRIGGER: המזהה של הטריגר או מזהה מוגדר במלואו
  • ‫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.
  • ‫EVENT_FILTER_TYPE: המזהה של אירוע האימות ב-Firebase. יכול להיות אחד מהערכים הבאים:
    • ‫google.firebase.auth.user.v2.created: האירוע נשלח כשנוצר חשבון משתמש
    • ‫google.firebase.auth.user.v2.deleted: האירוע נשלח כשחשבון משתמש נמחק
  • ‫EVENT_DATA_CONTENT_TYPE: (אופציונלי) הקידוד של מטען הייעודי (payload) של האירוע. הערך יכול להיות application/json או application/protobuf. קידוד ברירת המחדל הוא application/json.

    שימו לב שמטען ייעודי (payload) של אירוע בפורמט JSON גדול יותר ממטען ייעודי בפורמט Protobuf. זה עלול להשפיע על המהימנות, בהתאם ליעד של האירוע ולמגבלות שלו על גודל האירוע. מידע נוסף זמין במאמר בעיות מוכרות.

  • ‫SERVICE_ACCOUNT_NAME: השם של חשבון השירות שמנוהל על ידי המשתמש.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

הערות:

  • הדגל --location חייב להיות global. מידע נוסף זמין במאמר בנושא מיקומי Eventarc.
  • אחרי שיוצרים טריגר, אי אפשר לשנות את סוג המסנן של האירועים. כדי להגדיר סוג אירוע אחר, צריך ליצור טריגר חדש ולמחוק את הטריגר הישן.
  • הדגל --service-account משמש לציון כתובת האימייל בחשבון השירות בניהול זהויות והרשאות גישה (IAM) שמשויך לטריגר.

דוגמה:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.auth.user.v2.created" \
    --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

הפקודה הזו יוצרת טריגר בשם helloworld-trigger לאירוע שמזוהה כ-google.firebase.auth.user.v2.created.

Terraform

אפשר ליצור טריגר ליעד GKE באמצעות Terraform. פרטים נוספים זמינים במאמר יצירת טריגר באמצעות Terraform.

הצגת טריגר

אפשר לאשר את יצירת הטריגר באמצעות רשימת הטריגרים של Eventarc ב-Google Cloud CLI או במסוף Google Cloud .

המסוף

  1. נכנסים לדף Triggers ב-Eventarc במסוף Google Cloud .

    כניסה לדף Triggers

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

  2. כדי לסנן את הטריגרים:

    1. לוחצים על מסנן או על השדה הפעלת מסנן.
    2. ברשימה Properties, בוחרים אפשרות לסינון הטריגרים.

    אפשר לבחור נכס אחד או להשתמש באופרטור הלוגי OR כדי להוסיף עוד נכסים.

  3. כדי למיין את הטריגרים, לוחצים על מיון לצד כותרת של עמודה נתמכת.

gcloud

מריצים את הפקודה הבאה כדי להציג את הטריגרים:

gcloud eventarc triggers list --location=-

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

המאמרים הבאים