בדף הזה מוסבר איך להשתמש בהגדרות של תעבורת נתונים נכנסת (ingress) כדי להגביל את הגישה לרשת לשירות Cloud Run.
ברמת הרשת, אפשר להגיע לנקודת הקצה של שירות Cloud Run דרך נתיבי הכניסה לרשת הבאים:
- כתובות URL שמוגדרות כברירת מחדל
run.app, שאפשר להשבית - כל מיפוי דומיין שהוגדר
- כל מאזן עומסים חיצוני של אפליקציות (ALB) או מאזן עומסים פנימי של אפליקציות (ALB) שהוגדר
כל נתיבי הכניסה לרשת כפופים להגדרת הכניסה של השירות. הגדרת הכניסה ונתיבי הכניסה שמוגדרים כברירת מחדל מאפשרים לכל משאב באינטרנט להגיע לשירות Cloud Run שלכם. אתם יכולים להשתמש באילוץ בהתאמה אישית כדי להגביל את הגדרות הכניסה לארגון או לקבוצה של פרויקטים. אימות IAM עדיין חל על בקשות שמגיעות לנקודות הקצה של השירות מכל אחד מנתיבי הכניסה לרשת שצוינו למעלה. כדי לנהל את הגישה בצורה מדורגת, כדאי להשתמש גם בהגדרות של תעבורת נתונים נכנסת (ingress) לרשת וגם באימות של IAM.
משתמשים בתגי רשת כדי להגביל את הגישה של מכונת ה-VM של המחבר למשאבי VPC.
הגדרות זמינות של תעבורת נתונים נכנסת ברשת
אלה ההגדרות שזמינות:
| הגדרה | תיאור |
|---|---|
| פנימי |
הכי מגביל. התרה של בקשות מהמקורות הבאים:
run.app. בקשות ממקורות אחרים, כולל האינטרנט, לא יכולות להגיע לשירות בכתובת ה-URL run.app או בדומיינים מותאמים אישית. |
| איזון עומסים פנימי ו-Cloud Load Balancing | ההגדרה הזו מאפשרת בקשות מהמקורות הבאים:
הערה: כדי להפעיל את ההגדרה הזו ב-CLI של gcloud, משתמשים בפקודה internal-and-cloud-load-balancing.
כדי להפעיל את ההגדרה הזו במסוף Google Cloud , בוחרים באפשרות Internal > Allow traffic from external Application Load Balancers (פנימי > אישור תעבורה ממאזני עומסים חיצוניים של אפליקציות).
|
| הכול |
הכי פחות מגביל. מאפשרת את כל הבקשות, כולל בקשות ישירות מהאינטרנט לכתובת האתר run.app.
|
גישה לשירותים פנימיים
יש גם שיקולים נוספים:
כשניגשים לשירותים פנימיים, קוראים להם כרגיל באמצעות כתובת ה-URL שלהם, כתובת ה-URL שמוגדרת כברירת מחדל
run.appאו דומיין בהתאמה אישית שהוגדר ב-Cloud Run.לגבי בקשות ממכונות וירטואליות ב-Compute Engine, לא נדרש שום הגדרה נוספת למכונות שיש להן כתובות IP חיצוניות או למכונות שמשתמשות ב-Cloud NAT. אחרת, אפשר לעיין במאמר בנושא קבלת בקשות מרשתות VPC.
כשמתקשרים מ-Cloud Run או מ-App Engine לשירות Cloud Run שהוגדר כ'פנימי' או כ'פנימי ו-Cloud Load Balancing', התעבורה צריכה לעבור דרך רשת VPC שנחשבת פנימית. ראו קבלת בקשות משירותים אחרים של Cloud Run או מ-App Engine.
בקשות ממשאבים ברשתות VPC באותו פרויקט הן 'פנימיות' גם אם למשאב שממנו הן מגיעות יש כתובת IP חיצונית.
בקשות ממשאבים מקומיים שמחוברים לרשת ה-VPC באמצעות Cloud VPN ו-Cloud Interconnect הן 'פנימיות'.
הגדרת תעבורת נכנסת לשירותי Cloud Run
אפשר להגדיר את התעבורה הנכנסת באמצעות מסוף Google Cloud , Google Cloud CLI, YAML או Terraform.
המסוף
במסוף Google Cloud , נכנסים לדף Services של Cloud Run:
אם אתם מגדירים שירות חדש, לוחצים על Deploy container (פריסת מאגר) כדי להציג את הטופס Create service (יצירת שירות). ממלאים את דף ההגדרות הראשוניות של השירות.
אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על הכרטיסייה Networking (רשת).
בוחרים את תעבורת הנתונים הנכנסת שרוצים לאפשר:
לוחצים על יצירה או על שמירה.
gcloud
אם אתם פורסים שירות חדש, פורסים אותו עם הדגל
--ingress:gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS
מחליפים את מה שכתוב בשדות הבאים:
-
INGRESS: אחת מהגדרות הכניסה הזמינות:allinternalinternal-and-cloud-load-balancing
-
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.
-
אם משנים כניסה קיימת לשירות:
gcloud run services update SERVICE --ingress INGRESS
מחליפים את מה שכתוב בשדות הבאים:
-
INGRESS: אחת מהגדרות הכניסה הזמינות:allinternalinternal-and-cloud-load-balancing
-
SERVICE: שם השירות שלכם
-
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מעדכנים את ההערה
run.googleapis.com/ingress::apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/ingress: INGRESS name: SERVICE spec: template: metadata: name: REVISION
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של Cloud Run
- INGRESS: אחת מהגדרות הכניסה הזמינות:
allinternalinternal-and-cloud-load-balancing
- REVISION עם שם חדש של גרסה או למחוק אותה (אם היא קיימת). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:
- מתחיל ב-
SERVICE- - הוא מכיל רק אותיות קטנות, מספרים וגם
- - לא מסתיים ב-
- - לא חורג מ-63 תווים
- מתחיל ב-
מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_service בקובץ התצורה של Terraform:השבתה של כתובת ה-URL שמוגדרת כברירת מחדל
משביתים את כתובות ה-URL שמוגדרות כברירת מחדל run.app בשירות Cloud Run כדי לאפשר תנועה רק מנתיבי ה-Ingress האחרים של השירות: Cloud Load Balancing וכל מיפוי דומיין שהוגדר.
כדי להשבית את כתובת ה-URL שמוגדרת כברירת מחדל, מבצעים את השלבים הבאים באמצעות Google Cloud המסוף, Google Cloud CLI, YAML או Terraform.
המסוף
במסוף Google Cloud , נכנסים לדף Services של Cloud Run:
לוחצים על שירות קיים.
בוחרים בכרטיסייה Networking.
בכרטיס Endpoints, מבטלים את הסימון של Enable בקטע Default HTTPS endpoint URL.
לוחצים על Save.
כדי לשחזר את כתובת ה-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
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
כדי להשבית את כתובת ה-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 תווים
- מתחיל ב-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
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 שלמעלה, כתובת ה-URL שמוגדרת כברירת מחדל בשירות Cloud Run מושבתת בתצוגה המקדימה.
כדי לשחזר את כתובת ה-URL שמוגדרת כברירת מחדל, מסירים את הארגומנטים default_uri_disabled ו-launch_stage.
השירותים הבאים של Google Cloud משתמשים בכתובת ה-URL שמוגדרת כברירת מחדלrun.appכדי להפעיל את Cloud Run. השבתה של כתובת ה-URL של run.app שמוגדרת כברירת מחדל תגרום לכך שהשירותים הבאים לא יפעלו כמו שצריך:
- כתובת ה-URL של
cloudfunctions.netCloud Functions v2 API שמבוססת על שירות Cloud Run. - Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Dialogflow CX
- Eventarc
- Firebase App Hosting
- אירוח ב-Firebase
- Pub/Sub
- ניטור סינתטי ובדיקות זמני פעילות
- תהליכי עבודה
המאמרים הבאים
- מידע על הגדרות יציאה
- מגדירים מאזן עומסים פנימי של אפליקציות ל-Cloud Run.
- מגדירים מאזן עומסים חיצוני של אפליקציות עם Cloud Run.
- הגדרת שיטות אימות של IAM לגישה לשירותים.