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

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

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

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

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

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

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

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

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

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

המסוף

  1. במסוף Cloud de Confiance by S3NS , עוברים אל 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. אם אתם יוצרים מאגר עובדים חדש, דלגו על השלב הזה. אם אתם מעדכנים מאגר קיים של Worker, הורידו את הגדרת ה-YAML שלו:

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.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: השם של מאגר ה-Workers.
    • ‫REGION: האזור ב- Cloud de Confiance . לדוגמה: us-central1.
    • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר ה-workers, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • ‫REVISION: שם הגרסה שרוצים לחזור אליה.
  3. יוצרים או מעדכנים את מאגר ה-Workers באמצעות הפקודה הבאה:

    gcloud run worker-pools replace worker-pool.yaml

    כברירת מחדל, הפקודה gcloud run worker-pools replace משתמשת בקובץ worker-pool.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: מזהה הפרויקט ב- Cloud de Confiance .
  • ‫REGION: האזור ב- Cloud de Confiance . לדוגמה: us-central1.
  • ‫WORKER_POOL: השם של מאגר ה-Workers.
  • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר ה-workers, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • ‫REVISION: שם הגרסה שאליה חוזרים.

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

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

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

המסוף

  1. במסוף Cloud de Confiance by S3NS , נכנסים לדף Cloud Run worker pools:

    כניסה ל-Cloud Run

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

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

  4. לוחצים על Manage instance splits כדי להציג את הטופס לניהול המופעים. ב-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. אם אתם יוצרים מאגר עובדים חדש, דלגו על השלב הזה. אם אתם מעדכנים מאגר קיים של Worker, הורידו את הגדרת ה-YAML שלו:

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.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: השם של מאגר ה-Workers.
    • ‫REGION: האזור ב- Cloud de Confiance . לדוגמה: us-central1.
    • ‫INSTANCE_COUNT: מספר המכונות.
    • ‫IMAGE_URL: הפניה לקובץ אימג' של קונטיינר שמכיל את מאגר ה-worker, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • ‫REVISION1 ו-REVISION2: השם של הגרסאות.
    • ‫PERCENTAGE1 ו-PERCENTAGE2: אחוז המופעים שיוקצו לכל אחת מהגרסאות האלה. הסכום של כל האחוזים צריך להיות 100.
  3. יוצרים או מעדכנים את מאגר ה-workers באמצעות הפקודה הבאה:

    gcloud run worker-pools replace worker-pool.yaml

    כברירת מחדל, הפקודה gcloud run worker-pools replace משתמשת בקובץ worker-pool.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: מזהה הפרויקט ב- Cloud de Confiance .
  • ‫REGION: האזור ב- Cloud de Confiance . לדוגמה: us-central1.
  • ‫WORKER_POOL: השם של מאגר העובדים.
  • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר ה-workers, למשל 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: השם של מאגר ה-Workers.
    • ‫PERCENTAGE: אחוז המכונות שיוקצו לגרסאות העדכניות ביותר ולגרסאות העדכניות העתידיות.

YAML

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

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.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: השם של מאגר ה-Workers.
    • ‫REGION: ה Cloud de Confiance אזור, לדוגמה us-central1.
    • ‫IMAGE_URL: הפניה לקובץ אימג' של קונטיינר שמכיל את מאגר ה-worker, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace worker-pool.yaml

    כברירת מחדל, הפקודה gcloud run worker-pools replace משתמשת בקובץ worker-pool.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: השם של מאגר ה-Workers.
  • ‫REGION: ה Cloud de Confiance אזור, לדוגמה us-central1.
  • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר ה-workers, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest

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