אתם יכולים להפעיל את שירות Cloud Run או את משימת Cloud Run כדי לשלוח תנועה לרשת VPC באמצעות תעבורת נתונים יוצאת (egress) ישירה של VPC, בלי שנדרש מחבר של Serverless VPC Access.
שירותים ומשימות ב-Cloud Run לא תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC. כדי להגדיר Direct VPC ingress רק למאגרי עובדים, אפשר לעיין במאמר תעבורת נתונים נכנסת (ingress) של מאגרי עובדים ב-Cloud Run.
לפני שמתחילים
אם עדיין אין לכם רשת VPC בפרויקט, צרו אחת.
אם אתם משתמשים ב-VPC משותף עם שירותים או משימות של Cloud Run, כדאי לעיין במאמר בנושא חיבור לרשת VPC משותפת.
בודקים את הקטעים הבאים בנושא הגדרת כתובות IP:
הקצאת כתובות IP כדי לקבל הנחיות להקצאת כתובות IP מתת-הרשת.
אסטרטגיות למיצוי כתובות IP לשימוש בטווחי כתובות IP חלופיים.
מגבלות
המגבלות הבאות חלות על שירותים ומשימות ב-Cloud Run :
- יכול להיות שתיתקלו בעיכובים של דקה או יותר בהקמת החיבור בהפעלה של מופע כשמשתמשים ב-Direct VPC egress. מומלץ להגדיר בקשה לבדיקת תקינות (probe) של הפעלת HTTP שבודקת חיבור ליעד תעבורת נתונים יוצאת (egress) שבו האפליקציה משתמשת לפני שהאפליקציה מקבלת בקשות. בבדיקה הזו של קישוריות יציאה צריך להטמיע ניסיונות חוזרים, או להגדיר את בדיקת ההפעלה עם הגדרות מתאימות של תקופה וסף שיפעלו כניסיון חוזר.
- יכול להיות שיהיו ניתוקים במשימות של Cloud Run שפועלות יותר משעה. הן יכולות להתרחש במהלך אירועי תחזוקה שמעבירים את העבודה ממכונה אחת למכונה אחרת. מאגר התגים מקבל אות
SIGTSTP10 שניות לפני האירוע ואותSIGCONTאחרי האירוע. אחרי שהמאגר מקבל את האותSIGCONT, מנסים שוב להתחבר. - עם Cloud NAT, יכול להיות שיהיו עיכובים של 30 שניות או יותר בהפעלה במצב התחלתי (cold start) של מכונה כשמשתמשים ב-Direct VPC egress. כדי לשפר את ביצועי ההפעלה, מומלץ להשתמש במחברי חיבור לרשת (VPC) מאפליקציית serverless עם Cloud NAT.
- Cloud Run תומך ברוחב פס של עד 1 Gbps לכל מופע בודד. חריגה מהסכום הזה תגרום להגבלת הביצועים.
מכסת השימוש ב-Cloud Run מגבילה את המספר המקסימלי של מופעים שאפשר להגדיר לשימוש בתעבורת נתונים יוצאת (egress) ישירה של VPC. המספר המקסימלי מוגדר לכל עדכון של Cloud Run או לכל הפעלה של משימה. כדי להגדיל את המכסות שמוגדרות כברירת מחדל, אפשר לעיין במאמר בנושא הגדלת מכסות.
- יכול להיות שיהיו ניתוקים בחיבורים של שירותים ומשימות ב-Cloud Run במהלך אירועי תחזוקה של תשתית הרשת. מומלץ להשתמש בספריות לקוח שיכולות לטפל באיפוסים מדי פעם של החיבור.
- Network Intelligence Center תומך רק בבדיקות קישוריות ובFlow Analyzer עבור טווחי רשתות משנה של IPv4 ו-IPv6.
- שירותים ומשימות ב-Cloud Run לא תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC.
אין תמיכה בפריטים הבאים ביציאה ישירה מ-VPC:
- ב-VPC Flow Logs לא מופיע השם של הגרסה ב-Cloud Run.
- רישום ביומן של כללי חומת אש ב-VPC
- רפליקציה של חבילות נתונים
- תגי רשת או זהות שירות בכללי חומת האש לתעבורת נתונים נכנסת.
- כללי חומת אש לא יכולים להשתמש בתגי מנהל המשאבים שמצורפים לעומסי עבודה של Cloud Run.
- בדיקת תעבורת נתונים יוצאת באמצעות Cloud Next Generation Firewall Enterprise, למשל שירות זיהוי ומניעת חדירות, שירות סינון כתובות URL ובדיקת TLS.
הקצאת כתובות IP
כדי למקם את השירות ברשת VPC, צריך לציין רשת VPC או רשת משנה, או את שניהם. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת. Cloud Run מקצה כתובות IP מתת-הרשת שלכם.
כתובות IP הן זמניות, ולכן לא מומלץ ליצור כללי מדיניות שמבוססים על כתובות IP ספציפיות. אם אתם צריכים ליצור מדיניות שמבוססת על כתובות IP, למשל בכללי חומת אש, אתם צריכים להשתמש בטווח כתובות ה-IP של כל תת-הרשת.
כדי לשנות את הרשת או את רשת המשנה שבהן נעשה שימוש ב שירות או במשימה , צריך לפרוס גרסה חדשה או להפעיל משימה חדשה שמשתמשת בערכים החדשים של הרשת ורשת המשנה.
הגדלה והקטנה של נפח הפעילות
כדי להגדיל את הקיבולת מהר יותר בזמן עלייה חדה בתנועת הגולשים, Cloud Run שומר כתובות IP בחסימות של 16 (28 מסכה של רשת משנה) בכל פעם.
אילו כתובות IP הוקצו ל-Cloud Run
כדי לוודא שיש לכם מספיק כתובות IPv4 לשימוש ב-Cloud Run, טווח כתובות ה-IPv4 של רשת המשנה צריך להיות /26 או גדול יותר.
כדי להקצות כתובות IP בצורה יעילה ולנהל אותן בקלות, כדאי למקם כמה משאבים באותה תת-רשת. אם מרחב כתובות ה-IPv4 שלכם מוגבל, אפשר לעיין בטווחים נתמכים של IPv4 כדי לראות אפשרויות נוספות.
כדי למחוק את רשת המשנה, צריך קודם למחוק או לפרוס מחדש את שירותי Cloud Runאו את המשימות כדי להפסיק את השימוש ברשת המשנה, ואז לחכות שעה עד שעתיים.
שימוש בכתובות IP בשירותים
במצב יציב, Cloud Run משתמש בפי שניים (2X) כתובות IP ממספר המופעים. כשמצמצמים את קנה המידה של גרסה, Cloud Run שומר על כתובות ה-IP שלה למשך עד 20 דקות. בסך הכול, צריך להזמין לפחות פי 2 ממספר כתובות ה-IP, בתוספת מאגר זמני לשימוש במקרה של עדכוני גרסה.
לדוגמה, אם משדרגים את הגרסאות כך ש-revision 1 יתבצע שינוי קנה מידה מ-100 מופעים לאפס, ו-revision 2 יתבצע שינוי קנה מידה מאפס ל-100, מערכת Cloud Run תשמור את כתובות ה-IP של revision 1 למשך עד 20 דקות אחרי הקטנת קנה המידה. במהלך חלון השמירה של 20 דקות, אתם צריכים להזמין לפחות 400 כתובות IP ((100 + 100) * 2).
צריכת כתובות IP למשרות
במשימות של Cloud Run, כל משימה צורכת כתובת IP אחת למשך ההרצה שלה, ועוד 7 דקות אחרי שהיא מסתיימת. צריך לוודא שרשת המשנה גדולה מספיק כדי להכיל את כל ההפעלות המקבילות של משימות העבודה, עם רשת משנה מינימלית של /26 שנדרשת להקצאה.
לדוגמה:
- משימה יומית שמושלמת תמיד לפחות 7 דקות לפני ההפעלה הבאה צורכת כתובת IP אחת לכל היותר ברשת המשנה.
- עבודה עם 10 משימות שמופעלת כל 10 דקות, כאשר כל משימה פועלת במשך 15 דקות, צורכת כתובת IP אחת למשך 22 דקות לכל משימה (3 הפעלות צורכות כתובות IP בו-זמנית), כפי שמוצג בדוגמה הבאה. לכן, העבודה צורכת 30 כתובות IP במצב יציב.
- משימה אחת שנמשכת דקה אחת ומופעלת 100 פעמים בדקה דורשת בערך 800 כתובות IP, בהתאם לזמן ההפעלה המדויק.
טווחים נתמכים של IPv4
Cloud Run תומך בטווחים הבאים של כתובות IPv4 עבור רשת המשנה:
הגדרת הרשאות IAM
כדי לוודא של-Cloud Run יש גישה לרשת ה-VPC, משתמשים באחת מהשיטות הבאות:
התפקיד Cloud Run Service Agent: כברירת מחדל, לסוכן השירות של Cloud Run יש את התפקיד Cloud Run Service Agent (
roles/run.serviceAgent) שמכיל את ההרשאות הנדרשות.הרשאות בהתאמה אישית: כדי לקבל שליטה מדויקת יותר, צריך לתת לסוכן השירות של Cloud Run את ההרשאות הנוספות הבאות בפרויקט:
compute.networks.getcompute.subnetworks.get-
compute.subnetworks.useבפרויקט או ברשת המשנה הספציפית compute.addresses.getcompute.addresses.list-
compute.addresses.create(נדרש רק עבור רשתות משנה עם תמיכה כפולה ב-IPv4 וב-IPv6 עם IPv6 חיצוני) -
compute.addresses.delete(נדרש רק לרשתות משנה עם תמיכה כפולה ב-IPv4 וב-IPv6 עם כתובות IPv6 חיצוניות) compute.addresses.createInternalcompute.addresses.deleteInternalcompute.regionOperations.get
התפקיד Compute Network User: אם לא משתמשים בתפקיד ברירת המחדל של סוכן השירות של Cloud Run או בהרשאות בהתאמה אישית, צריך להעניק את התפקיד Compute Network User (
roles/compute.networkUser) בחשבון השירות של סוכן השירות של Cloud Run. ברשתות משנה עם IPv6 חיצוני נדרש גם התפקיד Compute Public IP Admin (roles/compute.publicIpAdmin).לדוגמה, כדי להעניק את התפקיד Compute Network User, מריצים את הפקודה הבאה:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט.
- PROJECT_NUMBER: מספר הפרויקט שבו אתם פורסים את משאב Cloud Run.
חיבור משאבי Cloud Run לרשת VPC
בהתאם למשאב Cloud Run שיש לכם, פועלים לפי ההוראות באחד מהקטעים הבאים:
חיבור שירות לרשת VPC
תעבורת נתונים יוצאת (egress) ישירה של VPC מאפשרת לשירות Cloud Run לשלוח תעבורה לרשת VPC בלי מחבר של Serverless VPC Access. עלויות הרשת מתרחבות לאפס בדיוק כמו השירות עצמו. אפשר גם להוסיף תגים לרשת ישירות לגרסאות של שירות Cloud Run כדי להגביר את רמת האבטחה של הרשת, למשל כדי להחיל כללי חומת אש של VPC.
אפשר להגדיר Direct VPC egress עם שירות באמצעותCloud de Confiance המסוף, Google Cloud CLI, YAML או Terraform.
המסוף
אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם אתם מגדירים ומפעילים שירות קיים, לוחצים על השירות ואז על עריכה והפעלה של גרסה חדשה.
אם אתם מגדירים שירות חדש, ממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך, ואז לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרות השירות.
נכנסים לכרטיסייה Networking.
לוחצים על Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).
לוחצים על שליחת תנועה ישירות ל-VPC.
בשדה Network (רשת), בוחרים את רשת ה-VPC שאליה רוצים להפנות את התנועה.
בשדה רשת משנה, בוחרים את רשת המשנה שדרכה השירות מקבל כתובות IP. אפשר לפרוס כמה שירותים באותה רשת משנה.
אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לשירותים. תגי רשת מצוינים ברמת הגרסה. לכל גרסה של שירות יכולים להיות תגי רשת שונים, כמו
network-tag-2.בקטע Traffic routing (ניתוב תנועה), בוחרים באחת מהאפשרויות הבאות:
- הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
- העברת כל התעבורה ל-VPC כדי לשלוח את כל התעבורה היוצאת דרך רשת ה-VPC.
לוחצים על יצירה או על פריסה.
כדי לוודא שהשירות נמצא ברשת ה-VPC, לוחצים על השירות ואז על הכרטיסייה Networking (רשת). הרשת ותת-הרשת מופיעות בכרטיס VPC.
עכשיו אפשר לשלוח בקשות מהשירות שלכם ב-Cloud Run לכל משאב ברשת ה-VPC, בהתאם למה שמוגדר בכללי חומת האש.
gcloud
שירות
כדי לפרוס שירות Cloud Run בלי מחבר מ-Google Cloud CLI:
מעדכנים את הרכיבים של
gcloudלגרסה האחרונה:gcloud components update
מוודאים ש-Compute Engine API מופעל בפרויקט:
gcloud services enable compute.googleapis.com
פורסים את שירות Cloud Run באמצעות הפקודה הבאה:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
מחליפים את:
- SERVICE_NAME מחליפים בשם של שירות 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 - NETWORK בשם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
- SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים או משימות באותה רשת משנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות המופרדים בפסיקים של תגי הרשת שרוצים לשייך לשירות. בשירותים, תגי הרשת מצוינים ברמת השינוי. לכל עדכון של שירות יכולים להיות תגי רשת שונים, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
-
- REGION עם אזור לשירות שלכם.
כדי לוודא שהשירות שלכם נמצא ברשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run services describe SERVICE_NAME \ --region=REGION
מחליפים את:
SERVICE_NAMEבשם של השירות.-
REGIONבאזור של השירות שציינתם בשלב הקודם.
הפלט צריך לכלול את השם של הרשת, רשת המשנה והגדרת תעבורת נתונים יוצאת (egress), למשל:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
עכשיו אפשר לשלוח בקשות מהשירות שלכם ב-Cloud Run לכל משאב ברשת ה-VPC, בהתאם למה שמוגדר בכללי חומת האש.
תפקיד
כדי לפרוס פונקציית Cloud Run בלי מחבר מ-Google Cloud CLI:
מעדכנים את הרכיבים של
gcloudלגרסה האחרונה:gcloud components update
מוודאים ש-Compute Engine API מופעל בפרויקט:
gcloud services enable compute.googleapis.com
פורסים את פונקציית Cloud Run באמצעות הפקודה הבאה:
gcloud run deploy FUNCTION_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION \ --function=FUNCTION_ENTRYPOINT
מחליפים את:
- FUNCTION_NAME מחליפים בשם של פונקציית 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 - NETWORK בשם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
- SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים או משימות באותה רשת משנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת שרוצים לשייך לפונקציה, מופרדים באמצעות פסיקים. בפונקציות, תגי הרשת מצוינים ברמת השינוי. לכל עדכון יכולים להיות תגי רשת שונים, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
-
- REGION עם אזור לפונקציה.
- אופציונלי: FUNCTION_ENTRYPOINT עם נקודת הכניסה לפונקציה בקוד המקור. זה הקוד ש-Cloud Run מריץ כשהפונקציה פועלת. הערך של הדגל הזה צריך להיות שם של פונקציה או שם מחלקה שמוגדר במלואו וקיים בקוד המקור.
כדי לוודא שהפונקציה נמצאת ברשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run services describe FUNCTION_NAME \ --region=REGION
מחליפים את:
FUNCTION_NAMEבשם של הפונקציה.-
REGIONבאזור של הפונקציה שציינתם בשלב הקודם.
הפלט צריך להכיל את השם של הרשת, רשת המשנה והגדרת היציאה, לדוגמה:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
עכשיו אפשר לשלוח בקשות מהפונקציה של Cloud Run לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. כדי לעדכן שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מעדכנים את המאפיינים הבאים:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
מחליפים את:
- SERVICE_NAME מחליפים בשם של שירות Cloud Run. שמות של שירותים צריכים להיות באורך של עד 49 תווים, והם צריכים להיות ייחודיים לכל אזור ופרויקט.
- REGION מחליפים באזור של שירות Cloud Run, שחייב להיות זהה לאזור של רשת המשנה.
- NETWORK בשם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
- SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים או משימות באותה רשת משנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת שרוצים לשייך לשירות. בשירותים, תגי הרשת מצוינים ברמת השינוי. לכל עדכון של שירות יכולים להיות תגי רשת שונים, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
-
- IMAGE בכתובת ה-URL של קובץ אימג' של קונטיינר השירות.
אפשר גם לציין הגדרות נוספות, כמו משתני סביבה או מגבלות זיכרון.
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים לקובץ
main.tfאת הנתונים הבאים:
אפשר גם להגדיר את השירות כגלוי לכולם אם רוצים לאפשר גישה לשירות ללא אימות.
חיבור של משימה לרשת VPC
תעבורת נתונים יוצאת (egress) ישירה של VPC מאפשרת למשימת Cloud Run לשלוח תעבורה לרשת VPC בלי מחבר של Serverless VPC Access. אפשר גם להוסיף תגי רשת ישירות למשימות של Cloud Run כדי להגדיר אבטחת רשת ברמה מפורטת יותר, למשל להחיל כללי חומת אש של VPC.
אפשר להגדיר Direct VPC egress באמצעות משימה באמצעותCloud de Confiance מסוף Google Cloud, Google Cloud CLI או YAML.
המסוף
אם אתם מגדירים משימה חדשה, לוחצים על הכרטיסייה משימות וממלאים את הדף של הגדרות המשימה הראשוניות לפי הצורך. אם מגדירים משימה קיימת, לוחצים על המשימה ואז על עריכה.
לוחצים על Container, Variables & Secrets, Connections, Security (מאגר, משתנים וסודות, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.
לוחצים על הכרטיסייה Connections (קישורים).
לוחצים על Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).
לוחצים על שליחת תנועה ישירות ל-VPC.
בשדה Network (רשת), בוחרים את רשת ה-VPC שאליה רוצים לשלוח את התנועה.
בשדה Subnet (רשת משנה), בוחרים את רשת המשנה שממנה המשימה מקבלת כתובות IP. אפשר להריץ כמה משימות באותה רשת משנה.
בקטע Traffic routing (ניתוב תנועה), בוחרים באחת מהאפשרויות הבאות:
- הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
- העברת כל התעבורה ל-VPC כדי לשלוח את כל התעבורה היוצאת דרך רשת ה-VPC.
אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לשירותים. תגי רשת מצוינים ברמת הגרסה. לכל גרסה של שירות יכולים להיות תגי רשת שונים, כמו
network-tag-2.אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך למשרה או למשרות. לגבי משימות, תגי הרשת מוגדרים ברמת הביצוע. לכל הפעלה של עבודה יכולים להיות תגים שונים של רשתות, כמו
network-tag-2.לוחצים על יצירה או על עדכון.
כדי לוודא שהעבודה נמצאת ברשת ה-VPC, לוחצים על העבודה ואז על הכרטיסייה הגדרות. הרשת ותת-הרשת מופיעות בכרטיס VPC.
עכשיו אפשר להריץ את העבודה ב-Cloud Run ולשלוח בקשות מהעבודה לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.
gcloud
כדי ליצור משימת Cloud Run בלי מחבר מ-Google Cloud CLI:
מעדכנים את הרכיבים של
gcloudלגרסה האחרונה:gcloud components update
מוודאים ש-Compute Engine API מופעל בפרויקט:
gcloud services enable compute.googleapis.com
יוצרים משימת Cloud Run באמצעות הפקודה הבאה:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
מחליפים את:
- JOB_NAME מחליפים בשם של משימת Cloud Run.
- IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה
us-docker.pkg.dev/cloudrun/container/job:latest - NETWORK בשם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת.
- SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים או משימות באותה רשת משנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת שרוצים לשייך למשרה. לגבי משימות, תגי הרשת מצוינים ברמת ההפעלה. לכל הרצה של עבודה יכולים להיות תגי רשת שונים, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
-
- REGION עם אזור לחיפוש משרות.
כדי לוודא שהעבודה נמצאת ברשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run jobs describe JOB_NAME \ --region=REGION
מחליפים את:
JOB_NAMEבשם של הג'וב.-
REGIONבאזור של המשרה שציינתם בשלב הקודם.
הפלט צריך להכיל את השם של הרשת ושל רשת המשנה, לדוגמה:
VPC network: Network: default Subnet: default
עכשיו אפשר להריץ את משימת Cloud Run ולשלוח בקשות מהמשימה לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.
YAML
אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
מעדכנים את המאפיינים הבאים:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
מחליפים את:
- JOB_NAME מחליפים בשם של משימת Cloud Run. שמות המשרות צריכים להיות באורך של עד 49 תווים, והם צריכים להיות ייחודיים לכל אזור ופרויקט.
- REGION עם האזור של משימת Cloud Run, שחייב להיות זהה לאזור של רשת המשנה.
- NETWORK בשם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
- SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים או משימות באותה רשת משנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת שרוצים לשייך למשרה. לגבי משימות, תגי הרשת מצוינים ברמת ההפעלה. לכל הרצה של עבודה יכולים להיות תגי רשת שונים, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
-
- IMAGE בכתובת ה-URL של קובץ האימג' בקונטיינר של העבודה.
יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
הגדרה של dual-stack (IPv4 ו-IPv6)
כדי להוסיף רשת משנה עם תמיכה כפולה עם טווח IPv6 למשאב Cloud Run, אפשר לעיין במאמר בנושא הגדרת תמיכה כפולה.
הגבלת הגישה באמצעות כללים של חומת אש
הגבלת הגישה למשאבים ברשת VPC באמצעות כללי חומת אש של VPC. אפשר להוסיף את ההגבלות האלה באחת מהדרכים הבאות:
- יוצרים כלל לחומת אש לתעבורה נכנסת שמפנה אל השירות או אל העבודה באמצעות טווח כתובות ה-IP של רשת המשנה.
יוצרים כלל לחומת אש ליציאה שמתייחס לשירות או לעבודה.
בכלל חומת האש ליציאה, מציינים את השירות או את העבודה באמצעות זהות השירות של חשבון השירות המקושר, טווח כתובות ה-IP של רשת המשנה או תגי הרשת המשויכים.
תגי רשת לתעבורת נתונים יוצאת (egress)
אפשר להוסיף עוד שכבת אבטחת רשת באמצעות תגי רשת בכללי חומת אש של תעבורת נתונים יוצאת (egress).
המסוף
כדי לשייך תגי רשת לשירות או לעבודה:
נכנסים לדף Cloud Run במסוף Cloud de Confiance .
לוחצים על השירות או על המשימה שרוצים לשייך להם תגי רשת, ואז לוחצים על עריכה ופריסה של עדכון חדש בשביל שירותים או על עריכה בשביל משימות.
לוחצים על הכרטיסייה Networking (רשת) בשביל שירותים, או על הכרטיסייה Connections (חיבורים) בשביל משרות.
מוודאים שסימנתם את האפשרויות Connect to a VPC for outbound traffic (התחברות ל-VPC לתעבורה יוצאת) ו-Send traffic directly to a VPC (שליחת תעבורה ישירות ל-VPC).
בשדה Subnet (תת-רשת), בוחרים את תת-הרשת שממנה השירות מקבל כתובות IP. אפשר לפרוס או להפעיל כמה שירותים או משימות באותה רשת משנה.
בשדה Network tags, מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לעבודה.
לוחצים על פריסה או על עדכון.
במקרה של שירותים, לכל עדכון של שירות יכול להיות סט שונה של תגי רשת, כי תגי רשת מצוינים ברמת העדכון. לגבי משימות, לביצוע של משימה יש את אותם תגי רשת שהיו למשימה כשנוצר הביצוע של המשימה.
gcloud
כדי לשייך תגי רשת לשירות או לעבודה, משתמשים בפקודה gcloud run deploy:
gcloud run deploy SERVICE_JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --region=REGION
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_JOB_NAME בשם של השירות או המשימה.
- IMAGE_URL עם כתובת ה-URL של התמונה של השירות או המשרה.
- NETWORK מחליפים בשם של רשת ה-VPC.
- SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים או משימות באותה רשת משנה.
- NETWORK_TAG_NAMES עם השם של תג הרשת או רשימה של תגי רשת שמופרדים בפסיקים.
- REGION בשם האזור.
במקרה של שירותים, לכל עדכון של שירות יכול להיות סט שונה של תגי רשת, כי תגי רשת מצוינים ברמת העדכון. לגבי משימות, לביצוע של משימה יש את אותם תגי רשת שהיו למשימה כשנוצר הביצוע של המשימה.
ניתוק משאב Cloud Run
בהתאם למשאב Cloud Run שיש לכם, פועלים לפי ההוראות באחד מהקטעים הבאים:
ניתוק שירות
המסוף
כדי להסיר את השירות מרשת ה-VPC:
לוחצים על השירות שרוצים להסיר ואז על עריכה ופריסה של גרסה חדשה.
נכנסים לכרטיסייה Networking.
מבטלים את הסימון של Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).
לוחצים על פריסה.
כדי לוודא שהשירות כבר לא נמצא ברשת ה-VPC, לוחצים על הכרטיסייה Networking. הרשת ותת-הרשת לא מופיעות יותר בכרטיס VPC.
כדי להסיר רק את תגי הרשת ולהשאיר את השירות מחובר לרשת ה-VPC:
לוחצים על השירות שמכיל את תגי הרשת שרוצים להסיר, ואז לוחצים על עריכה ופריסה של עדכון חדש.
נכנסים לכרטיסייה Networking.
מוחקים את השמות של תגי הרשת שרוצים לבטל את השיוך שלהם לשירות.
לוחצים על פריסה.
gcloud
כדי להסיר את השירות מרשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network
כדי להסיר רק את תגי הרשת ולהשאיר את השירות מחובר לרשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network-tags
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_NAME: השם של שירות Cloud Run.
- REGION: האזור של שירות Cloud Run.
YAML
כדי להסיר את השירות מרשת ה-VPC:
מורידים את הגדרות ה-YAML של השירות:
gcloud run services describe SERVICE_NAME --format export > service.yaml
צריך להסיר את התוכן הבא מהקובץ
service.yaml:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
כאשר:
- NETWORK: השם של רשת ה-VPC
- SUBNET: השם של רשת המשנה.
- אופציונלי: NETWORK_TAG_NAMES: השמות של תגי הרשת אם שייכתם אותם לשירות.
מריצים את הפקודה הבאה כדי לפרוס את עדכון השירות:
gcloud run services replace service.yaml
כדי להסיר רק את תגי הרשת ולהשאיר את השירות מחובר לרשת ה-VPC:
מורידים את הגדרות ה-YAML של השירות:
gcloud run services describe SERVICE_NAME --format export > service.yaml
מסירים את המשתנה
tagsמהתוכן בקובץservice.yaml, ומשאירים את המשתניםnetworkו-subnetworkבמקומם, כמו בדוגמה הבאה:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
כאשר:
- NETWORK: השם של רשת ה-VPC
- SUBNET: השם של רשת המשנה.
מריצים את הפקודה הבאה כדי לפרוס את עדכון השירות:
gcloud run services replace service.yaml
ניתוק של משרה
המסוף
כדי להסיר את העבודה מרשת ה-VPC:
לוחצים על המשימה שרוצים להסיר ואז על עריכה ופריסה של גרסה חדשה.
לוחצים על הכרטיסייה Connections (קישורים).
מבטלים את הסימון של Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).
לוחצים על עדכון.
כדי לוודא שהעבודה כבר לא ברשת ה-VPC, לוחצים על הכרטיסייה Configuration. הרשת ותת-הרשת לא מופיעות יותר בכרטיס VPC.
כדי להסיר רק את תגי הרשת ולהשאיר את המשימה מחוברת לרשת ה-VPC:
לוחצים על המשימה שמכילה את תגי הרשת שרוצים להסיר, ואז לוחצים על Edit and deploy new revision (עריכה ופריסה של גרסה חדשה).
לוחצים על הכרטיסייה Connections (קישורים).
מוחקים את השמות של תגי הרשת שאתם לא רוצים יותר לשייך למשרה.
לוחצים על עדכון.
gcloud
כדי להסיר את העבודה מרשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network
כדי להסיר רק את תגי הרשת ולהשאיר את העבודה מחוברת לרשת ה-VPC, מריצים את הפקודה הבאה:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network-tags
מחליפים את מה שכתוב בשדות הבאים:
- JOB_NAME: השם של המשימה ב-Cloud Run.
- REGION: האזור של המשימה ב-Cloud Run.
YAML
כדי להסיר את העבודה מרשת ה-VPC:
מורידים את הגדרות ה-YAML של המשימה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
צריך להסיר את התוכן הבא מהקובץ
job.yaml:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
מחליפים את מה שכתוב בשדות הבאים:
- NETWORK: השם של רשת ה-VPC
- SUBNET: השם של רשת המשנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת אם שייכתם אותם למשרה.
מעדכנים את העבודה על ידי הרצת הפקודה הבאה:
gcloud run jobs replace job.yaml
כדי להסיר רק את תגי הרשת ולהשאיר את המשימה מחוברת לרשת ה-VPC:
מורידים את הגדרות ה-YAML של המשימה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
מסירים את המשתנה
tagsמהתוכן בקובץjob.yaml, ומשאירים את המשתניםnetworkו-subnetworkבמקומם, כמו בדוגמה הבאה:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
מחליפים את מה שכתוב בשדות הבאים:
- NETWORK: השם של רשת ה-VPC
- SUBNET: השם של רשת המשנה.
מעדכנים את העבודה על ידי הרצת הפקודה הבאה:
gcloud run jobs replace job.yaml
פתרון בעיות
אי אפשר למחוק רשת משנה
כדי למחוק רשת משנה, קודם צריך למחוק או לפרוס מחדש את כל המשאבים שמשתמשים בה. אם Cloud Run משתמש ברשת משנה, צריך לנתק את השירות או את הג'וב של Cloud Run מרשת ה-VPC או להעביר אותו לרשת משנה אחרת לפני שמוחקים את רשת המשנה.
נגמרות כתובות ה-IPv4 בתת-הרשת של יציאה ישירה מ-VPC
השגיאה הבאה מתרחשת כשמנסים לפרוס:
Instance failed to start because of insufficient free IP addresses in the subnetwork SUBNET_ID when attempting to create an address in the subnetwork. Please consider moving to a subnetwork with more available IP addresses.
אם נגמרות כתובות ה-IPv4 ברשת המשנה של רשת ה-VPC, המידע הזה נרשם ביומן על ידי Cloud Logging. במצב כזה, Cloud Run לא יכול להפעיל עוד מופעים של שירותים או משימות עד שיהיו זמינות עוד כתובות IPv4.
כדי לפתור את הבעיה, צריך לפעול לפי האסטרטגיות לטיפול במיצוי כתובות IP.
הצגת כתובות IP שהוקצו
אי אפשר למחוק כתובת שמורה באופן ידני. השגיאה הבאה מתרחשת כשמנסים למחוק כתובת IP שהוקצתה ל-Cloud Run:
The address resource 'ADDRESS_NAME' is already being used by '//serverless.googleapis.com/projects/PROJECT_ID/locations/REGION/addressReservations/ADDRESS_NAME'
כדי לראות אילו כתובות IP הוקצו ל-Cloud Run, נכנסים לדף כתובות ה-IP במסוףCloud de Confiance ומחפשים כתובות שבהן הערך בעמודה בשימוש על ידי הוא Serverless.
לחלופין, אפשר להריץ את הפקודה הבאה מ-Google Cloud CLI:
gcloud compute addresses list --filter="purpose=SERVERLESS"
בעיות עם MTU מותאם אישית
אם נתקלתם בבעיות עם MTU בהתאמה אישית, ודאו שאתם משתמשים בהגדרת ברירת המחדל של MTU ל-Cloud Run.