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

במאמר הזה מוסבר איך לנהל שדרוגים של אשכולות Google Kubernetes Engine‏ (GKE) שמשתמשים בהפצה מדורגת עם שלבים מותאמים אישית. יוצרים רצף של השקות באמצעות קבוצות של אשכולות שמסודרות בציים, ואפשר גם להשתמש בקבוצות משנה של אשכולות מתוך הציים האלה. אתם יכולים לבחור כמה זמן בדיקת עמידות תרצו אחרי ששדרוגי האשכול יסתיימו בקבוצה (עד 30 ימים). אפשר לכלול גם אשכולות של Autopilot וגם אשכולות רגילים. מידע נוסף על תהליך ההשקה עם שלבים בהתאמה אישית

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

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

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

כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים

כדי ליצור או לשנות רצף השקה, צריך לקבל את תפקיד ה-IAM של עריכת Fleet (roles/gkehub.editor) בכל פרויקט מארח של Fleet ברצף ההשקה ובפרויקט המארח של רצף ההשקה. התפקיד הזה מספק את ההרשאות הבאות:

  • gkehub.rolloutsequences.create
  • gkehub.rolloutsequences.get
  • gkehub.rolloutsequences.list
  • gkehub.rolloutsequences.update
  • gkehub.rolloutsequences.delete
  • gkehub.fleet.update

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

אם אתם צריכים לרשום או לבטל רישום של אשכולות ב-Fleet, אתם צריכים את כל ההרשאות הבאות:

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

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

הגדרת רצף השקה

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

ארגון אשכולות בצי

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

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

  1. קיבוץ האשכולות לציים. אפשר לארגן את האשכולות לפי סביבות פריסה כמו בדיקה, Staging וייצור (מומלץ).
  2. רושמים כל אשכול ל-Fleet על סמך הקיבוץ שבחרתם.

יצירת קבוצות משנה של אשכולות (אופציונלי)

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

לדוגמה, כדי לבדוק גרסה חדשה בקבוצת משנה קטנה של אשכולות לפני השקה מלאה, אפשר להחיל תווית canary על האשכולות האלה. כדי להוסיף את התווית canary עם הערך true לאשכול באמצעות Google Cloud CLI, מריצים את הפקודה הבאה:

gcloud container clusters update CLUSTER_NAME \
    --location=CLUSTER_LOCATION\
    --update-labels=canary=true

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

הדגל --update-labels=canary=true מורה ל-GKE להחיל את התווית canary על האשכול .

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

יצירת רצף השקה עם שלבים בהתאמה אישית

רצף השקה עם שלבים מותאמים אישית מגדיר את סדר השדרוגים על ידי הגדרה הצהרתית של השלבים. ב-CLI של gcloud משתמשים בקובץ YAML, וב-Terraform מוסיפים בלוק משאבים להגדרות. בביצוע השלבים שמתוארים בקטע הזה, אתם יוצרים RolloutSequence.

כדי לוודא שהרצף יכלול את כל האשכולות, כל Fleet חייב לכלול שלב catch-all (שלב ללא בורר תוויות). בשלב הזה נכללים כל שאר האשכולות שלא נבחרו בשלבים הקודמים של GKE. אם מקצים אשכול יחיד לכמה שלבים בתוך RolloutSequence אחד, כדי לפתור התנגשויות, GKE מקצה את האשכול רק לשלב המוקדם ביותר.

ההגדרות לדוגמה הבאות יוצרות שלושה שלבים:

  • בשלב הראשון, המערכת מכוונת לכל האשכולות בצי dev. אחרי השדרוג, יש תקופת הרצה של 7 ימים (7d).
  • השלב השני מכוון לאשכולות בצי prod עם התווית canary=true. אחרי השדרוג, יש תקופת הרצה של 7 ימים (7d).
  • בשלב השלישי, המערכת מטפלת באשכולות הנותרים ב-Fleet מספר prod. אחרי שהשדרוג יסתיים, יחול תקופת הרצה של 7 ימים (7d).

gcloud

  1. שומרים את קובץ המניפסט הבא בשם rollout-sequence.yaml:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 7d
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
      label-selector: resource.labels.canary=='true'
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
    

    שימו לב לנקודות הבאות:

    • stage: כולל Fleet או קבוצת משנה של אשכולות ב-Fleet. צריך לשדרג את האשכולות בשלבים הקודמים באופן מלא ולבדוק אותם לפני שהרצף עובר לשלב הבא. עם זאת, אם שדרוג האשכול לא הסתיים 30 יום אחרי שתהליך השדרוג התחיל, GKE מתחיל את תקופת ההמתנה.
    • fleet-projects: רשימה של Fleet שמהן אפשר לבחור אשכולות לשלב הזה. אפשר להפנות לצי אחד לכל היותר בכל שלב. ‫Fleet מזוהה לפי הפרויקט שבו מתארח ה-Fleet. הפרויקט הזה יכול להיות פרויקט אחר מהפרויקט שבו נמצאים האשכולות, אם ה-Fleet מכיל חברויות חוצות פרויקטים. הפורמט לציון פרויקט של צי הוא projects/PROJECT_ID.
    • label-selector (אופציונלי): בוחר קבוצת משנה של אשכולות מהציים שצוינו. בשדה הזה נעשה שימוש בתחביר של Common Expression Language ‏(CEL) והוא חייב להתחיל ב-resource.labels.
    • soak-duration: הזמן להמתנה אחרי שדרוג כל האשכולות בשלב הקודם לפני שממשיכים לשלב הבא. הערך מבוטא בשניות, דקות, שעות וימים.
  2. כדי ליצור את רצף ההשקה שהגדרתם במניפסט rollout-sequence.yaml, מריצים את הפקודה הבאה:

    gcloud container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \
        --display-name=DISPLAY_NAME \
        --stage-config=rollout-sequence.yaml
    

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

    • ROLLOUT_SEQUENCE_NAME: מזהה קבוע שתואם למפרטים של RFC-1034, לדוגמה, test-rollout-sequence.
    • DISPLAY_NAME: מחרוזת קריאה לאנשים של רצף ההשקה.

Terraform

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

  1. מוסיפים את הבלוק הבא להגדרות של Terraform כדי ליצור משאב של רצף פריסה:

    resource "google_gke_hub_rollout_sequence" "rollout_sequence" {
      rollout_sequence_id = "ROLLOUT_SEQUENCE_NAME"
      display_name        = "DISPLAY_NAME"
      stages {
        fleet_projects = ["projects/dev"]
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        cluster_selector {
          label_selector = "resource.labels.canary=='true'"
        }
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        soak_duration  = "7d"
      }
    }
    

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

    • ROLLOUT_SEQUENCE_NAME: מזהה קבוע שתואם למפרטים של RFC-1034, לדוגמה, test-rollout-sequence.
    • DISPLAY_NAME: מחרוזת קריאה לאנשים של רצף ההשקה.

הפצת גרסה ספציפית

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

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

‫GKE יכול לפרוס רק גרסה אחת בכל פעם בשלב של מישור הבקרה או הצמתים, בהתאמה. אם יש לכם פריסה קיימת שפועלת בשלב הראשון של רצף הפריסה, GKE מבצע את הפעולות הבאות, בהתאם לאופן שבו אתם מנהלים את רצף הפריסה באמצעות ה-CLI של gcloud או Terraform:

  • ה-CLI של gcloud: כשמריצים את הפקודה, מוצגת הנחיה אינטראקטיבית שבה נשאלים אם רוצים לבטל את ההשקה הקיימת כדי ליצור השקה לגרסה שצוינה. אם תענו בחיוב, GKE יבטל את ההשקה הקיימת וייצור השקה חדשה. אם לא, GKE ישמור את הפריסה הקיימת ולא ייצור פריסה חדשה כמו שביקשתם במקור בפקודה.
  • Terraform: כשמעדכנים את הגדרות Terraform כמו שמתואר בקטע הבא, GKE מבטל את ההשקה הקיימת אם ההשקה מתבצעת בשלב הראשון.

השקת גרסה למישורי הבקרה ברצף השקה

gcloud

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

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --control-plane-version="CONTROL_PLANE_VERSION"

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

  • ROLLOUT_SEQUENCE_NAME: השם של רצף ההשקה.
  • CONTROL_PLANE_VERSION: הגרסה להפצה. אפשר לבחור גרסה ספציפית, כמו 1.34.7-gke.1055000, או להשתמש בכינוי של גרסה. מידע נוסף זמין במאמר בנושא ציון גרסת האשכול.

Terraform

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

מוסיפים את השדה הבא לבלוק. אפשר להוסיף את השדה בכל מקום חוץ מאשר בין בלוקים של stages, שצריכים להיות עוקבים:

min_control_plane_version = "CONTROL_PLANE_VERSION"

מחליפים את CONTROL_PLANE_VERSION בגרסה שרוצים להשיק. אפשר לבחור גרסה ספציפית, כמו 1.34.7-gke.1055000, או להשתמש בכינוי גרסה. מידע נוסף זמין במאמר בנושא ציון גרסת האשכול.

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

הפעלת גרסה בצמתים ברצף הפעלה

gcloud

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

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --node-version="NODE_VERSION"

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

  • ROLLOUT_SEQUENCE_NAME: השם של רצף ההשקה.
  • NODE_VERSION: הגרסה להפצה, לדוגמה, 1.34.7-gke.1055000.

Terraform

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

מוסיפים את השדה הבא לבלוק. אפשר להוסיף את השדה בכל מקום חוץ מאשר בין בלוקים של stages, שצריכים להיות עוקבים:

min_node_version = "NODE_VERSION"

מחליפים את NODE_VERSION בגרסה שרוצים להשיק, לדוגמה, 1.34.7-gke.1055000. אם כבר השתמשתם בשדה הזה כדי להשיק גרסת צומת, השדה יישאר בבלוק. מחליפים את הגרסה הקודמת שהופצה בגרסה NODE_VERSION שרוצים להפיץ הפעם.

בדיקת הסטטוס של השקת תכונה

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

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

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

gcloud container fleet rollouts list --project=HOST_PROJECT_ID

מחליפים את HOST_PROJECT_ID במזהה של פרויקט המארח של רצף ההשקה.

אפשר להשמיט את הדגל --project=HOST_PROJECT_ID אם כבר נמצאים בפרויקט שבו מתארחת רצף ההשקה.

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

NAME                                              STATE      CREATE_TIME
05eb251e4f19269e23-node-1-33-5-gke-1201000-t7mqd  COMPLETED  2025-10-30T20:07:46
05eb251e4f19269e23-kcp-1-33-5-gke-1201000-djwst   COMPLETED  2025-10-30T18:07:06
05eb251e4f19269e23-node-1-33-5-gke-1125000-6bxvu  COMPLETED  2025-10-23T17:46:54
05eb251e4f19269e23-kcp-1-33-5-gke-1125000-2f6ct   RUNNING    2025-10-23T16:41:33

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

תארו השקה

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

gcloud container fleet rollouts describe ROLLOUT_ID \
  --project=HOST_PROJECT_ID

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

  • ROLLOUT_ID: מזהה ההשקה שקיבלתם כשציינתם את רשימת ההשקות.
  • HOST_PROJECT_ID: מזהה הפרויקט שבו מתארח רצף ההשקה.

לדוגמה:

gcloud container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
  --project=my-hostfleet

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

createTime: '2025-05-26T11:47:29.909959672Z'
membershipStates:
  projects/dev-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T12:20:55.601542481Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-1234567890-abcdefg-hijklm-nopqrst
      state: SUCCEEDED
    stageAssignment: 1
  projects/dev-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T12:22:57.151203493Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-2
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-987654321-ghijkl-mno-pqr-stu-vwxyz
      state: SUCCEEDED
    stageAssignment: 1
  projects/prod-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T13:03:34.134308942Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-567891234-efghij-klm-nopq-rstu-vwxyz
      state: SUCCEEDED
    stageAssignment: 2
  projects/prod-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T13:06:34.025261641Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-765432198-01a7b896-67c2-523-6fjjh4-icmdydh
      state: SUCCEEDED
    stageAssignment: 2
name: projects/user-hostfleet/locations/global/rollouts/05eb251e4f19269e23-kcp-1-32-4-gke-1106006
rolloutSequence: projects/project-id/locations/global/rolloutSequences/my-sequence
state: COMPLETED
updateTime: '2025-07-22T07:36:51.052691989Z'
versionUpgrade:
  desiredVersion: 1.32.4-gke.1106006
  type: TYPE_CONTROL_PLANE
stages:
- state: COMPLETED
  endTime: '2025-05-26T12:22:28.828506491Z'
  stageNumber: 1
  startTime: '2025-05-26T11:48:28.772658427Z'
  soakDuration: 600s
- state: COMPLETED
  endTime: '2025-05-26T13:06:20.026390832Z'
  stageNumber: 2
  startTime: '2025-05-26T12:32:38.419372153Z'
  soakDuration: 600s

פרטי סטטוס של השקה

כשמתארים השקה, השדות stages ו-membershipStates של הפלט מספקים את סטטוס ההתקדמות של כל שלב ושל כל אשכול בשלב הזה, בהתאמה.

בטבלה הבאה מפורטים הסטטוסים האפשריים של שלב:

סטטוס תיאור
PENDING השדרוג עדיין לא התחיל בשלב הזה.
RUNNING השדרוג מתבצע בשלב הזה. אם הגדרתם חלון זמן לתחזוקה של האשכולות בשלב, מערכת GKE תמתין עד לפתיחת חלון הזמן לפני שדרוג האשכולות.
SOAKING כל האשכולות בשלב הזה סיימו את השדרוגים שלהם, והשלב נמצא בתקופת ההמתנה שהוגדרה לו.
FORCED_SOAKING השדרוג נמשך יותר מזמן השדרוג המקסימלי (30 ימים), ולכן GKE התחיל בכפייה את שלב ההמתנה. השדרוג ימשיך בכל האשכולות שנותרו.
COMPLETED השלב הסתיים, וההשקה ממשיכה לשלב הבא.

בטבלה הבאה מפורטים הסטטוסים האפשריים של אשכול ברצף:

סטטוס תיאור
PENDING השדרוג ממתין באשכול הזה.
INELIGIBLE האשכול הזה לא עומד בדרישות לשדרוג, יכול להיות בגלל חוסר התאמה בגרסה. הסיבה לאי-עמידה בתנאים מופיעה בפלט.
RUNNING השדרוג מתבצע באשכול הזה.
SUCCEEDED השדרוג הושלם בהצלחה באשכול הזה.
FAILED השדרוג נכשל באשכול הזה. המערכת מנסה שוב ושוב להגיע ליעדים שנכשלו בזמן שהשלב שלהם פעיל (במצב RUNNING או FORCED_SOAKING).

ניהול השקה

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

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

השהיית ההשקה

אתם יכולים להשהות את הפריסה הפעילה. מידע נוסף על הפעולה הזו זמין במאמר בנושא השהיית פריסה.

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

gcloud container fleet rollouts pause ROLLOUT_ID

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

המשך השקה

אפשר להמשיך פריסה מושהית שההשהיה שלה נמשכה פחות מ-90 יום. מידע נוסף על הפעולה הזו זמין במאמר המשך הפריסה.

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

gcloud container fleet rollouts resume ROLLOUT_ID

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

ביטול השקה

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

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

gcloud container fleet rollouts cancel ROLLOUT_ID

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

השלמת שלב בהשקה

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

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

gcloud container fleet rollouts force-complete-stage ROLLOUT_ID \
    --stage=STAGE

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

  • ROLLOUT_ID: המזהה של ההשקה שרוצים להשלים בה שלב. כדי לקבל את מזהי ההשקה של ההשקות ברצף ההשקות, אפשר לעיין במאמר רשימת השקות.
  • STAGE: השלב שרוצים להשלים עכשיו. לדוגמה, אם רוצים להשלים את השלב השני, מזינים 2. כדי להשתמש בפקודה הזו, השלב צריך להיות בהרצה או בהמתנה.

התעלמות מקבוצה ברצף השקה להשקה ספציפית

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

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

ניהול רצף השקה

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

אם אתם רוצים לנהל השקה אחת מתוך רצף השקות במקום את כל רצף ההשקות ואת כל ההשקות שבו, תוכלו לעיין במאמר בנושא ניהול השקה.

הצגת רשימת רצפי ההשקה

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

gcloud container fleet rolloutsequences list --project=HOST_PROJECT_ID

מחליפים את HOST_PROJECT_ID במזהה של פרויקט המארח של רצף ההשקה.

תארו רצף השקה

כדי לראות את הפרטים של רצף השקה ספציפי, מריצים את הפקודה הבאה:

gcloud container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

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

  • ROLLOUT_SEQUENCE_NAME: השם של רצף ההשקה.
  • HOST_PROJECT_ID: המזהה של פרויקט המארח של רצף ההשקה.

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

createTime: '2025-10-23T16:40:16.403871189Z'
displayName: my-display-name
name: projects/HOST_PROJECT_ID/locations/global/rolloutSequences/ROLLOUT_SEQUENCE_NAME
stages:
- clusterSelector:
    labelSelector: resource.labels.canary=='true'
  fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 600s
- fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 300s
uid: 5c5b2ac8-9d76-45f9-92ca-5e6bd3fbcaef
updateTime: '2025-10-23T17:11:57.285678399Z'

בחירת סוגי השדרוגים ש-GKE מבצע ברצף השקה

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

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

gcloud

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

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --auto-rollout-scope=TYPES_OF_UPGRADES

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

Terraform

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

מוסיפים את השדה הבא לבלוק. אפשר להוסיף את השדה בכל מקום חוץ מאשר בין בלוקים של stages, שצריכים להיות עוקבים:

auto_upgrade_config {
  rollout_creation_scope {
    upgrade_types = [
      UPGRADE_TYPES
    ]
  }
}

מחליפים את UPGRADE_TYPES ברשימת השדרוגים שרוצים לבצע, שיכולה לכלול אחד או יותר מהערכים הבאים (כל אחד בתוך מרכאות):

לדוגמה, אם רוצים שרק גרסאות תיקון יופצו ברצף ההפצה, צריך לציין את ההגדרה upgrade_types = ["CONTROL_PLANE_PATCH", "NODE_PATCH"].

אם מגדירים את upgrade_types = [], מערכת GKE לא מבצעת שדרוגים של אשכולות ברצף ההשקה, למעט השקות של שדרוגים אוטומטיים נדרשים.

כדי לחזור להתנהגות ברירת המחדל שבה GKE מבצע את כל סוגי שדרוגי האשכולות ברצף ההשקה, מציינים את ההגדרה upgrade_types = ["CONTROL_PLANE_PATCH", "CONTROL_PLANE_MINOR", "NODE_PATCH", "NODE_MINOR"]. אפשר גם להסיר את הבלוק auto_upgrade_config מההגדרה של Terraform.

שינוי רצף ההשקה

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

gcloud

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

לדוגמה, אם הגדרתם את רצף ההשקה המקורי בקובץ בשם rollout-sequence.yaml, עורכים את הקובץ לפי הצורך. לאחר מכן, מריצים את הפקודה הבאה:

gcloud container fleet rolloutsequences update test-rollout-sequence \
  --display-name="My Updated Rollout Sequence" \
  --stage-config=rollout-sequence.yaml

Terraform

אם אתם משתמשים ב-Terraform כדי לנהל את רצף ההשקה, אתם יכולים לשנות את רצף ההשקה על ידי שינוי הבלוק שבו השתמשתם כדי ליצור את רצף ההשקה.

התעלמות מקבוצת משתמשים בסדרת השקה

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

כדי ש-GKE יתעלם מאשכול ברצף השקה, מבצעים את השלבים הבאים:

  1. מוסיפים תווית לאשכול שרוצים ש-GKE יתעלם ממנו, או משתמשים בתווית קיימת. לדוגמה, אפשר להגדיר ש-GKE יתעלם מתווית כמו status, או שיתעלם מתווית כשהיא מקבלת ערך ספציפי, כמו status=quarantine.
  2. מגדירים את רצף ההשקה כך שיתעלם מקלאסטרים עם התווית הזו. כדי לעשות את זה, פועלים לפי השלבים הבאים, בהתאם לאופן שבו מנהלים את רצף ההשקה:

    gcloud

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

    gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
        --ignored-clusters-selector="resource.labels.LABEL_TO_IGNORE"
    

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

    • ROLLOUT_SEQUENCE_NAME: השם של רצף ההשקה.
    • LABEL_TO_IGNORE: שם התווית של האשכולות ש-GKE צריך להתעלם מהם ברצף ההשקה.

    Terraform

    אם אתם משתמשים ב-Terraform כדי לנהל את רצף ההשקה, מוסיפים את השדה הבא לבלוק שבו השתמשתם כדי ליצור את רצף ההשקה. אפשר להוסיף את השדה בכל מקום חוץ מאשר בין הבלוקים stages, שצריכים להיות רצופים:

    ignored_clusters_selector {
      label_selector = "resource.labels.LABEL_TO_IGNORE"
    }
    

    מחליפים את LABEL_TO_IGNORE בשם התווית של האשכולות ש-GKE צריך להתעלם מהם ברצף ההשקה.

בהוראות האלה מוסבר איך להגדיר את GKE כך שיתעלם מסוג אחד של תווית ברצף ההשקה. אם רוצים להתעלם מכמה תוויות או ליצור ביטויים מורכבים יותר כדי להתעלם מקבוצות עם תוויות ספציפיות, אפשר להעביר ערכים לשדה הזה באמצעות תחביר של ביטוי CEL. כל התוויות צריכות להתחיל בקידומת resource.labels..

הוספה של אשכול בחזרה לרצף השקה

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

gcloud

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

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --clear-ignored-clusters-selector

מחליפים את ROLLOUT_SEQUENCE_NAME בשם של רצף ההשקה.

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

Terraform

אם אתם משתמשים ב-Terraform כדי לנהל את רצף ההשקה, אתם צריכים להסיר את הבלוק ignored_clusters_selector מהבלוק שבו השתמשתם כדי ליצור את רצף ההשקה.

לחלופין, אם רוצים ש-GKE לא יתעלם מאשכול מסוים, מסירים את התוויות מהאשכול.

מחיקת רצף השקה

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

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

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

  • ROLLOUT_SEQUENCE_NAME בשם של רצף ההשקה.
  • HOST_PROJECT_ID במזהה של פרויקט המארח של רצף ההשקה.

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

העברת רצף פריסה קיים לשימוש בשלבים מותאמים אישית

אם אתם משתמשים בגרסה מבוססת-הצי של פריסת רצפים, אתם יכולים לעבור לרצף שמשתמש בשלבים מותאמים אישית על ידי יצירת RolloutSequence חדש שמפנה לציים הקיימים שלכם. שימו לב: בגרסה הזו של פריסת רצפים אין תמיכה במסוף Cloud de Confiance .

כדי להעביר את רצף ההשקה, צריך לבצע את השלבים הבאים:

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

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

  2. יוצרים פרויקט ייעודי Cloud de Confiance by S3NS לאירוח רצף ההשקה. בדרך כלל הפרויקט הזה לא חלק מהרצף, כלומר הפרויקט לא מכיל צי או אשכולות שהם חלק מהרצף.

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

  4. פועלים לפי ההוראות במאמר יצירת רצף השקה עם שלבים בהתאמה אישית.

    לדוגמה, המניפסט הבא, שנקרא rollout-sequence-migrate.yaml, מפנה אל צי הרכבים הקיים ברצף פריסה קודם. קובץ המניפסט הזה מתאר שלושה שלבים, כולל שלב canary בצי prod:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 604800s
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
      label-selector: canary=true
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
    

מיד אחרי שמגדירים RolloutSequence חדש לציים, GKE מתחיל לשדרג את הציים לפי הרצף החדש ומסיר את ההגדרה הקודמת.

העברה של רצף השקה עם שלבים מותאמים אישית לרצף ההשקה הקודם

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

איך מונעים שדרוג לא תקין במהלך העברה

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

מחיקת רצף ההשקה

מוחקים את אובייקט RolloutSequence שמנהל את האשכולות. המחיקה הזו משביתה את התכונה 'שלבים בהתאמה אישית'.

כדי למחוק את RolloutSequence, מריצים את הפקודה הבאה:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME

מחליפים את ROLLOUT_SEQUENCE_NAME בשם של רצף ההשקה.

שחזור ההגדרה הקודמת של רצף ההשקה (ללא שלבים בהתאמה אישית)

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

הסרת ההחרגות של התחזוקה

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

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