בדף הזה מוסבר איך להגדיר את הפקודה של נקודת הכניסה ואת הארגומנטים של מכונה ב-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 מתממשקת עם ממשקי API שלGoogle Cloud , כמו ספריות הלקוח של Cloud, קראו את המדריך להגדרת זהות השירות. מידע נוסף על הקצאת תפקידים זמין במאמרים הרשאות פריסה וניהול הגישה.
הגדרת נקודת כניסה וארגומנטים
כדי לשנות את הגדרות ברירת המחדל של ENTRYPOINT ו-CMD של קובץ האימג', אתם יכולים להגדיר את הפקודה והארגומנטים של נקודת הכניסה למכונה של Cloud Run באמצעות ה-CLI של Google Cloud או YAML:
gcloud
כדי לעדכן את פקודת ההפעלה והארגומנטים של מכונה קיימת:
gcloud beta run instances update INSTANCE --command COMMAND --args ARG1,ARG-N
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: שם המכונה.
- COMMAND: הפקודה שהקונטיינר מתחיל איתה, אם לא משתמשים בפקודת ברירת המחדל.
- ARG1: הארגומנט שאתם שולחים לפקודת הקונטיינר. אם יש יותר מארגומנט אחד, צריך להשתמש ברשימה מופרדת בפסיקים.
כדי לציין נקודת כניסה וארגומנטים במהלך פריסה של מכונה חדשה או קיימת:
gcloud beta run instances deploy INSTANCE --image IMAGE_URL --command COMMAND --args ARG1,ARG-N
מחליפים את IMAGE_URL בהפניה לקובץ האימג' של הקונטיינר, למשל us-docker.pkg.dev/cloudrun/container/hello:latest.
אם רוצים לשחזר את ברירות המחדל של הקונטיינר לפקודות ול-arguments של נקודת הכניסה, צריך לספק מחרוזות ריקות באופן הבא:
gcloud beta run instances update INSTANCE --command "" --args ""
YAML
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם מעדכנים מכונה קיימת, מורידים את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
הדוגמה הבאה מכילה את הגדרת ה-YAML:
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - name: CONTAINER_NAME image: IMAGE_URL command: - COMMAND args: - ARG1 - ARG-N
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של המכונה ב-Cloud Run.
- CONTAINER_NAME: שם הקונטיינר.
-
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, למשלus-docker.pkg.dev/cloudrun/container/hello:latest. - COMMAND: הפקודה שבאמצעותה המאגר יופעל אם לא משתמשים בפקודת ברירת המחדל.
- ARG1: הארגומנט שאתם שולחים לפקודת הקונטיינר. אם משתמשים בכמה ארגומנטים, צריך לציין כל אחד מהם בשורה נפרדת, כמו בדוגמה ARG-N.
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml
הגדרת סדר ההפעלה של קונטיינרים בפריסות של קונטיינרים מסוג sidecar
כדי לציין את סדר ההפעלה של הקונטיינרים בפריסת sidecar, משתמשים בתכונה "יחסי תלות של קונטיינרים". ציינו את כל מאגרי התגים שיש להם יחסי תלות וציינו את מאגרי התגים שהם תלויים בהם, כדי שמאגרי התגים האלה יופעלו קודם. הקונטיינרים שאין להם יחסי תלות תמיד מופעלים ראשונים ובמקביל.
כדי להשתמש בתכונה הזו, צריך להשתמש בבדיקות תקינות של ההפעלה. בדיקת ההפעלה מאפשרת ל-Cloud Run לבדוק את התקינות של קונטיינר תלוי, ולוודא שהוא עובר בהצלחה לפני הפעלת הקונטיינר הבא. אם לא משתמשים בבדיקות תקינות, הקונטיינרים מופעלים בסדר שצוין גם אם הקונטיינרים שהם תלויים בהם לא מופעלים.
כדי לציין את סדר ההפעלה, משתמשים ב-Google Cloud CLI או ב-YAML:
gcloud
לפני שמשתמשים ב-Google Cloud CLI כדי לציין את סדר ההפעלה, מגדירים בדיקת תקינות של ההפעלה לכל קונטיינר משני (sidecar) שקונטיינר אחר תלוי בו. למאגר ה-ingress (המאגר עם היציאה החשופה) יש בדיקת תקינות של הפעלת TCP כברירת מחדל.
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי לפרוס כמה קונטיינרים במכונה עם סדר הפעלה ספציפי, מריצים את הפקודה:
gcloud beta run instances deploy INSTANCE \ --container CONTAINER_1_NAME --image='IMAGE_URL' --port='CONTAINER_PORT' \ --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \ --startup-probe=tcpSocket.port=SIDECAR_PORT \ --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: שם המכונה.
-
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, למשלus-docker.pkg.dev/cloudrun/container/hello:latest. - CONTAINER_PORT: היציאה שבה מאזין מאגר ה-ingress לבקשות נכנסות. במכונה עם כמה קונטיינרים, צריך להגדיר באופן מפורש את יציאת הקונטיינר של קונטיינר ה-ingress.
-
SIDECAR_IMAGE: הפניה לקובץ האימג' של הקונטיינר המשני. SIDECAR_PORT: היציאה בקונטיינר המשני (sidecar) שנבדקת על ידי בדיקת ההפעלה של ה-TCP. בכל קונטיינר משני (sidecar) שקונטיינר אחר תלוי בו, צריך להגדיר בדיקת הפעלה.
אם רוצים להגדיר כל קונטיינר בפקודת הפריסה, צריך לספק את ההגדרות של כל קונטיינר אחרי הפרמטרים של
container.
YAML
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם מעדכנים מכונה קיימת, מורידים את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
הדוגמה הבאה מכילה את הגדרת ה-YAML:
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של המכונה ב-Cloud Run.
- CONTAINER1: השם של הקונטיינר הראשון שתלוי בקונטיינר אחד או יותר. אפשר להגדיר את שם הקונטיינר ב-YAML. אם לא מציינים שם, Cloud Run יוצר שם באופן אוטומטי.
- CONTAINER2: שם הקונטיינר שצריך להתחיל לפני CONTAINER1.
- CONTAINER3: השם של הקונטיינר השני שתלוי בקונטיינר אחד או יותר.
בדוגמה שמוצגת בקטע הקוד של YAML, קודם מתחיל CONTAINER2, אחר כך CONTAINER1 ובסוף CONTAINER3.
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml