השקת גרסה

במאמר הזה מוסבר איך להשיק גרסה באמצעות App Lifecycle Manager.

הכלי App Lifecycle Manager מאפשר לבצע עדכונים בכמה יחידות שהוקצו באמצעות השקות. ההשקות מטרגטות יחידות על סמך UnitKind, ואפשר גם להחיל מסננים (unit_filter) כדי לטרגט קבוצת משנה ספציפית של יחידות באמצעות Google Cloud CLI . כך אפשר לנהל את העדכונים בכל בסיס הפריסה. אפשר לבצע חזרה לגרסה קודמת על ידי שדרוג יחידות לגרסה קודמת.

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

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

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

יצירת גרסה

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

המסוף

  1. עוברים אל App Lifecycle Manager.

    מעבר אל App Lifecycle Manager

  2. לוחצים על הפצות.

  3. בדף פריטי תוכן, לוחצים על יצירה.

  4. בדף Create Release:

    1. בתיבה שם הגרסה, מזינים שם ייחודי לגרסה.
    2. בתיבה Unit kind (סוג היחידה), בוחרים את סוג היחידה שאליה משויכת הגרסה הזו.
    3. בקטע אפשר לשדרג רק מגרסה (אופציונלי), אפשר לבחור גרסאות שמהן אפשר לשדרג את היחידות לגרסה הזו. כך תוכלו לשלוט בנתיבי השדרוג.
    4. בשלבים Create Blueprint ו-Store Blueprint, בוחרים או יוצרים את התוכנית. במאמרי העזרה בנושא תוכניות אב מפורט מידע נוסף על אפשרויות ליצירת תוכניות אב.
    5. בקטע Variables (optional)‎ אפשר להגדיר משתני קלט לגרסה הזו. מידע נוסף על הגדרת משתנים זמין במאמרי העזרה בנושא משתנים.

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

  6. יצרתם גרסה. אפשר לראות את פרטי פריט התוכן בדף פרטי פריט התוכן. תוכלו להפנות לגרסה הזו כשתיצרו השקה.

gcloud

כדי ליצור מהדורה באמצעות Google Cloud מסוף:

gcloud beta saas-runtime releases create RELEASE_NAME --blueprint-package=BLUEPRINT_PACKAGE_URI --unit-kind=UNIT_KIND [--location=LOCATION] [--labels=[KEY=VALUE,...]] [--upgradeable-from-releases=[RELEASE_NAME,...]] [--input-variable-defaults=[variable=VARIABLE,value=VALUE,type=TYPE,...]]

מחליפים את:

  • RELEASE_NAME: המזהה של הגרסה שרוצים ליצור. השם הזה יהיה חלק משם המשאב המלא של הפריט.
  • BLUEPRINT_PACKAGE_URI: ה-URI של חבילת התוכנית שרוצים להשתמש בה לגרסה הזו. תוכניות הבנייה הן תמונות OCI שמתארחות ב-Artifact Registry או במאגר OCI אחר.
    • חבילת התוכנית מכילה את הארטיפקטים שנדרשים להקצאת יחידה, וכוללת מטא-נתונים על המנוע שבו נעשה שימוש (Terraform), וגם את הגרסה.
    • אם לא מציינים את שם המארח ב-URI, ברירת המחדל היא הנתיב האזורי של Artifact Registry (למשל, us-east1-docker.pkg.dev).
    • מידע נוסף על יצירת תוכניות זמין במאמרי העזרה בנושא תוכניות.
  • UNIT_KIND: המזהה או המזהה המוגדר במלואו של סוג היחידה שאליה מתייחסת הגרסה הזו. UNIT_KIND אי אפשר לשנות אחרי שיוצרים גרסה.
  • LOCATION: המיקום שבו רוצים ליצור את הגרסה. הדגל הזה מספק ערך ברירת מחדל למיקום ההפצה אם לא צוין נתיב URI מלא. ברירת המחדל היא המיקום שהוגדר בסביבת Google Cloud CLI.
  • LABELS: (אופציונלי) תוויות שרוצים להוסיף לגרסה לצורך סיווג. תוויות הן צמדי מפתח/ערך.
    • המפתחות צריכים להתחיל באות קטנה ולהכיל רק מקפים, קווים תחתונים, אותיות קטנות ומספרים.
    • הערכים צריכים להכיל רק מקפים, קווים תחתונים, אותיות קטנות ומספרים.
    • לדוגמה: --labels=environment=staging,team=saas-runtime
  • UPGRADEABLE_FROM_RELEASES: (אופציונלי) רשימה מופרדת בפסיקים של שמות פריטים שבה מצוין אילו פריטים קיימים אפשר לעדכן באמצעות הפריט החדש שיוצרים.
    • אם לא מציינים ערך לדגל הזה, אין מגבלות על הגרסאות שאפשר לעדכן לגרסה הזו.
    • אם תספקו את הערך הזה, בקשות לעדכון יחידות בגרסה הזו יאכפו את המגבלה הזו.
  • INPUT_VARIABLE_DEFAULTS: (אופציונלי) ערכי ברירת מחדל למשתני קלט שנדרשים על ידי התוכנית.
    • אפשר לציין ערכי ברירת מחדל למשתנים בשורה או באמצעות הפניה לקובץ YAML או JSON.
    • אפשר לשנות את המשתנים שמוגדרים כאן במהלך יצירת ההשקה.

מידע נוסף על הגדרת משתנים זמין במאמרי העזרה בנושא משתנים. מידע נוסף על מהדורות זמין במאמר Release בנושא Google Cloud CLI.

יצירת סוג השקה

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

המסוף

  1. עוברים אל App Lifecycle Manager.

    מעבר אל App Lifecycle Manager

  2. לוחצים על סוגי השקה.

  3. בדף Rollout Kinds (סוגי השקה), לוחצים על Create (יצירה).

  4. בדף Create a rollout kind:

    1. בתיבה Rollout kind name (שם סוג ההשקה), מזינים שם לסוג ההשקה.
    2. בתיבה Unit kind (סוג היחידה), בוחרים את סוג היחידה שמתאר את הסוג של היחידה שרוצים להשיק בה את הגרסה.
    3. בתפריט הנפתח אסטרטגיית השקה, בוחרים את האסטרטגיה שרוצים להשתמש בה כדי להפיץ את הגרסה ליחידות:

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

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

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

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

gcloud

כדי ליצור סוג של השקה באמצעות Google Cloud console:

  gcloud beta saas-runtime rollout-kinds create ROLLOUT_KIND_NAME --unit-kind=UNIT_KIND --location=LOCATION --rollout_strategy=ROLLOUT_STRATEGY --error_budget=ERROR_BUDGET --unit_filter=UNIT_FILTER --update_unit_kind_default=UPDATE_UNIT_KIND_DEFAULT

מחליפים את:

  • ROLLOUT_KIND_NAME: השם של סוג ההשקה.
  • UNIT_KIND: מגדיר את היחידות שרוצים להחיל עליהן את הגרסאות. הגרסאות חלות על כל היחידות מהסוג שנבחר.
  • LOCATION: המיקום שבו רוצים ליצור את סוג ההשקה.
  • ROLLOUT_STRATEGY: הגדרה של אסטרטגיית ההשקה לסוג ההשקה. הערכים האפשריים כוללים:

    • Google.Cloud.Simple.OneLocationAtATime: עדכון מיקום אחד בכל פעם (ללא תקופות הרצה). עד 5% מהיחידות מתעדכנות בו-זמנית.
    • Google.Cloud.Simple.AllAtOnce: הפריסה מתחילה בכל המיקומים בו-זמנית (אידיאלי לסביבות פיתוח ולתרחישי חירום).
    • Google.Cloud.Progressive.Gradual.v1: עדכונים מושקים בהדרגה באחוזים של קבוצות באופן אקספוננציאלי בכמה מיקומים (עם תקופות הרצה).
    • Google.Cloud.Progressive.SingleLocation.v1: עדכון יחידות באחוזים במנות עם זמני השהיה ממושכים כדי לזהות בעיות במיקום יחיד.

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

  • ERROR_BUDGET: ההגדרה של תקציב השגיאות. אם מספר היחידות שנכשלו חורג מהערך המקסימלי error_budget (מוגדר על ידי allowed_count, allowed_ratio * total_units), ההשקה תושהה. אם error_budget לא מוגדר, App Lifecycle Manager ינסה לעדכן את כל היחידות, ללא קשר למספר הכשלים שיתגלו.

  • UNIT_FILTER: מחרוזת סינון בפורמט CEL שמשמשת לסינון יחידות. המסנן יופעל כדי לקבוע את אוכלוסיית היחידות שעומדות בדרישות. המסנן הזה יכול רק לצמצם את היקף הפריסה. אי אפשר להרחיב את היקף הפריסה.

  • UPDATE_UNIT_KIND_DEFAULT: ההגדרה לעדכון סוג היחידה. כברירת מחדל, סוג היחידה יתעדכן בתחילת ההשקה. הערכים האפשריים כוללים:

    • UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED: לא צוינה אסטרטגיית עדכון של סוג יחידה.
    • UPDATE_UNIT_KIND_STRATEGY_ON_START: לעדכן את שיטת סוג היחידה בתחילת ההשקה.
    • UPDATE_UNIT_KIND_STRATEGY_NEVER: לעולם אל תעדכנו את האסטרטגיה של סוג היחידה.

מידע נוסף זמין במאמר RolloutKind בנושא Google Cloud CLI.

התכונה 'תקציב שגיאות'

App Lifecycle Manager כולל תכונה של תקציב שגיאות (ErrorBudget ב-RolloutKind) כאמצעי הגנה. ההגדרה הזו יכולה להשהות באופן אוטומטי את ההשקה אם מספר היחידות או אחוז היחידות שבהן העדכון נכשל (במהלך יישום התשתית, למשל) חורג מסף שהוגדר. כך אפשר לצמצם את ההשפעה של בעיות פוטנציאליות במהלך עדכון.

יצירת השקה

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

אחרי שיוצרים את ההשקה, App Lifecycle Manager מעדכן את היחידות בהתאם לאסטרטגיה שהוגדרה בסוג היחידה.

המסוף

  1. עוברים אל App Lifecycle Manager.

    מעבר אל App Lifecycle Manager

  2. לוחצים על השקות.

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

  4. בדף Create a rollout:

    1. בתיבה Rollout Kind (סוג ההפצה), בוחרים את סוג ההפצה שמפרט איך להפיץ את הגרסה ליחידות שצוינו.
    2. בתיבה Release, מציינים את הגרסה שרוצים לעדכן את היחידות איתה.
    3. בתיבה שם ההשקה, מזינים שם להשקה.
  5. לוחצים על יצירה.

  6. ההשקה נוצרה.

    בדף Global Rollout Detail, אפשר לעקוב אחרי פרטי ההשקה, כולל מצב ההשקה, התקדמות ההשקה (לפי מספר יחידות) וכשלים בהשקה.

gcloud

כדי ליצור השקה באמצעות מסוף Google Cloud :

  gcloud beta saas-runtime rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION

מחליפים את:

  • ROLLOUT_NAME: שם ההשקה.
  • ROLLOUT_KIND_NAME: מגדיר את סוג ההשקה שרוצים להשתמש בו כדי להחיל את הגרסאות על היחידות. הגרסאות מופצות לכל היחידות מהסוג שהוגדר בסוג ההשקה.
  • RELEASE_NAME: הגדרה של קובץ ההפעלה שרוצים לפרוס ביחידות.
  • LOCATION: המיקום שבו רוצים ליצור את ההשקה.

מידע נוסף זמין במאמר Rollout בנושא Google Cloud CLI.

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