הגבלת תעבורת נכנסת (ingress) של נקודות קצה ברשת לשירותים ולמופעים של Cloud Run

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

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

  • כתובות URL שמוגדרות כברירת מחדל ב-run.app, שאפשר להשבית
  • כל מיפוי דומיינים שהוגדר
  • כל מאזן עומסים חיצוני או פנימי של אפליקציות (ALB) שהוגדר

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

משתמשים בתגי רשת כדי להגביל את הגישה של ה-VM של המחבר למשאבי VPC.

הגדרות זמינות של תעבורת נתונים נכנסת ברשת

אלה ההגדרות הזמינות:

הגדרה תיאור
פנימי הכי מגביל. מאפשרת בקשות מהמקורות הבאים:
  • מאזן עומסים פנימי של אפליקציות (ALB), כולל בקשות מרשתות VPC משותפות כשהן מנותבות דרך מאזן העומסים הפנימי של האפליקציות.
  • משאבים שמותרים על ידי כל גבול גזרה של VPC Service Controls שמכיל את שירות Cloud Run או את המכונה. צריך להגדיר את Cloud Run כשירות מוגבל.
  • רשתות VPC שנמצאות באותו פרויקט כמו השירות או המכונהשל Cloud Run.
  • תעבורת נתונים נכנסת (ingress) של VPC משותף: רשת ה-VPC המשותפת שאליה מוגדרת גרסת השירות או מכונת Cloud Run‏ לשלוח תעבורת נתונים. למידע על המקרים שבהם תנועה ב-VPC משותף מזוהה כ "פנימית", ראו שיקולים מיוחדים ל-VPC משותף.
  • המוצרים הבאים של Google Cloud , אם הם נמצאים באותו פרויקט או באותו מתחם VPC Service Controls כמו השירות או המכונהשל Cloud Run, ואם הם משתמשים בכתובת ה-URL שמוגדרת כברירת מחדל של run.app ולא בכתובת URL מותאמת אישית או בדומיין מותאם אישית:
בקשות מהמקורות האלה נשארות ברשת של Google, גם אם הן ניגשות לשירות או למכונה בכתובת ה-URL של run.app. בקשות ממקורות אחרים, כולל מהאינטרנט, לא יכולות להגיע לשירות או למכונה בכתובת ה-URL של run.app, בכתובת ה-URL המותאמת אישית או בדומיין המותאם אישית.

מאזני עומסים פנימיים ומאזני עומסים ב-Cloud ההגדרה הזו מאפשרת בקשות מהמשאבים הבאים:
  • משאבים שמותרים לפי ההגדרה המגבילה יותר "פנימי"
  • מאזן עומסים חיצוני של אפליקציות (ALB)
אתם יכולים להשתמש בהגדרה הזו כדי:
  • לקבל בקשות מהאינטרנט דרך מאזן העומסים החיצוני של אפליקציות (ALB). אי אפשר לשלוח בקשות ישירות לכתובת ה-URL של run.app מהאינטרנט.
  • מוודאים שבקשות מהאינטרנט כפופות לתכונות של מאזן עומסים חיצוני של אפליקציות (ALB), כמו שרת proxy לאימות זהויות (IAP),‏ Google Cloud Armor ו-Cloud CDN.

הערה: כדי להפעיל את ההגדרה הזו ב-CLI של gcloud, משתמשים ב-internal-and-cloud-load-balancing. כדי להפעיל את ההגדרה הזו במסוף Google Cloud , בוחרים באפשרות Internal > Allow traffic from external Application Load Balancers.
הכול הכי פחות מגביל. מאפשרת את כל הבקשות, כולל בקשות ישירות מהאינטרנט לכתובת ה-URL של run.app.

גישה לשירותים פנימיים

שיקולים נוספים:

  • כשניגשים לשירותים פנימיים, קוראים להם כרגיל באמצעות כתובת ה-URL שלהם, כתובת ה-URL שמוגדרת כברירת מחדל ב-run.app, כתובת URL מותאמת אישית או דומיין מותאם אישית שמוגדר ב-Cloud Run.

  • בבקשות ממכונות וירטואליות של Compute Engine, לא נדרשת הגדרה נוספת למכונות שיש להן כתובות IP חיצוניות או שמשתמשות ב-Cloud NAT. אחרת, עיינו במאמר קבלת בקשות מרשתות VPC.

  • כששולחים קריאה מ-Cloud Run או מ-App Engine לשירות Cloud Run שמוגדר כ-"Internal" או כ-"Internal and Cloud Load Balancers", תעבורת הנתונים צריכה לעבור דרך רשת VPC שנחשבת פנימית. למידע נוסף, קראו את המאמר קבלת בקשות משירותי Cloud Run אחרים או מ-App Engine.

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

  • בקשות ממשאבים מקומיים שמחוברים לרשת ה-VPC באמצעות Cloud VPN ו-Cloud Interconnect הן "פנימיות".

הגדרת תעבורת נתונים נכנסת (ingress)

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

הגדרת תעבורת נתונים נכנסת לשירותי Cloud Run

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

המסוף

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

    כניסה ל-Cloud Run

  2. אם מגדירים שירות חדש, לוחצים על Deploy container כדי להציג את הטופס Create service. ממלאים את דף ההגדרות הראשוניות של השירות.

  3. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה Networking.

  4. בוחרים את תעבורת הנתונים הנכנסת (ingress) שרוצים לאפשר.

  5. כדי ליצור שירות חדש, לוחצים על יצירה. לוחצים על View diff & redeploy ואז על Deploy changes בשירות קיים.

gcloud

  1. אם אתם פורסים שירות חדש, צריך לפרוס אותו עם הדגל --ingress:

    gcloud run deploy SERVICE \
        --image IMAGE_URL \
        --ingress INGRESS

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

    • ‫SERVICE: שם השירות.
    • ‫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.
    • ‫INGRESS: אחת מהגדרות התעבורה הנכנסת הזמינות:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. אם אתם משנים את תעבורת הנתונים הנכנסת של שירות קיים:

    gcloud run services update SERVICE \
        --ingress INGRESS

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

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. מעדכנים את ההערה run.googleapis.com/ingress::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/ingress: INGRESS
    spec:
      template:
        metadata:
          name: REVISION

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

    • ‫SERVICE: השם של שירות Cloud Run.
    • ‫INGRESS: אחת מהגדרות התעבורה הנכנסת הזמינות:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • ‫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" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  # For valid annotation values and descriptions, see
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#ingress
  ingress = "INGRESS_TRAFFIC_INTERNAL_ONLY"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" #public image for your service
    }
  }
}

הגדרת תעבורת נתונים נכנסת (ingress) למכונות של Cloud Run

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

gcloud

  1. אם אתם יוצרים מכונה חדשה, צריך לפרוס אותה עם הדגל --ingress:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --ingress INGRESS

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

    • ‫INSTANCE: שם המכונה.
    • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, למשל us-docker.pkg.dev/cloudrun/container/hello:latest.
    • ‫INGRESS: אחת מהגדרות התעבורה הנכנסת הזמינות:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. אם משנים את ה-ingress של מכונה קיימת:

    gcloud beta run instances update INSTANCE \
        --ingress INGRESS

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

YAML

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. מעדכנים את ההערה run.googleapis.com/ingress::

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/ingress: INGRESS
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

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

    • ‫INSTANCE: השם של המכונה ב-Cloud Run.
    • ‫INGRESS: אחת מהגדרות התעבורה הנכנסת הזמינות:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • ‫CONTAINER_NAME: שם הקונטיינר.
    • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, למשל us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:

    gcloud beta run instances replace instance.yaml

השבתת כתובת ה-URL שמוגדרת כברירת מחדל

לפני שמשביתים את כתובת ה-URL שמוגדרת כברירת מחדל, חשוב לדעת שGoogle Cloud השירותים או המכונה הבאים משתמשים בכתובת ה-URL שמוגדרת כברירת מחדל של run.app כדי להפעיל את Cloud Run. אם משביתים את כתובת ה-URL שמוגדרת כברירת מחדל ב-run.app, השירותים האלה או המכונה לא יפעלו כמו שצריך:

כדי להשתמש במיפויים של דומיינים מותאמים אישית, צריך למפות את הדומיין המותאם אישית לפני שמשביתים את כתובת ה-URL של run.app.

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

השבתת כתובת ה-URL שמוגדרת כברירת מחדל לשירותי Cloud Run

משביתים את run.appכתובת ה-URL שמוגדרת כברירת מחדל של שירות או מכונה ב-Cloud Run, כדי לאפשר תנועה רק מנתיבי כניסה אחרים של השירות: Cloud Load Balancing וכל מיפוי דומיינים שהוגדר.

כדי להשבית את כתובת ה-URL שמוגדרת כברירת מחדל, מבצעים את השלבים הבאים באמצעות מסוף Google Cloud , ‏Google Cloud CLI, ‏YAML או Terraform.

המסוף

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

    כניסה ל-Cloud Run

  2. לוחצים על שירות קיים.

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

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

  5. לוחצים על View diff & redeploy ואז על Deploy changes.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, לוחצים על הפעלה.

gcloud

  • בשירות קיים, מריצים את הפקודה gcloud run services update עם הדגל --no-default-url, לדוגמה:

    gcloud run services update SERVICE_NAME --no-default-url
  • בשירות חדש, מריצים את הפקודה gcloud run deploy עם הדגל --no-default-url, לדוגמה:

    gcloud run deploy SERVICE_NAME --no-default-url

    מחליפים את SERVICE_NAME בשם של שירות Cloud Run.

    בפלט, כתובת ה-URL מוצגת בתור None.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, משתמשים בדגל --default-url.

YAML

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

    gcloud run services describe SERVICE --format export > service.yaml
  2. כדי להשבית את כתובת ה-URL של run.app, משתמשים בהערה run.googleapis.com/default-url-disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/default-url-disabled: true
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

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

    • ‫SERVICE: השם של שירות Cloud Run.
    • ‫REVISION: שם גרסה חדש או מחיקה של השם (אם הוא קיים). אם אתם מספקים שם חדש לגרסה, הוא חייב לעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו--
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

    כברירת מחדל, הפקודה gcloud run services replace משתמשת בקובץ service.yaml אם הוא קיים.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, מסירים את ההערה run.googleapis.com/default-url-disabled.

Terraform

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

מוסיפים את הקוד הבא למשאב google_cloud_run_v2_service בתצורה של Terraform:
  resource "google_cloud_run_v2_service" "disable_default_url_service" {
    name     = "cloudrun-service"
    location = "europe-west1"
    default_uri_disabled = true

    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
      }
      annotations = {
        "run.googleapis.com/ingress" = "all"   # "all" or "internal-only"
      }

    }
  }

מוודאים שהשורות launch_stage ו-default_uri_disabled נמצאות בקובץ main.tf. המשאב google_cloud_run_v2_service שלמעלה מציין שירות Cloud Run שבו כתובת ה-URL שמוגדרת כברירת מחדל מושבתת בגרסת טרום-השקה (Preview).

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, מסירים את הארגומנטים default_uri_disabled ו-launch_stage.

השבתת כתובת ה-URL שמוגדרת כברירת מחדל למכונות של Cloud Run

משביתים את כתובת ה-URL שמוגדרת כברירת מחדל ב-run.app של מכונת Cloud Run, כדי לאפשר תנועה רק מנתיבי הכניסה האחרים של המכונה: Cloud Load Balancing וכל מיפוי דומיין שהוגדר.

gcloud

  • במכונה קיימת, מריצים את הפקודה gcloud beta run instances update עם הדגל --no-default-url, לדוגמה:

    gcloud beta run instances update INSTANCE --no-default-url
  • במכונה חדשה, מריצים את הפקודה gcloud beta run instances deploy עם הדגל --no-default-url, לדוגמה:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --no-default-url

    מחליפים את INSTANCE בשם של המכונה ב-Cloud Run.

    בפלט, כתובת ה-URL מוצגת בתור None.

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, משתמשים בדגל --default-url.

YAML

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

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. כדי להשבית את כתובת ה-URL שמוגדרת כברירת מחדל, מגדירים את ההערה run.googleapis.com/default-url-disabled לערך 'true':

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/default-url-disabled: 'true'
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

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

    • ‫INSTANCE: השם של המכונה ב-Cloud Run.
    • ‫CONTAINER_NAME: שם הקונטיינר.
    • ‫IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, למשל us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:

    gcloud beta run instances replace instance.yaml

כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, מגדירים את ההערה run.googleapis.com/default-url-disabled לערך false או מסירים אותה.

המאמרים הבאים