הגדרת מאגרי עובדים

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

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

שימו לב: כל מאגר עובדים יכול להכיל עד 1,000 ארגומנטים לכל מאגר תגים.

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

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

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

הגדרת נקודת הכניסה והארגומנטים

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

הפקודה והארגומנטים שצוינו בקונטיינר מבטלים את ברירת המחדל של קובץ האימג' ENTRYPOINT ושל CMD.

אפשר להגדיר פקודת נקודת כניסה וארגומנטים למאגר עובדים של Cloud Run באמצעותGoogle Cloud המסוף, Google Cloud CLI,‏ YAML או Terraform:

המסוף

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. בתפריט, בוחרים באפשרות מאגרי עובדים ולוחצים על פריסת קונטיינר כדי להגדיר מאגר עובדים חדש. אם אתם מגדירים מאגר עובדים קיים, לוחצים על מאגר העובדים ואז על Edit and deploy new revision (עריכה ופריסה של עדכון חדש).

  3. אם אתם מגדירים מאגר עובדים חדש, ממלאים את הדף הראשוני של מאגר העובדים ולוחצים על Containers, Networking, Security (מאגרי קונטיינרים, רשתות, אבטחה) כדי להרחיב את דף ההגדרות של מאגרי העובדים.

  4. לוחצים על הכרטיסייה מאגר תגים.

    תמונה

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

gcloud

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

gcloud run worker-pools update WORKER_POOL --command COMMAND --args ARG1,ARG-N

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

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

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

gcloud run worker-pools deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

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

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

gcloud run worker-pools deploy --image IMAGE_URL --command "" --args ""

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
    spec:
      template:
        spec:
          containers:
          - name: CONTAINER_NAME
            image: IMAGE_URL
            command:
            - COMMAND
            args:
            - ARG1
            - ARG-N

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

    • WORKER_POOL: השם של מאגר העובדים של Cloud Run.
    • CONTAINER_NAME: השם של הקונטיינר.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • COMMAND: הפקודה שהקונטיינר יופעל איתה אם לא משתמשים בפקודה שמוגדרת כברירת מחדל.
    • ARG1: הארגומנט שאתם שולחים לפקודת הקונטיינר. אם משתמשים בכמה ארגומנטים, צריך לציין כל אחד מהם בשורה נפרדת – לדוגמה, כמו שמוצג כאן, ARG-N.
  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace worker-pool.yaml

    אם קיים קובץ worker-pool.yaml, הפקודה gcloud run worker-pools replace משתמשת בו כברירת מחדל.

Terraform

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

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

  template {
    containers {
      image = "IMAGE_URL"
      command = ["COMMAND"]
      args = ["ARG1", "ARG2"]
    }
  }
}

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

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

הגדרת ספריית עבודה

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

לדוגמה:

gcloud

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

gcloud run worker-pools update WORKER_POOL --workdir WORKING_DIR

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

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

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

gcloud run worker-pools deploy --image IMAGE_URL --workdir WORKING_DIR

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

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

YAML

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

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
  2. מעדכנים את המאפיין workingDir::

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            workingDir: WORKING_DIR

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

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

    gcloud run worker-pools replace worker-pool.yaml

    אם קיים קובץ worker-pool.yaml, הפקודה gcloud run worker-pools replace משתמשת בו כברירת מחדל.

Terraform

מוסיפים את הטקסט הבא למשאב google_cloud_run_v2_worker_pool בקובץ התצורה של Terraform:

resource "google_cloud_run_v2_worker_pool" "default" {
  provider = google-beta
  name     = "WORKER_POOL"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
      working_dir = WORKING_DIR
    }
  }
}

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

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

הגדרת סדר הפעלת הקונטיינרים לפריסות של קונטיינרים צדדיים

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

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

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

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

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Run:

    כניסה ל-Cloud Run

    • בתפריט, בוחרים באפשרות Worker pools (מאגרי עובדים).
    • כדי לערוך מאגר עובדים קיים, לוחצים על מאגר העובדים ברשימה ובוחרים באפשרות Edit and deploy new revision (עריכה ופריסה של גרסה חדשה) כדי להציג את טופס הפריסה של הגרסה.
    • כדי ליצור מאגר עובדים חדש, לוחצים על Deploy container (פריסת קונטיינר) כדי להציג את הטופס Create worker pool (יצירת מאגר עובדים).
  2. אם יוצרים מאגר עובדים חדש, צריך לציין את שם מאגר העובדים, כתובת ה-URL של קונטיינר הכניסה, הקצאת CPU, שליטה בתעבורת נתונים נכנסת (ingress) ואימות. בכרטיסייה Containers, Networking, Security (מאגרי תגים, רשתות, אבטחה):

    1. מגדירים את מאגר הכניסה.
    2. כדי להוסיף כל אחד מהמאגרים האחרים שאתם פורסים, לוחצים על הוספת מאגר.
    3. לכל המאגרי תגים חוץ ממאגר התגים של Ingress, מגדירים בדיקת תקינות של הפעלה.
    4. אם צריך להפעיל מאגר אחרי מאגרים אחרים, בוחרים את המאגרים האלה בתפריט Container startup order (סדר הפעלת המאגר).
  3. כדי להוסיף מאגר עובדים קיים:

    1. לכל המאגרי תגים חוץ ממאגר התגים של Ingress, מגדירים בדיקת תקינות של הפעלה.
    2. כל קונטיינר מוצג עם תפריט Container startup order משלו. אם קונטיינר מסוים צריך שקונטיינרים אחרים יופעלו לפניו, צריך להשתמש בתפריט Container startup order (סדר הפעלת הקונטיינרים) כדי לבחור את הקונטיינרים שצריכים להיות מופעלים ראשונים.
  4. משלימים את כל ההגדרות הנדרשות ולוחצים על יצירה כדי ליצור מאגר חדש של עובדים או על פריסה כדי לפרוס מאגר קיים של עובדים. מחכים שהפריסה תסתיים.

gcloud

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

  1. במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

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

gcloud run worker-pools deploy WORKER_POOL \
     --container CONTAINER_1_NAME --image='WORKER_POOL_IMAGE'
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME

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

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

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

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
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'

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

    • WORKER_POOL: השם של מאגר העובדים של Cloud Run.
    • CONTAINER1: השם של הקונטיינר הראשון שתלוי בקונטיינר אחד או יותר. אפשר להגדיר את שם הקונטיינר ב-YAML. אם לא מציינים שם, Cloud Run יוצר שם באופן אוטומטי.
    • CONTAINER2: השם של הקונטיינר שצריך להתחיל לפני CONTAINER1.
    • CONTAINER3: השם של הקונטיינר השני שתלוי בקונטיינר אחד או יותר.

    בדוגמה שמוצגת בקטע ה-YAML, ‏CONTAINER2 מתחיל ראשון, CONTAINER1 מתחיל שני ו-CONTAINER3 מתחיל אחרון.

  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace worker-pool.yaml

    אם קיים קובץ worker-pool.yaml, הפקודה gcloud run worker-pools replace משתמשת בו כברירת מחדל.

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

  1. נכנסים ל-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

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

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

  4. לוחצים על הכרטיסייה Containers כדי להציג את ההגדרה של מאגר העובדים.