פיצולים של מכונות וירטואליות וחזרה לגרסה קודמת במאגרי עובדים ב-Cloud Run

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

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

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

מחזור החיים של פיצולי מופעים

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

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

כדי לקבל את ההרשאות שנדרשות לניהול מאגרי עובדים של Cloud Run ועדכונים של מאגרי עובדים, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Cloud Run Developer (roles/run.developer) במאגר העובדים של Cloud Run.

רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם מאגר העובדים של Cloud Run מתקשר עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.

חזרה לגרסה קודמת

כדי לחזור לגרסה קודמת, משתמשים במסוף Google Cloud או ב-Google Cloud CLI:

המסוף

  1. במסוף Google Cloud , עוברים אל Cloud Run worker pools:

    כניסה ל-Cloud Run

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

  3. לוחצים על הכרטיסייה Revisions (עדכונים) כדי להציג את רשימת העדכונים הנוכחיים של מאגר העובדים הזה.

  4. לוחצים על ניהול פיצולים של מופעים כדי להציג את הטופס לניהול מופעים. ב-Cloud Run מפורטת הגרסה האחרונה שמוצגת. בטופס, מגדירים את הפרטים הבאים:

    1. לוחצים על הוספת שינוי ומשתמשים בתפריט הנפתח כדי לבחור שינוי קודם.
    2. מגדירים את אחוז המקרים של הגרסה הקודמת ל-100.
    3. מגדירים את אחוז התנועה של הגרסה האחרונה להצגה ל-0.
    4. לוחצים על Save.

gcloud

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

   gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=REVISION=100

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

  • WORKER_POOL: השם של מאגר העובדים.
  • REVISION: השם של הגרסה שאליה רוצים לחזור.

YAML

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

    gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. בדוגמה הבאה מופיעה הגדרת ה-YAML:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
      instanceSplits:
      - revisionName: REVISION
        percent: 100
    

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

    • WORKER_POOL: השם של מאגר העובדים.
    • REGION: האזור Google Cloud . לדוגמה: us-central1.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • REVISION: השם של הגרסה שאליה רוצים לחזור.
  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace workerpool.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

import {
  id = "projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL"
  to = google_cloud_run_v2_worker_pool.default
}

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }

  instance_splits {
    type     = "INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION"
    revision = "REVISION"
    percent  = 100
  }
}

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: האזור Google Cloud . לדוגמה: us-central1.
  • WORKER_POOL: השם של מאגר העובדים.
  • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • REVISION: השם של הגרסה שאליה רוצים לחזור.

פיצול מופעים בין כמה גרסאות

כדי לפצל את המופעים בין שתי גרסאות או יותר, משתמשים במסוף Google Cloud או ב-Google Cloud CLI:

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

המסוף

  1. במסוף Google Cloud , עוברים אל Cloud Run worker pools:

    כניסה ל-Cloud Run

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

  3. לוחצים על הכרטיסייה Revisions (גרסאות) כדי להציג את רשימת הגרסאות הנוכחיות של מאגר העובדים הזה.

  4. לוחצים על ניהול פיצולים של מופעים כדי להציג את הטופס לניהול מופעים. ב-Cloud Run מפורטת הגרסה האחרונה שמוצגת. בטופס, מגדירים את הפרטים הבאים:

    1. מגדירים את אחוז החלוקה של הגרסה האחרונה שמוצגת לערך הנדרש, לדוגמה, מקטינים אותו מ-100%.

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

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

    4. לוחצים על Save.

gcloud

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

   gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=LIST

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

  • WORKER_POOL: השם של מאגר העובדים.

  • LIST: רשימה של עדכונים ואחוזים שמופרדת בפסיקים:

    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEx.

    לדוגמה, my-worker-pool-s5sxn=10,my-worker-pool-cp9kw=90.

YAML

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

    gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. בדוגמה הבאה מופיעה הגדרת ה-YAML:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/scalingMode: manual
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
      instanceSplits:
      - revisionName: REVISION1
        percent: PERCENTAGE1
      - revisionName: REVISION2
        percent: PERCENTAGE2
    

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

    • WORKER_POOL: השם של מאגר העובדים.
    • REGION: האזור Google Cloud . לדוגמה: us-central1.
    • INSTANCE_COUNT: מספר המופעים.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • REVISION1 ו-REVISION2: השם של הגרסאות.
    • PERCENTAGE1 ו-PERCENTAGE2: אחוז המקרים להקצאה לכל אחת מהגרסאות האלה. הסכום של האחוזים האלה צריך להיות 100.
  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace workerpool.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

import {
  id = "projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL"
  to = google_cloud_run_v2_worker_pool.default
}

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }

  instance_splits {
    type     = "INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION"
    revision = "REVISION1"
    percent  = PERCENTAGE1
  }
  instance_splits {
    type     = "INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION"
    revision = "REVISION2"
    percent  = PERCENTAGE2
  }
}

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: האזור Google Cloud . לדוגמה: us-central1.
  • WORKER_POOL: השם של מאגר העובדים.
  • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • REVISION1 ו-REVISION2: השם של הגרסאות.
  • PERCENTAGE1 ו-PERCENTAGE2: אחוז המקרים להקצאה לכל אחת מהגרסאות האלה. הסכום של האחוזים האלה צריך להיות 100.

הקצאת מופעים לגרסה האחרונה

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

gcloud

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

  • משתמשים בדגל --to-latest כדי להפנות 100% מהמכונות לגרסה האחרונה, ולהקצות באופן אוטומטי את כל המכונות לכל גרסה חדשה שתפעילו:

    gcloud run worker-pools update-instance-split WORKER_POOL --to-latest
    
  • אופציונלי: משתמשים בדגל --to-revisions עם מילת המפתח LATEST כדי להקצות תמיד אחוז משתנה של מופעים לגרסה העדכנית ביותר כשמפעילים אותה. כדי להגדיר אחוז של מופעים שתמיד יצופו לגרסה האחרונה, מריצים את הפקודה הבאה:

    gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=LATEST=PERCENTAGE
    

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

    • WORKER_POOL: השם של מאגר העובדים.
    • PERCENTAGE: אחוז המקרים להקצאה לגרסאות העדכניות ביותר ולגרסאות עתידיות.

YAML

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

    gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. בדוגמה הבאה מופיעה הגדרת ה-YAML:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
      instanceSplits:
      - latestRevision: true
        percent: 100
    

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

    • WORKER_POOL: השם של מאגר העובדים.
    • REGION: האזור Google Cloud . לדוגמה: us-central1.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace workerpool.yaml

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }

  instance_splits {
    type = "INSTANCE_SPLIT_ALLOCATION_TYPE_LATEST"
    percent  = 100
  }
}

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

  • WORKER_POOL: השם של מאגר העובדים.
  • REGION: האזור Google Cloud . לדוגמה: us-central1.
  • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest

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