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

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

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

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

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

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

רשימה של תפקידים והרשאות ב-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

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. הדוגמה הבאה מכילה את הגדרת ה-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.
  3. יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:

    gcloud beta run instances replace instance.yaml

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

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

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

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

gcloud

לפני שמשתמשים ב-Google Cloud CLI כדי לציין את סדר ההפעלה, מגדירים בדיקת תקינות של ההפעלה לכל קונטיינר משני (sidecar) שקונטיינר אחר תלוי בו. למאגר ה-ingress (המאגר עם היציאה החשופה) יש בדיקת תקינות של הפעלת TCP כברירת מחדל.

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

    הפעלת Cloud Shell

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

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

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

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. הדוגמה הבאה מכילה את הגדרת ה-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.

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

    gcloud beta run instances replace instance.yaml