הגדרת התראות Pub/Sub

אתם יכולים לקבל התראות מ-Pub/Sub על שינויים במאגר Docker. ההתראות חלות על כל קובץ אימג' של קונטיינר שמאוחסן במאגר, כולל תרשימי Helm 3 שנארזו בפורמט OCI.

ב-Pub/Sub מתפרסמות הודעות לגבי המאגרים שלכם במשאבים עם שמות שנקראים נושאים. אפליקציות שנרשמות לנושאים ב-Pub/Sub מקבלות את ההודעות האלה והתראות כשמצב המאגר משתנה.

‫Artifact Registry מפרסם הודעות על השינויים הבאים:

  • תמונות שהועלו
  • תגים חדשים שנוספו לתמונות
  • מחיקת תמונה

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

למידע על הגדרת התראות של Artifact Analysis לגבי פעילות כמו תוצאות חדשות של סריקת פגיעויות, אפשר לעיין במסמכי התיעוד של Artifact Analysis.

סקירה כללית

‫Artifact Registry מפרסם הודעות על שינויים במאגרי מידע בנושא בשם gcr.

כדי לקבל התראות, צריך:

  1. יוצרים נושא בשם gcr בפרויקט עם Artifact Registry.
  2. יוצרים מינוי לנושא.
  3. מגדירים את האפליקציה של המנוי לקבלת הודעות על שינויים במאגר.
  4. אם צריך, מגדירים הרשאות כדי לשלוט בגישה לנושא ולמינוי.

יצירת הנושא ב-Artifact Registry

כדי ליצור את נושא gcr עם מפתחות הצפנה שבבעלות ובניהול של Google :

המסוף

  1. נכנסים לדף הנושאים של Pub/Sub במסוף Google Cloud .

    מעבר לדף הנושאים של Pub/Sub

  2. לוחצים על יצירת נושא.

  3. מזינים את מזהה הנושא gcr.

  4. לוחצים על יצירת נושא.

gcloud

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

    gcloud pubsub topics create gcr --project=PROJECT-ID

מחליפים את PROJECT-ID במזהה הפרויקט. Google Cloud אם לא מציינים את הדגל --project, הפקודה משתמשת בפרויקט הנוכחי.

מידע נוסף על הפקודה gcloud pubsub topics זמין במסמכי התיעוד של topics.

כדי ליצור את הנושא gcr עם הצפנת CMEK, אפשר לעיין בהוראות להצפנת נושאים ב-Pub/Sub.

אחרי שיוצרים את נושא gcr או מוודאים שהוא קיים, אפשר ליצור מינוי לנושא.

יצירת מינוי

אחרי שיוצרים נושא לשינויים במאגר, אפשר להגדיר מינוי לנושא הזה באמצעות שליחת נתונים (push) או משיכת נתונים (pull). מומלץ להשתמש בשיטת pull delivery כי מערכות CI/CD יכולות ליצור שינויים רבים בארטיפקטים מאוחסנים, ושיטת pull delivery יעילה יותר עבור נפח גדול של הודעות.

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

המסוף

  1. נכנסים לדף הנושאים של Pub/Sub במסוף Google Cloud .

    מעבר לדף הנושאים של Pub/Sub

  2. לוחצים על הנושא של הפרויקט.

  3. לוחצים על יצירת מינוי.

  4. מזינים שם מינוי:

    projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
    

    משאירים את ההגדרה סוג הצגת מודעות כשליפה.

  5. לוחצים על יצירה.

gcloud

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

gcloud pubsub subscriptions create SUBSCRIPTION-NAME --topic=gcr

מחליפים את SUBSCRIPTION-NAME בשם של המינוי

מידע נוסף על הפקודה gcloud pubsub subscriptions זמין במסמכי התיעוד של subscriptions.

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

הגדרת אפליקציית המנויים

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

כשמשתמש במאגר דוחף או מוחק תמונה, השלבים הבאים מתרחשים:

  1. חשבון השירות של Artifact Registry מפרסם את השינוי בנושא gcr. חשבון השירות הוא service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, כאשר PROJECT-NUMBER הוא Google Cloud מספר הפרויקט. לחשבון השירות של Artifact Registry יש את ההרשאה pubsub.topics.publish כברירת מחדל, כדי שהוא יוכל לפרסם שינויים בנושא.

    אם אדמין ביטל את ההרשאות pubsub.topics.publish של חשבון השירות של Artifact Registry, ‏ Artifact Registry ינסה לפרסם את ההודעה בתור משתמש המאגר. במצב כזה, לחשבון של המשתמש במאגר צריך להיות הרשאת pubsub.topics.publish כדי שההודעה תפורסם בהצלחה.

  2. מערכת Pub/Sub מעבירה את ההודעה מהנושא למינוי שלכם.

  3. כשיישום המינוי שולח בקשה להודעות, הוא מושך את ההודעה החדשה מהמינוי.

    לזהות ששולפת הודעות בשם המנוי צריכות להיות הרשאות גישה למינוי. אפשר להשתמש בתפקיד Pub/Sub Subscriber כדי להעניק את ההרשאה הזו.

מידע על הגדרת נמען לקבלת הודעות ממינוי באמצעות שליחת בקשת משיכה זמין במאמר קבלת הודעות באמצעות משיכה.

הגדרת הרשאות

אתם יכולים להשתמש בהרשאות Pub/Sub כדי לקבוע את הגישה לנושאים ולמינויים שלכם.

מידע נוסף על הרשאות ב-Pub/Sub ועל מתן גישה לנושאים ולמינויים זמין במאמר בקרת גישה ב-Pub/Sub.

דוגמאות להתראות

ההתראות ב-Pub/Sub נשלחות כמחרוזות בפורמט JSON. בדוגמאות הבאות מוסבר מה קורה כשמקבלים התראות מ-Artifact Registry דרך Pub/Sub.

כשדוחפים תמונה ל-Artifact Registry, מטען הייעודי (payload) של ההתראה יכול להיראות כך:

{
  "action":"INSERT",
  "digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}

כשדוחפים תג תמונה חדש ל-Artifact Registry, מטען הייעודי (payload) של ההתראה נראה כך:

{
  "action":"INSERT",
  "digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
  "tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

ההודעה מזהה את התמונה הרלוונטית באמצעות מפתח digest או tag.

כשמוחקים תג תמונה מ-Artifact Registry, מטען הייעודי (payload) של ההתראה עשוי להיראות כך:

{
  "action":"DELETE",
  "tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

ההודעה יכולה להכיל את הערכים DELETE או INSERT בתור ערכים למפתח action.

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