במאמר הזה מוסבר איך להשיק גרסה באמצעות App Lifecycle Manager.
בעזרת App Lifecycle Manager אפשר לעדכן כמה יחידות שהוקצו באמצעות השקות. ההשקות מטרגטות יחידות על סמך UnitKind, ואפשר גם להחיל מסננים (unit_filter) כדי לטרגט קבוצת משנה ספציפית של יחידות באמצעות Google Cloud CLI . כך אפשר לנהל את העדכונים בכל בסיס הפריסה. כדי לחזור לגרסה קודמת, אפשר לשדרג יחידות לגרסה קודמת.
כדי לבצע פעולות ביחידה ספציפית אחת, משתמשים באמצעי הבקרה שזמינים בדף Unit details.
לפני שמתחילים
לפני שמעדכנים את המוצר באפליקציה, כדאי:
- מוודאים שהפעלתם את App Lifecycle Manager.
- מוודאים שיש לכם את הרשאות ה-IAM שנדרשות כדי ליצור חבילת אפליקציה.
- יוצרים הצעה לאפליקציה.
- יוצרים UnitKind.
- יצירה והקצאה של יחידה.
- מכינים תוכנית חדשה או משנים תוכנית קיימת ב-Terraform.
יצירת גרסה
כדי לעדכן את האפליקציה, צריך ליצור גרסה. גרסה מייצגת גרסה ספציפית של אפליקציית ה-SaaS, שמוגדרת על ידי חבילת שרטוט וההגדרות המשויכות אליה. בעצם, גרסה כוללת את העדכון ליחידות.
המסוף
עוברים אל App Lifecycle Manager.
לוחצים על מהדורות.
בדף פריטי תוכן, לוחצים על יצירה.
בדף יצירת גרסה:
- בתיבה שם הגרסה, מזינים שם ייחודי לגרסה.
- בתיבה Unit kind (סוג היחידה), בוחרים את סוג היחידה שאליה משויכת הגרסה הזו.
- בקטע ניתן לשדרוג רק מגרסה (אופציונלי), אפשר לבחור גרסאות שמהן אפשר לשדרג יחידות לגרסה הזו. כך תוכלו לשלוט בנתיבי השדרוג.
- בשלבים Create Blueprint (יצירת תוכנית) ו-Store Blueprint (שמירת תוכנית), בוחרים או יוצרים את התוכנית. במאמרי העזרה בנושא תוכניות מפורט מידע על האפשרויות ליצירת תוכניות.
בקטע Variables (optional), אפשר להגדיר משתני קלט לגרסה הזו. מידע נוסף על הגדרת משתנים זמין במסמכי התיעוד של המשתנים.
לוחצים על יצירה.
יצרתם גרסה. אפשר לראות את פרטי פריט התוכן בדף פרטי פריט תוכן. תוכלו להפנות לגרסה הזו כשתיצרו השקה.
gcloud
כדי ליצור גרסה באמצעות מסוף Google Cloud :
gcloud beta app-lifecycle-manager 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 אחר.- חבילת ה-blueprint מכילה את פריטי המידע שנדרשים כדי להקצות יחידה, וכוללת מטא-נתונים על המנוע שבו משתמשים (Terraform) ועל הגרסה.
- אם לא מציינים את שם המארח ב-URI, ברירת המחדל היא הנתיב האזורי של Artifact Registry (לדוגמה,
us-east1-docker.pkg.dev). - מידע נוסף על יצירת תוכניות זמין במסמכי התיעוד בנושא תוכניות.
-
UNIT_KIND: המזהה או המזהה המלא של סוג היחידה שאליה מתייחסת הגרסה הזו. UNIT_KIND אי אפשר לשנות אחרי שיוצרים גרסה. -
LOCATION: המיקום שבו רוצים ליצור את הגרסה. הדגל הזה מספק ערך חלופי למיקום הגרסה אם לא צוין נתיב ה-URI המלא. ברירת המחדל היא המיקום שהוגדר בסביבת Google Cloud CLI. -
LABELS: (אופציונלי) תוויות שיוחלו על הגרסה לצורך סיווג. תוויות הן צמדי מפתח/ערך.- המפתחות צריכים להתחיל באות קטנה ולכלול רק מקפים, קווים תחתונים, אותיות קטנות ומספרים.
- הערכים יכולים להכיל רק מקפים, קווים תחתונים, אותיות קטנות ומספרים.
- לדוגמה:
--labels=environment=staging,team=app-lifecycle-manager
-
UPGRADEABLE_FROM_RELEASES: (אופציונלי) רשימה מופרדת בפסיקים של שמות פריטים שבה מצוין אילו פריטים קיימים אפשר לעדכן באמצעות הפריט החדש שיוצרים.- אם משאירים את הדגל הזה ריק, אין הגבלות על הגרסאות שאפשר לעדכן לגרסה הזו.
- אם המגבלה הזו תוגדר, היא תיאכף בבקשות לעדכון יחידות בגרסה הזו.
-
INPUT_VARIABLE_DEFAULTS: (אופציונלי) ערכי ברירת מחדל למשתני קלט שנדרשים על ידי התוכנית.- אפשר לציין ערכי ברירת מחדל למשתנים בשורה או על ידי הפניה לקובץ YAML או JSON.
- אפשר לשנות את המשתנים שמוגדרים כאן במהלך יצירת ההשקה.
מידע נוסף על הגדרת משתנים זמין במאמרי העזרה בנושא משתנים.
מידע נוסף על גרסאות זמין במאמרי העזרה של Google Cloud CLI בנושא Release.
יצירת סוג השקה
כדי ליצור פריסה, צריך ליצור קודם סוג פריסה שמשמש כתבנית לאופן הפריסה של הגרסה ליחידות.
המסוף
עוברים אל App Lifecycle Manager.
לוחצים על סוגי השקות.
בדף Rollout Kinds (סוגי השקה), לוחצים על Create (יצירה).
בדף Create a rollout kind:
- בתיבה Rollout kind name, נותנים שם לסוג ההשקה.
- בתיבה Unit kind, בוחרים את סוג היחידה שרוצים להשיק בה את הגרסה.
בתפריט הנפתח אסטרטגיית השקה, בוחרים את האסטרטגיה שרוצים להשתמש בה כדי להפיץ את הגרסה ליחידות:
- מיקום אחד בכל פעם (פשוט): עדכון של מיקום אחד בכל פעם (בלי זמני טבילה). עדכון של עד 5% מהיחידות בו-זמנית.
- הפצה לכל המיקומים בבת אחת (פשוט): ההפצה מתחילה לכל המיקומים בו-זמנית (האפשרות הזו מתאימה לסביבות פיתוח ולתרחישי חירום).
- הדרגתי: העדכונים מושקים בהדרגה באצוות של אחוזים, באופן אקספוננציאלי בכמה מיקומים (עם זמני טבילה).
- מתקדם (מיקום יחיד): עדכון היחידות באחוזים, במנות עם זמני השהיה ממושכים כדי לזהות בעיות במיקום יחיד.
מידע נוסף על אסטרטגיות השקה זמין במאמר אסטרטגיות השקה.
לוחצים על יצירה.
יצרתם סוג של השקה. בדף Rollout Kind details אפשר לראות ולערוך את הפרמטרים של סוג ההשקה.
gcloud
כדי ליצור סוג של השקה באמצעות Google Cloud המסוף:
gcloud beta app-lifecycle-manager 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, מנהל מחזור החיים של האפליקציה ינסה לעדכן את כל היחידות, בלי קשר למספר הכשלים שיתרחשו.
UNIT_FILTER: מחרוזת סינון בפורמט CEL שמשמשת ליחידות. המסנן יופעל כדי לקבוע את אוכלוסיית היחידות שעומדות בדרישות. המסנן הזה יכול רק לצמצם את היקף ההשקה. אי אפשר להרחיב את היקף ההשקה.
UPDATE_UNIT_KIND_DEFAULT: ההגדרה לעדכון סוג היחידה. כברירת מחדל, סוג היחידה יעודכן בתחילת ההשקה. הערכים האפשריים כוללים:-
UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED: לא צוינה שיטת עדכון של סוג היחידה. -
UPDATE_UNIT_KIND_STRATEGY_ON_START: עדכון האסטרטגיה של סוג היחידה בתחילת ההשקה. -
UPDATE_UNIT_KIND_STRATEGY_NEVER: אף פעם אל תעדכנו את האסטרטגיה של סוג היחידה.
-
מידע נוסף זמין במאמרי העזרה של Google Cloud CLI בנושא RolloutKind.
תכונת תקציב השגיאות
App Lifecycle Manager כולל תכונה של תקציב שגיאות (ErrorBudget ב-RolloutKind) כאמצעי הגנה. ההגדרה הזו יכולה להשהות באופן אוטומטי את ההשקה אם מספר היחידות או אחוז היחידות שבהן העדכון נכשל (במהלך יישום התשתית, למשל) חורג מסף שהוגדר. כך אפשר לצמצם את ההשפעה של בעיות פוטנציאליות במהלך עדכון.
יצירת השקה
אחרי שיוצרים סוג השקה, אפשר ליצור השקה שמציינת את הגרסה שרוצים לעדכן בה את היחידות.
אחרי שיוצרים את ההשקה, App Lifecycle Manager מעדכן את היחידות בהתאם לאסטרטגיה שהוגדרה בסוג היחידה.
המסוף
עוברים אל App Lifecycle Manager.
לוחצים על השקות.
בדף Rollout List, לוחצים על Create.
בדף Create a rollout:
- בתיבה Rollout Kind, בוחרים את סוג ההשקה שמפרט איך להשיק את הגרסה ביחידות שצוינו.
- בתיבה Release, מציינים את הגרסה שרוצים לעדכן את היחידות איתה.
- בתיבה שם ההשקה, מזינים שם להשקה.
לוחצים על יצירה.
ההשקה נוצרה.
בדף Global Rollout Detail אפשר לעקוב אחרי פרטי ההשקה, כולל סטטוס ההשקה, התקדמות ההשקה (לפי מספר היחידות) והשקות שנכשלו.
gcloud
כדי ליצור השקה באמצעות מסוף Google Cloud :
gcloud beta app-lifecycle-manager rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION
מחליפים את:
-
ROLLOUT_NAME: שם ההשקה. -
ROLLOUT_KIND_NAME: מגדיר את סוג ההשקה שרוצים להשתמש בו כדי להחיל גרסאות על היחידות. הגרסאות מוחלות על כל היחידות מסוג היחידה שהוגדר בסוג ההשקה. -
RELEASE_NAME: הגדרת הקובץ הבינארי של הגרסה שרוצים לפרוס ביחידות. -
LOCATION: המיקום שבו רוצים ליצור את ההשקה.
מידע נוסף זמין במאמרי העזרה של Google Cloud CLI בנושא Rollout.
המאמרים הבאים
- סקירה כללית על App Lifecycle Manager
- כדי לנסות מדריך, אפשר לעיין במאמר פריסת מופע MySQL באמצעות App Lifecycle Manager.
- במאמר חשבונות שירות של App Lifecycle Manager מוסבר איך משתמשים בחשבונות שירות ואיך נותנים הרשאות ספציפיות לחשבונות האלה.