הגדרת קונטיינרים לשירותים

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

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

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

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

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

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

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

הגדרת יציאת הקונטיינר לשירות

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

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

המסוף

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

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, בוחרים באפשרות Services (שירותים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של עדכון חדש.

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

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

    תמונה

    • מציינים את היציאה שאליה רוצים לשלוח את הבקשות, אם לא רוצים להשתמש בערך ברירת המחדל 8080. הפעולה הזו מגדירה גם את משתנה הסביבה PORT.
  5. לוחצים על יצירה או על פריסה.

gcloud

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

gcloud run services update SERVICE --port PORT

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

  • SERVICE: שם השירות.
  • PORT: היציאה שאליה נשלחות הבקשות. הערה: יציאת ברירת המחדל היא 8080.

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

gcloud run deploy --image IMAGE_URL --port PORT

מחליפים את IMAGE_URL בהפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין containerPort::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

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

    • SERVICE: השם של שירות Cloud Run.
    • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • PORT: היציאה שאליה נשלחות הבקשות.
    • REVISION עם שם חדש לגרסה או למחוק אותה (אם היא קיימת). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו-
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
      .
  3. מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בתצורת Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    containers {
      name = "hello-1"
      ports {
        container_port = PORT
      }
      image = "IMAGE_URL"
    }
  }
}

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

  • SERVICE: השם של שירות Cloud Run.
  • REGION: Google Cloud האזור. לדוגמה: europe-west1.

  • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

  • PORT: היציאה שאליה נשלחות הבקשות.

פיתוח נייטיב

כדי לציין את יציאת הקונטיינר בקובץ compose.yaml, מוסיפים את המאפיין ports להגדרת השירות.

  services:
    web:
      image: IMAGE
      ports:
        - "PORT:PORT"

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

  • IMAGE: כתובת ה-URL של תמונת המאגר.
  • PORT: היציאה שאליה נשלחות הבקשות.

פריסת השירותים

  1. כדי לפרוס את השירותים, מריצים את הפקודה gcloud run compose up:

    gcloud run compose up compose.yaml
  2. מגיבים y לכל ההנחיות להתקנת רכיבים נדרשים או להפעלת ממשקי API.

  3. אופציונלי: הפיכת השירות לציבורי אם רוצים לאפשר גישה לשירות ללא אימות.

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

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

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

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

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

המסוף

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

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, בוחרים באפשרות Services (שירותים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של עדכון חדש.

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

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

    תמונה

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

gcloud

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

gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N

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

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

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

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

מחליפים את IMAGE_URL בהפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

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

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

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיינים command ו-args:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            command:
            - COMMAND
            args:
            - ARG1
            - ARG-N

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

    • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • COMMAND: הפקודה שהקונטיינר יתחיל איתה אם לא משתמשים בפקודה שמוגדרת כברירת מחדל.
    • ARG1: הארגומנט שאתם שולחים לפקודת מאגר התגים. אם משתמשים בכמה ארגומנטים, צריך לציין כל אחד מהם בשורה נפרדת – לדוגמה, כמו שמוצג כאן: ARG-N.
  3. מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בתצורת Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-containers"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Container "entry-point" command
      command = ["/server"]

      # Container "entry-point" args
      args = []
    }
  }
}

בדוגמה של משאב google_cloud_run_v2_service שלמעלה מוגדרים פקודה וארגומנטים. מחליפים את /server בפקודה שמשמשת להפעלת הקונטיינר, ומוסיפים את כל הארגומנטים הנדרשים למערך args.

פיתוח נייטיב

כדי לציין את נקודת הכניסה והארגומנטים בקובץ compose.yaml, מוסיפים את המאפיין entrypoint או command להגדרת השירות.

  services:
    web:
      image: IMAGE
      entrypoint: ["COMMAND"]
      command: ["ARG1", "ARG-N"]

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

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

פריסת השירותים

  1. כדי לפרוס את השירותים, מריצים את הפקודה gcloud run compose up:

    gcloud run compose up compose.yaml
  2. מגיבים y לכל ההנחיות להתקנת רכיבים נדרשים או להפעלת ממשקי API.

  3. אופציונלי: הפיכת השירות לציבורי אם רוצים לאפשר גישה לשירות ללא אימות.

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

שימוש בסימני שוויון או בפסיקים בארגומנטים

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

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

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

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

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

לדוגמה:

gcloud

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

gcloud run services update SERVICE --workdir WORKING_DIR

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

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

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

gcloud run deploy --image IMAGE_URL --workdir WORKING_DIR

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

  • IMAGE_URL עם הפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • WORKING_DIR: ספריית העבודה של הקונטיינר.

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין workingDir::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE_URL
            workingDir: WORKING_DIR
            ports:
            - containerPort: PORT
    

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

    • SERVICE: השם של שירות Cloud Run.
    • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • WORKING_DIR: (אופציונלי) ספריית העבודה של הקונטיינר. אם לא מציינים ערך, המערכת תשתמש בערך שמוגדר כברירת מחדל בזמן הריצה של הקונטיינר, שיכול להיות שמוגדר בקובץ אימג' של קונטיינר.
    • PORT: היציאה שאליה נשלחות הבקשות.
    • REVISION עם שם חדש לגרסה או למחוק אותה (אם היא קיימת). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו-
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
      .
  3. מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בתצורת Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    containers {
      name = "hello-1"
      working_dir = WORKING_DIR
      ports {
        container_port = PORT
      }
      image = "IMAGE_URL"
    }
  }
}

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

  • SERVICE: השם של שירות Cloud Run.
  • REGION: Google Cloud האזור. לדוגמה: europe-west1.
  • WORKING_DIR: (אופציונלי) ספריית העבודה של הקונטיינר. אם לא מציינים ערך, המערכת תשתמש בערך שמוגדר כברירת מחדל בזמן הריצה של הקונטיינר, שיכול להיות שמוגדר בקובץ אימג' של קונטיינר.
  • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמט LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • PORT: היציאה שאליה נשלחות הבקשות. הערה: יציאת ברירת המחדל היא 8080.

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

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

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

שימו לב: לקונטיינרים של Ingress יש בדיקת תקינות (healthcheck) שמוגדרת כברירת מחדל בזמן ההפעלה.

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

המסוף

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

    כניסה ל-Cloud Run

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

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

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

gcloud

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

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

    הפעלת Cloud Shell

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

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

gcloud run deploy SERVICE \
     --container CONTAINER_1_NAME --image='INGRESS_IMAGE' --port='CONTAINER_PORT' \
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME

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

  • SERVICE: השם של השירות שאתם פורסים. אפשר להשמיט את הפרמטר הזה לגמרי, אבל אם תשמיטו אותו, תתבקשו להזין את שם השירות.
  • CONTAINER_PORT: היציאה שבה מאזין קונטיינר הכניסה לבקשות נכנסות. בניגוד לשירות עם קונטיינר יחיד, בשירות שמכיל sidecars, אין יציאת ברירת מחדל לקונטיינר של הכניסה. צריך להגדיר במפורש את יציאת מאגר התגים עבור מאגר התגים של הכניסה, ויכול להיות רק מאגר תגים אחד עם יציאה חשופה.
  • INGRESS_IMAGE: הפניה לקובץ אימג' של קונטיינר שאליו צריך להפנות את הבקשות, לדוגמה us-docker.pkg.dev/cloudrun/container/hello:latest.
  • SIDECAR_IMAGE: הפניה לקובץ אימג' של קונטיינר sidecar.

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

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את המאפיין container-dependencies:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

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

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

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

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

    gcloud run services replace service.yaml

פיתוח נייטיב

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

services:
  web:
    image: IMAGE
    ports:
      - "8080:8080"
    container_name: web
  sidecar:
    image: SIDECAR_IMAGE
    container_name: sidecar
    depends_on:
      - web

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

  • IMAGE: כתובת ה-URL של קובץ אימג' של קונטיינר הראשי, לדוגמה, us-docker.pkg.dev/my-project/my-repo/hello.
  • SIDECAR_IMAGE: כתובת ה-URL של קובץ אימג' של קונטיינר משני (sidecar).

פריסת השירותים

  1. כדי לפרוס את השירותים, מריצים את הפקודה gcloud run compose up:

    gcloud run compose up compose.yaml
  2. מגיבים y לכל ההנחיות להתקנת רכיבים נדרשים או להפעלת ממשקי API.

  3. אופציונלי: הפיכת השירות לציבורי אם רוצים לאפשר גישה לשירות ללא אימות.

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

Terraform

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

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_service בתצורת Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    containers {
      name = "CONTAINER1"
      ports {
        container_port = 8080
      }
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      depends_on = ["CONTAINER2"]
    }
    containers {
      name = "CONTAINER2"
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      env {
        name = "PORT"
        value = "8081"
      }
      startup_probe {
        http_get {
          port = 8081
        }
      }
    }
    containers {
      name = "CONTAINER3"
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      depends_on = ["CONTAINER1", "CONTAINER2"]
      env {
        name = "PORT"
        value = "8080"
      }
      startup_probe {
        http_get {
          port = 8080
        }
      }
    }
  }
}

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

  • SERVICE: השם של שירות Cloud Run.
  • REGION: Google Cloud האזור. לדוגמה: europe-west1.
  • CONTAINER1: השם של הקונטיינר הראשון שתלוי בקונטיינר אחד או יותר.
  • CONTAINER2: השם של מאגר התגים שצריך להפעיל לפני CONTAINER1.
  • CONTAINER3: השם של הקונטיינר שתלוי ב-CONTAINER1 וב-CONTAINER2.

הצגת הגדרות מאגר התגים

כדי לראות את הגדרות הקונטיינר הנוכחיות של שירות Cloud Run:

המסוף

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

    כניסה ל-Cloud Run

  2. לוחצים על השירות שרוצים לראות כדי לפתוח את הדף פרטי השירות.

  3. לוחצים על הכרטיסייה עדכונים.

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

gcloud

  1. משתמשים בפקודה הבאה:

    gcloud run services describe SERVICE
  2. מאתרים את הגדרת מאגר התגים בתצורה שמוחזרת.