בדף הזה מוסבר איך להגדיר את פקודת נקודת הכניסה ואת הארגומנטים של מאגר עובדים ב-Cloud Run.
כש-Cloud Run מפעיל קונטיינר, הוא מריץ את פקודת נקודת הכניסה שמוגדרת כברירת מחדל בקובץ האימג' ואת ארגומנטי הפקודה שמוגדרים כברירת מחדל. אם רוצים לשנות את נקודת הכניסה וארגומנטי הפקודה שמוגדרים כברירת מחדל לתמונה, אפשר להשתמש בשדות command ו-args בהגדרות הקונטיינר. בשדה command מציינים את הפקודה בפועל שהקונטיינר מריץ. השדה args מציין את הארגומנטים שמועברים לפקודה הזו.
שימו לב: כל מאגר עובדים יכול להכיל עד 1,000 ארגומנטים לכל מאגר תגים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה ולפריסה של מאגרי עובדים ב-Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
Cloud Run Developer (
roles/run.developer) במאגר העובדים של Cloud Run -
משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
רשימת ההרשאות והתפקידים ב-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:
המסוף
נכנסים ל-Cloud Run במסוף Google Cloud :
בתפריט, בוחרים באפשרות מאגרי עובדים ולוחצים על פריסת קונטיינר כדי להגדיר מאגר עובדים חדש. אם אתם מגדירים מאגר עובדים קיים, לוחצים על מאגר העובדים ואז על Edit and deploy new revision (עריכה ופריסה של גרסה חדשה).
אם אתם מגדירים מאגר עובדים חדש, ממלאים את הדף הראשוני של מאגר העובדים ולוחצים על Container(s), Volumes, Networking, Security כדי להרחיב את דף ההגדרות של מאגרי העובדים.
לוחצים על הכרטיסייה מאגר תגים.
- מציינים את הפקודה שרוצים שהקונטיינר יריץ אם לא רוצים להשתמש בפקודת נקודת הכניסה שמוגדרת בקובץ האימג' של הקונטיינר. אפשר לציין את הארגומנטים לפקודת נקודת הכניסה.
לוחצים על יצירה או על פריסה.
gcloud
כדי לערוך את פקודת ההתחלה והארגומנטים של שירות קיים:
gcloud beta run worker-pools update WORKER_POOL --command COMMAND --args ARG1,ARG-N
מחליפים את מה שכתוב בשדות הבאים:
- WORKER_POOL: שם מאגר העובדים.
- COMMAND: הפקודה שהקונטיינר מתחיל איתה, אם לא משתמשים בפקודה שמוגדרת כברירת מחדל.
- ARG1: הארגומנט שאתם שולחים לפקודת הקונטיינר. אם יש יותר מארגומנט אחד, צריך להשתמש ברשימה מופרדת בפסיקים.
כדי לציין נקודת כניסה וארגומנטים במהלך הפריסה של מאגר עובדים חדש או קיים:
gcloud beta 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 beta run worker-pools deploy --image IMAGE_URL --command "" --args ""
YAML
אם אתם יוצרים מאגר עובדים חדש, דלגו על השלב הזה. אם אתם מעדכנים מאגר עובדים קיים, אתם צריכים להוריד את הגדרת ה-YAML שלו:
gcloud beta run worker-pools describe WORKER_POOL --format export > workerpool.yaml
בדוגמה הבאה מופיעה הגדרת ה-YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL annotations: run.googleapis.com/launch-stage: BETA 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.
יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:
gcloud beta run worker-pools replace workerpool.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
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: הארגומנטים שאתם שולחים לפקודת מאגר התגים.
הגדרת סדר הפעלת הקונטיינרים לפריסות sidecar
כדי לציין את סדר ההפעלה של הקונטיינר בפריסת sidecar, משתמשים בתכונת התלות בין קונטיינרים. מציינים מאגרי תגים שיש להם תלות ומפרטים את מאגרי התגים שהם תלויים בהם, כדי שמאגרי התגים האלה יופעלו קודם. הקונטיינרים שאין להם תלות בקונטיינרים אחרים תמיד מופעלים ראשונים ובמקביל.
כדי להשתמש בתכונה הזו בהצלחה, צריך להשתמש בבדיקות תקינות של הפעלה. בדיקת ההפעלה מאפשרת ל-Cloud Run לבדוק את התקינות של קונטיינר תלוי, ולוודא שהוא עובר בהצלחה לפני הפעלת הקונטיינר הבא. אם לא משתמשים בבדיקות תקינות, הקונטיינרים מופעלים בסדר שצוין גם אם קונטיינרים שהם תלויים בהם לא מופעלים.
שימו לב: אין בדיקת תקינות של בדיקה ראשונית שמוגדרת כברירת מחדל למאגרי עובדים.
כדי לציין את סדר ההפעלה, משתמשים במסוף Google Cloud , ב-Google Cloud CLI או ב-YAML:
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run:
- בתפריט, בוחרים באפשרות Worker pools (מאגרי עובדים).
- כדי לערוך מאגר עובדים קיים, לוחצים על מאגר העובדים ברשימה ובוחרים באפשרות Edit and deploy new revision (עריכה ופריסה של עדכון חדש) כדי להציג את טופס הפריסה של העדכון.
- כדי ליצור מאגר עובדים חדש, לוחצים על Deploy container (פריסת קונטיינר) כדי להציג את הטופס Create worker pool (יצירת מאגר עובדים).
אם יוצרים מאגר עובדים חדש, צריך לציין את שם מאגר העובדים, כתובת ה-URL של קונטיינר הכניסה, הקצאת CPU, שליטה בתעבורת נתונים נכנסת (ingress) ואימות. בכרטיסייה Container(s), Volumes, Networking, Security (מאגרי נתונים, אמצעי אחסון, רשת, אבטחה):
- מגדירים את מאגר הכניסה.
- כדי להוסיף כל אחד מהמאגרים האחרים שאתם פורסים, לוחצים על הוספת מאגר.
- לכל המאגרים חוץ ממאגר הנתונים של ה-Ingress, מגדירים בדיקת תקינות של הפעלה.
- אם צריך להפעיל מאגר אחרי מאגרים אחרים, בוחרים את המאגרים האלה בתפריט Container startup order (סדר הפעלת המאגר).
כדי לעשות את זה במאגר עובדים קיים:
- לכל המאגרים חוץ ממאגר הנתונים של ה-Ingress, מגדירים בדיקת תקינות של הפעלה.
- כל קונטיינר מוצג עם תפריט Container startup order משלו. אם קונטיינר מסוים צריך שקונטיינרים אחרים יופעלו לפני שהוא מופעל, משתמשים בתפריט Container startup order (סדר הפעלת הקונטיינרים) כדי לבחור את הקונטיינרים שצריכים להיות מופעלים קודם.
משלימים את כל ההגדרות הנדרשות ולוחצים על יצירה כדי ליצור מאגר חדש של עובדים או על פריסה כדי לפרוס מאגר קיים של עובדים. ממתינים עד שהפריסה תסתיים.
gcloud
לפני שמשתמשים ב-Google Cloud CLI כדי לציין את סדר ההפעלה, צריך להגדיר בדיקת תקינות של הפעלה.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
כדי לפרוס כמה מאגרי תגים בשירות עם סדר הפעלה מוגדר, מריצים את הפקודה:
- WORKER_POOL: שם מאגר העובדים.
- IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. SIDECAR_IMAGE: הפניה לקובץ אימג' של קונטיינר sidecar.
אם רוצים להגדיר כל מאגר תגים בפקודת הפריסה, צריך לספק את ההגדרה של כל מאגר תגים אחרי הפרמטרים
container.אם אתם יוצרים מאגר עובדים חדש, דלגו על השלב הזה. אם אתם מעדכנים מאגר עובדים קיים, אתם צריכים להוריד את הגדרת ה-YAML שלו:
gcloud beta run worker-pools describe WORKER_POOL --format export > workerpool.yaml
בדוגמה הבאה מופיעה הגדרת ה-YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL annotations: run.googleapis.com/launch-stage: BETA 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 מתחיל אחרון.
יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:
gcloud beta run worker-pools replace workerpool.yaml
gcloud beta 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
מחליפים את מה שכתוב בשדות הבאים:
YAML
צפייה בהגדרות של מאגר העובדים
נכנסים ל-Cloud Run במסוף Google Cloud :
לוחצים על Worker pools כדי להציג את רשימת מאגרי העובדים שנפרסו.
לוחצים על מאגר העובדים שרוצים לבדוק כדי להציג את חלונית הפרטים שלו.
לוחצים על הכרטיסייה Containers כדי להציג את הגדרות הקונטיינר של מאגר העובדים.