הגדרה של מדיניות ניקוי

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

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות להחלה או להסרה של כללי מדיניות לניקוי, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Artifact Registry Administrator (אדמין של Artifact Registry) ‏(roles/artifactregistry.admin) בפרויקט של המאגר. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

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

  • artifactregistry.repositories.update
  • כדי למחוק ארטיפקטים שעומדים בקריטריונים של מדיניות ניקוי: artifactregistry.versions.delete

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

תפקיד ברירת המחדל של סוכן השירות של Artifact Registry כולל את ההרשאה artifactregistry.versions.delete, שנדרשת כדי למחוק תמונות שעומדות בקריטריונים של מדיניות ניקוי.

יצירת קובץ מדיניות

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

יצירת מדיניות מחיקה

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

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

console

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

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

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע Cleanup policies, בוחרים באפשרות Dry run כדי לבדוק את המדיניות החדשה לפני שמתחייבים למחיקת ארטיפקטים. מידע נוסף על הצגת תוצאות הבדיקה זמין במאמר בנושא הרצה יבשה.

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

  4. לוחצים על הוספת מדיניות ניקוי ומוסיפים את הפרטים הבאים:

    • שם: נותנים שם למדיניות הניקוי. השם חייב להיות ייחודי בתוך קבוצת כללי המדיניות שמחילים על מאגר.
    • סוג המדיניות: בוחרים באפשרות מחיקה מותנית.
    • מצב התג: מציין אם המדיניות צריכה לבדוק אם יש ארטיפקטים מתויגים או ארטיפקטים לא מתויגים. פריטי מידע מתויגים כשמבצעים פעולת push או pull של תמונה אל מאגר או ממנו. מידע נוסף על תגי Docker זמין במאמר מושגים בנושא קונטיינרים.

      • כל סטטוס של תג: המערכת מתעלמת מהסטטוס של התג ומתייחסת גם לארטיפקטים מתויגים וגם לארטיפקטים לא מתויגים.
      • מתויג: רלוונטי רק לארטיפקטים מתויגים.
      • Untagged (לא מתויג): רלוונטי רק לפריטי מידע שנוצרו בתהליך הפיתוח שלא מתויגים.

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

      מידע נוסף על מצב התג בהקשר של מדיניות ניקוי זמין במאמר בנושא TagState.

  5. אלה דרכים אופציונליות להגדרת מדיניות המחיקה:

    • Tag prefixes: רשימה מופרדת בפסיקים של קידומות תגים. לדוגמה, הקידומות test ו-staging יתאימו לתמונות עם התגים testenv ו-staging-1.5. כדי להשתמש בתחיליות של תגים, צריך להגדיר את tagState ל-TAGGED.
    • ‫Version prefixes: – רשימה מופרדת בפסיקים של קידומות של גרסאות ארטיפקטים. לדוגמה, v1, v2 יתאים לגרסאות v1.5, v2.0alpha ו-v10.2.
    • Package prefixes (קידומות של חבילות): רשימה של קידומות של שמות ארטיפקטים. כדי להזין כמה קידומות, לוחצים על Enter או על , בין הקידומות. לדוגמה, red, blue ייצור שתי קידומות, red ו-blue, ויתאים לשמות של ארטיפקטים red-team, redis ו-bluebird.
    • ‫Older than: הזמן המינימלי שעבר מאז שגרסת הארטיפקט נוצרה במאגר, שמוגדר כמשך זמן. לדוגמה, 30d הוא 30 יום. אפשר לציין משכי זמן בשניות, בדקות, בשעות או בימים על ידי הוספת s, m, h או d בהתאמה.
    • ‫Newer than (חדש יותר מ-): הזמן המקסימלי שחלף מאז שגרסת הארטיפקט נוצרה במאגר, שמוגדר כמשך זמן. לדוגמה, 30d הוא 30 יום.
  6. כדי להוסיף עוד מדיניות ניקוי, לוחצים על הוספה של מדיניות ניקוי.

  7. לוחצים על עדכון.

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

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

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

name
‫
בקטע הקוד של מדיניות המחיקה, DELETE_POLICY_NAME הוא שם המדיניות. השם חייב להיות ייחודי בתוך קבוצת המדיניות שאתם מחילים על מאגר.
action
במדיניות מחיקה, הערך הוא {"type": "Delete"}.
condition
מציינים תנאי אחד או יותר מהתנאים הבאים:
  • ‫tagState: TAG_STATUS מציין אם המדיניות צריכה לבדוק אם יש ארטיפקטים מתויגים או לא מתויגים. פריטי מידע מתויגים כשמבצעים פעולת push או pull של תמונה אל מאגר או ממנו. הערכים הנתמכים הם:

    • ‫tagged: רק לארטיפקטים מתויגים.
    • ‫untagged: רלוונטי רק לארטיפקטים לא מתויגים.
    • ‫any: מתעלם ממצב התג וחל על ארטיפקטים מתויגים ולא מתויגים.

    פורמטים שלא תומכים בתגים נחשבים כuntagged. אם במאגר מופעלות תגיות שאי אפשר לשנות, אי אפשר למחוק ארטיפקטים עם תגיות.

    מידע נוסף על תגי Docker זמין במאמר מושגים שקשורים לקונטיינרים.

  • ‫tagPrefixes: TAG_PREFIXES היא רשימה מופרדת בפסיקים של קידומות תגים. לדוגמה, "test", "staging" יתאים לתמונות עם התגים "testenv" ו-"staging-1.5". כדי להשתמש בתחיליות של תגים, צריך להגדיר את tagState ל-TAGGED.

  • ‫versionNamePrefixes: VERSION_PREFIXES היא רשימה מופרדת בפסיקים של קידומות של גרסאות ארטיפקטים. לדוגמה, "v1", "v2" יתאים לגרסאות "v1.5", "v2.0alpha" ו-"v10.2".

  • ‫packageNamePrefixes: PACKAGE_PREFIXES היא רשימה מופרדת בפסיקים של קידומות של שמות ארטיפקטים. לדוגמה, הביטוי "red", "blue" יתאים לשמות הפריטים "red-team", "redis" ו-"bluebird".

  • ‫olderThan: ‏OLDER_THAN_DURATION הוא הזמן המינימלי שחלף מאז שנוצרה גרסה של ארטיפקט במאגר, והוא מצוין כמשך זמן. לדוגמה, 30d הוא 30 יום. אפשר לציין משכי זמן בשניות, בדקות, בשעות או בימים על ידי הוספת s, m, h או d בהתאמה.

  • ‫newerThan: NEWER_THAN_DURATION הוא הזמן המקסימלי שחלף מאז שנוצרה גרסה של ארטיפקט במאגר, והוא מצוין כמשך זמן. לדוגמה, 30d הוא 30 יום.

ב-Artifact Registry מתבצעות הרצות ניסיון והרצות פעילות של מדיניות הניקוי באמצעות משימה ברקע שמופעלת מעת לעת. השינויים ייכנסו לתוקף תוך יום בערך.

יצירת מדיניות שמירה מותנית

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

console

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

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

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע Cleanup policies, בוחרים באפשרות Dry run כדי לבדוק את המדיניות החדשה לפני שמתחייבים למחיקת ארטיפקטים. כדי לראות את התוצאות של מדיניות השמירה, צריך להגדיר לפחות מדיניות מחיקה. מידע נוסף על צפייה בתוצאות הבדיקה זמין במאמר בנושא הרצה יבשה.

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

  4. לוחצים על הוספת מדיניות ניקוי ומוסיפים את הפרטים הבאים:

    • שם: נותנים שם למדיניות הניקוי. השם חייב להיות ייחודי בתוך קבוצת כללי המדיניות שמחילים על מאגר.
    • סוג המדיניות: בוחרים באפשרות שמירה מותנית.
    • מצב התיוג: מציין אם המדיניות צריכה לבדוק אם יש ארטיפקטים מתויגים או לא מתויגים. פריטי מידע מתויגים כשמבצעים פעולת push או pull של תמונה אל מאגר או ממנו. מידע נוסף על תגי Docker זמין במאמר מושגים בנושא קונטיינרים.

      • כל סטטוס של תג: המערכת מתעלמת מהסטטוס של התג ומתייחסת גם לארטיפקטים מתויגים וגם לארטיפקטים לא מתויגים.
      • מתויג: רלוונטי רק לארטיפקטים מתויגים.
      • Untagged (לא מתויג): רלוונטי רק לפריטי מידע שנוצרו בתהליך הפיתוח שלא מתויגים.

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

  5. אלה דרכים אופציונליות להגדיר את מדיניות השמירה:

    • Tag prefixes: רשימה מופרדת בפסיקים של קידומות תגים. לדוגמה, הקידומות test ו-staging יתאימו לתמונות עם התגים testenv ו-staging-1.5. כדי להשתמש בתחיליות של תגים, צריך להגדיר את tagState ל-TAGGED.
    • ‫Version prefixes: – רשימה מופרדת בפסיקים של קידומות של גרסאות ארטיפקטים. לדוגמה, v1, v2 יתאים לגרסאות v1.5, v2.0alpha ו-v10.2.
    • ‫Package prefixes (קידומות של חבילות): רשימה מופרדת בפסיקים של קידומות של שמות ארטיפקטים. לדוגמה, הביטוי red, blue יתאים לשמות הארטיפקטים red-team, redis ו-bluebird.
    • ‫Older than: הזמן המינימלי שעבר מאז שגרסת הארטיפקט נוצרה במאגר, שמוגדר כמשך זמן. לדוגמה, 30d הוא 30 יום. אפשר לציין משכי זמן בשניות, בדקות, בשעות או בימים על ידי הוספת s, m, h או d בהתאמה.
    • ‫Newer than (חדש יותר מ-): הזמן המקסימלי שחלף מאז שגרסת הארטיפקט נוצרה במאגר, שמוגדר כמשך זמן. לדוגמה, 30d הוא 30 יום.
  6. כדי להוסיף עוד מדיניות ניקוי, לוחצים על הוספה של מדיניות ניקוי.

  7. לוחצים על עדכון.

    מדיניות הניקוי חלה על המאגר.

JSON

הפורמט דומה לפורמט של מדיניות מחיקה. במדיניות שמירה, הערך של action הוא {"type": "Keep"}.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

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

  • KEEP_POLICY_NAME בשם של מדיניות הניקוי. השם חייב להיות ייחודי בתוך קבוצת כללי המדיניות שמחילים על מאגר.
  • ‫TAG_STATUS עם מצב התג, שמציין אם המדיניות צריכה לבדוק פריטי מידע מתויגים או פריטי מידע לא מתויגים. פריטי מידע מתויגים כשדוחפים או מושכים תמונה אל מאגר או ממאגר. מידע נוסף על תגי Docker זמין במאמר מושגים שקשורים לקונטיינרים.

    האפשרויות הן:

    • ‫tagged: רק לארטיפקטים מתויגים.
    • ‫untagged: רלוונטי רק לארטיפקטים לא מתויגים.
    • ‫any: חל על כל הגרסאות

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

  • ‫TAG_PREFIXES ברשימה מופרדת בפסיקים של קידומות תגים. לדוגמה, הקידומות test ו-staging יתאימו לתמונות עם התגים testenv ו-staging-1.5. כדי להשתמש בתחיליות של תגים, צריך להגדיר את tagState ל-TAGGED.

  • ‫VERSION_PREFIXES ברשימה מופרדת בפסיקים של קידומות של גרסאות ארטיפקטים. לדוגמה, v1, v2 יתאים לגרסאות v1.5, v2.0alpha ו-v10.2.

  • ‫PACKAGE_PREFIXES ברשימה מופרדת בפסיקים של קידומות של שמות ארטיפקטים. לדוגמה, הביטוי red, blue יתאים לשמות הארטיפקטים red-team, redis ו-bluebird.

  • ‫OLDER_THAN_DURATION עם הזמן המינימלי מאז שנוצרה הגרסה של ארטיפקט במאגר, שצוין כמשך זמן. לדוגמה, 30d הוא 30 יום. אפשר לציין משכי זמן בשניות, בדקות, בשעות או בימים על ידי הוספת s, m, h או d בהתאמה.
  • ‫NEWER_THAN_DURATION עם משך הזמן המקסימלי מאז שנוצרה הגרסה של ארטיפקט במאגר, שצוין כמשך זמן. לדוגמה, 30d הוא 30 יום.

ב-Artifact Registry מתבצעות הרצות ניסיון והרצות פעילות של מדיניות הניקוי באמצעות משימה ברקע שמופעלת מעת לעת. השינויים ייכנסו לתוקף תוך יום בערך.

יצירת מדיניות שמירה לגרסאות האחרונות

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

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

console

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

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

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע Cleanup policies, בוחרים באפשרות Dry run כדי לבדוק את המדיניות החדשה לפני שמתחייבים למחיקת ארטיפקטים. כדי לראות את התוצאות של מדיניות השמירה, צריך להגדיר לפחות מדיניות מחיקה. מידע נוסף על צפייה בתוצאות הבדיקה זמין במאמר בנושא הרצה יבשה.

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

  4. לוחצים על הוספת מדיניות ניקוי ומוסיפים את הפרטים הבאים:

    • שם: נותנים שם למדיניות הניקוי. השם חייב להיות ייחודי בתוך קבוצת כללי המדיניות שמחילים על מאגר.
    • סוג המדיניות: בוחרים באפשרות שמירת הגרסאות העדכניות ביותר.
  5. בשדה Keep count (שמירת מספר הגרסאות), מזינים את מספר הגרסאות של ארטיפקט שרוצים לשמור במאגר.

  6. אופציונלי: בוחרים באפשרות Package prefixes (קידומות של חבילות) כדי לציין קידומות של חבילות שאליהן רוצים להחיל את מדיניות השמירה. לדוגמה, הביטוי red, blue יתאים לשמות הפריטים red-team, redis ו-bluebird.

  7. כדי להוסיף עוד מדיניות ניקוי, לוחצים על הוספה של מדיניות ניקוי.

  8. לוחצים על עדכון.

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

JSON

הפורמט דומה לפורמט של מדיניות מחיקה. במדיניות שמירה, הערך של action הוא {"type": "Keep"}.

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

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

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

  • KEEP_POLICY_NAME בשם של מדיניות השמירה. השם חייב להיות ייחודי בתוך קבוצת המדיניות שמחילים על מאגר.
  • ‫PACKAGE_PREFIXES עם קידומות החבילה האופציונליות שאליהן רוצים להחיל את מדיניות השמירה. לדוגמה, הביטוי red, blue יתאים לשמות הפריטים red-team, redis ו-bluebird.
  • ‫MINIMUM_NUMBER עם מספר הגרסאות של ארטיפקט שרוצים לשמור במאגר.

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

ב-Artifact Registry מתבצעות הרצות ניסיון והרצות פעילות של מדיניות הניקוי באמצעות משימה ברקע שמופעלת מעת לעת. השינויים ייכנסו לתוקף תוך יום בערך.

קובץ מדיניות לדוגמה

דוגמה לקובץ מדיניות עם מדיניות מחיקה אחת ושתי מדיניות שמירה.

  • בהתאם למדיניות delete-prerelease, גרסאות של ארטיפקטים יוסרו 30 ימים אחרי ההעלאה אם הארטיפקט מתחיל במחרוזת alpha או v0.
  • המדיניות keep-tagged-release שומרת ארטיפקטים שתויגו עם הקידומת release וששם הקובץ שלהם מתחיל ב-webapp או ב-mobile.
  • המדיניות keep-minimum-versions שומרת את חמש הגרסאות האחרונות של ארטיפקטים ששם הקובץ שלהם מתחיל ב-webapp,‏ mobile או sandbox.
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

בדיקת המדיניות באמצעות הרצת בדיקה

כדי לבדוק את מדיניות הניקוי, אפשר להגדיר את מדיניות הניקוי להרצה יבשה במסוף, או להריץ את הפקודה gcloud artifacts set-cleanup-policies עם הדגל --dry-run.

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

console

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע Cleanup policies (מדיניות ניקוי), בוחרים באפשרות Dry run (הרצה יבשה).

  4. לוחצים על הוספת מדיניות ניקוי ומגדירים את האפשרויות של המדיניות מחיקה מותנית, שמירה מותנית או שמירת הגרסאות האחרונות.

  5. לוחצים על עדכון.

כשמדיניות מחיקה מובילה לפעולה BatchDeleteVersions, הפרמטר validateOnly מקבל את הערך "true".

ב-Artifact Registry מתבצעות הרצות ניסיון והרצות פעילות של מדיניות הניקוי באמצעות משימה ברקע שמופעלת מעת לעת. השינויים ייכנסו לתוקף תוך יום בערך.

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

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

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent="projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY/packages/-" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

הפלט אמור להיראות כך:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

gcloud

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

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

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

  • REPOSITORY בשם המאגר.
  • PROJECT_ID במזהה הפרויקט. Google Cloud
  • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫

כשמדיניות מחיקה מובילה לפעולה BatchDeleteVersions, הפרמטר validateOnly מקבל את הערך "true".

ב-Artifact Registry מתבצעות הרצות ניסיון והרצות פעילות של מדיניות הניקוי באמצעות משימה ברקע שמופעלת מעת לעת. השינויים ייכנסו לתוקף תוך יום בערך.

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

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

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent="projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY/packages/-" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

הפלט אמור להיראות כך:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

החלת מדיניות על מאגר

כדי להשתמש במדיניות הניקוי שהוגדרה בקובץ JSON מקומי, צריך להחיל אותה על מאגרים שבהם רוצים ש-Artifact Registry יטפל במחיקה אוטומטית של גרסאות ארטיפקטים באמצעות ה-CLI של gcloud.

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

אפשר להחיל מדיניות ניקוי רק על מאגרי מידע רגילים. אי אפשר להחיל מדיניות ניקוי על:

  • פרויקט Google Cloud .

console

כדי להחיל מדיניות ניקוי:

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע Cleanup policies (מדיניות ניקוי), בוחרים באפשרות Delete artifacts (מחיקת ארטיפקטים).

    ‫Artifact Registry מוחק ושומר ארטיפקטים שתואמים למדיניות שלכם באמצעות משימת רקע שמופעלת מעת לעת. השינויים אמורים להיכנס לתוקף תוך יום בערך.

gcloud

כדי להחיל מדיניות ניקוי, מריצים את הפקודה הבאה בספרייה עם קובץ מדיניות הניקוי.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

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

  • REPOSITORY בשם המאגר.
  • PROJECT_ID במזהה הפרויקט. Google Cloud
  • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫
  • ‫POLICY_FILE הוא שם הקובץ עם מדיניות הניקוי.

הדגל --no-dry-run משבית את הפונקציונליות של הרצת בדיקה למאגר.

לדוגמה, הפקודה הבאה מחילה את המדיניות ב-policy.json על המאגר my-repo באזור us-west1 בפרויקט my-project.

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-west1 \
    --policy=policy.json

מערכת Artifact Registry מוחקת ושומרת ארטיפקטים שתואמים למדיניות שלכם באמצעות משימת רקע שמופעלת מעת לעת. השינויים אמורים להיכנס לתוקף תוך יום בערך.

עדכון מדיניות

console

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע מדיניות ניקוי, לוחצים על שם המדיניות שרוצים לשנות.

  4. עורכים את מדיניות הניקוי ולוחצים על עדכון.

    מדיניות הניקוי חלה על המאגר.

gcloud

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

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

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

  • REPOSITORY בשם המאגר.
  • PROJECT_ID במזהה הפרויקט. Google Cloud
  • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫
  • ‫POLICY_FILE הוא שם הקובץ עם מדיניות הניקוי.

הדגל --no-dry-run משבית את הפונקציונליות של הרצת בדיקה למאגר.

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

אפשר לראות את מדיניות הניקוי שמשויכת למאגר.

console

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר שרוצים להציג.

  3. בקטע פרטי המאגר, לוחצים על עוד אפשרויות.

    שמות מדיניות הניקוי מוצגים.

  4. כדי להציג או לערוך את הפרטים של מדיניות הניקוי של המאגר, לוחצים על עריכת המאגר.

    פרטי מדיניות הניקוי הקיימת מפורטים בקטע מדיניות ניקוי.

gcloud

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

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

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

  • REPOSITORY בשם המאגר.
  • PROJECT_ID במזהה הפרויקט. Google Cloud
  • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫

הסרת מדיניות ממאגר

מסירים מדיניות ניקוי ממאגר כשלא רוצים יותר ש-Artifact Registry ימחק באופן אוטומטי גרסאות של ארטיפקטים.

console

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. בקטע Cleanup policies (מדיניות ניקוי), מעבירים את העכבר מעל שם המדיניות שרוצים למחוק.

  4. לוחצים על סמל המחיקה.

  5. לוחצים על עדכון.

    מדיניות הניקוי נמחקת.

gcloud

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

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

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

  • ‫REPOSITORY הוא שם המאגר.
  • ‫PROJECT_ID הוא מזהה הפרויקט Google Cloud שלכם.
  • ‫ ‫LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. ‫
  • ‫POLICY_NAMES היא רשימה מופרדת בפסיקים של שמות המדיניות שרוצים להסיר.

לדוגמה, הפקודה הבאה מסירה מדיניות בשם delete-test מהמאגר my-repo באזור us-west1 בפרויקט my-project:

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-west1

רשומות ביומן הביקורת של כללי מדיניות לניקוי

כדי לראות את הרשומות ביומן של מדיניות הניקוי ב-Cloud Logging, צריך להפעיל את הרישום ביומן DATA_WRITE.

כשמגדירים מדיניות ניקוי במאגר, הפעולה נרשמת ביומן כעדכון של המאגר (פעולה UpdateRepository).

כש-Artifact Registry מוחק גרסה של ארטיפקט, הוא רושם את האירוע ביומני בקרת הרשאות הגישה לנתונים של Cloud Logging. הרשומות ביומן מראות שחשבון השירות של Artifact Registry ביצע את המחיקה. מזהה חשבון השירות של Artifact Registry הוא בפורמט service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com