אתם יכולים להפעיל את שירות Cloud Run או את המשימה כדי לשלוח תנועה לרשת VPC משותפת באמצעות יציאה ישירה מרשת ה-VPC, בלי שנדרש מחבר של Serverless VPC Access.
בדף הזה מוסבר איך להגדיר את הרשאות ה-IAM של Cloud Run כדי להשתמש בתת-הרשת של רשת ה-VPC המשותפת, ואז להציב את השירות או את העבודה בתת-הרשת המשותפת.
לפני שמתחילים
בודקים את הקטעים הבאים בנושא הגדרת כתובות IP:
הקצאת כתובות IP כדי לקבל הנחיות להקצאת כתובות IP מתת-הרשת.
אסטרטגיות למיצוי כתובות IP לשימוש בטווחי כתובות IP חלופיים.
מגבלות
ההגבלות הבאות חלות על שירותים ומשימות ב-Cloud Run :
- יכול להיות שתיתקלו בעיכובים של דקה או יותר בהקמת החיבור בהפעלה של מופע כשמשתמשים בתעבורת נתונים יוצאת ישירה מ-VPC. מומלץ להגדיר בקשה לבדיקת תקינות (probe) של HTTP שבודקת חיבור ליעד תעבורת נתונים יוצאת (egress) שבו האפליקציה משתמשת לפני שהאפליקציה מקבלת בקשות. בבדיקה הזו של קישוריות יציאה צריך להטמיע ניסיונות חוזרים, או להגדיר את בדיקת המוכנות להפעלה עם הגדרות מתאימות של תקופה וסף שיפעלו כניסיון חוזר.
- Cloud Run תומך ברוחב פס של עד 1 Gbps לכל מופע. חריגה מהסכום הזה תגרום להגבלת הביצועים.
מכסת השימוש ב-Cloud Run מגבילה את המספר המקסימלי של מופעים שאפשר להגדיר לשימוש ביציאה ישירה מ-VPC. המספר המקסימלי מוגדר לכל עדכון (revision) של Cloud Run או לכל הפעלה של משימה. כדי להגדיל את המכסות שמוגדרות כברירת מחדל, אפשר לעיין במאמר בנושא הגדלת מכסות.
- שירותים ומשימות ב-Cloud Run שירותים, משימות ומאגרי עובדים עלולים לחוות ניתוקים במהלך אירועי תחזוקה של תשתית הרשת. מומלץ להשתמש בספריות לקוח שיכולות לטפל באיפוסים מדי פעם של החיבור.
- Network Intelligence Center תומך רק בבדיקות קישוריות ובFlow Analyzer לטווחים של רשתות משנה IPv4 ו-IPv6.
- שירותים ומשימות ב-Cloud Run שירותים ומשימות ב-Cloud Run לא תומכים בתעבורת נתונים נכנסת (ingress) ישירה מ-VPC. מאגרי עובדים תומכים גם ביציאה ישירה מ-VPC וגם בכניסה ישירה ל-VPC.
- גם אם מאגרי העובדים תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC, אי אפשר להשתמש בתגי רשת כדי להגדיר את היעד של כלל חומת אש לתעבורת נתונים נכנסת.
אין תמיכה בפריטים הבאים ביציאה ישירה של VPC:
- ב-VPC Flow Logs לא מופיע השם של הגרסה ב-Cloud Run.
- ניהול כללי חומת אש
- רפליקציה של חבילות נתונים
- Network tags או service identity בכללי חומת האש לתעבורת נתונים נכנסת.
- כללי חומת אש לא יכולים להשתמש בתגי מנהל המשאבים שמצורפים לעומסי עבודה של Cloud Run.
- יכול להיות שיהיו ניתוקים בחיבור למשימות ב-Cloud Run שפועלות יותר משעה. הן יכולות להתרחש במהלך אירועי תחזוקה שמעבירים את העבודה ממכונה אחת למכונה אחרת. מאגר התגים מקבל אות
SIGTSTP 10 שניות לפני האירוע ואותSIGCONTאחרי האירוע. אחרי שהמאגר מקבל את האותSIGCONT, מנסים שוב להתחבר.
הגדרת הרשאות IAM
כדי ש-Cloud Run בפרויקט שירות של VPC משותף יוכל לגשת לרשת VPC משותפת, קודם צריך לוודא שלסוכן השירות של Cloud Run יש הרשאות מספיקות לשימוש בתת-הרשת.
כדי לגשת לרשת ה-VPC המשותפת, צריך להוסיף את אחד מהתפקידים הבאים כדי להעניק הרשאות מספיקות לסוכן השירות של Cloud Run:
Compute Network User (
roles/compute.networkUser) בפרויקט המארח של ה-VPC המשותף. ברשתות משנה עם IPv6 חיצוני נדרש גם התפקיד אדמין של כתובות IP ציבוריות ב-Compute (roles/compute.publicIpAdmin).לדוגמה, כדי להעניק את התפקיד Compute Network User, מריצים את הפקודה הבאה:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
מחליפים את מה שכתוב בשדות הבאים:
- HOST_PROJECT_ID: מזהה פרויקט המארח של ה-VPC המשותף.
- SERVICE_PROJECT_NUMBER: מספר פרויקט השירות של ה-VPC המשותף שבו אתם פורסים את שירות או את המשימה של Cloud Run.
התפקיד Compute Network Viewer (
compute.networkViewer) בפרויקט המארח של ה-VPC המשותף, והתפקיד Compute Network User (compute.networkUser) ברשת המשנה של ה-VPC המשותף. ברשתות משנה עם כתובות IPv6 חיצוניות נדרש גם התפקיד אדמין של כתובות IP ציבוריות ב-Compute (roles/compute.publicIpAdmin).לדוגמה, כדי להקצות את התפקיד Compute Network User ברשת המשנה, מריצים את הפקודה הבאה:
gcloud compute networks subnets add-iam-policy-binding SUBNET_NAME \ --region REGION \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role "roles/compute.networkUser" \ --project HOST_PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
- SUBNET_NAME: השם המוגדר במלואו של המשאב של רשת המשנה שבה רוצים להריץ את שירותי Cloud Run.
- REGION: האזור של שירות Cloud Run, שחייב להיות זהה לאזור של רשת המשנה.
- SERVICE_PROJECT_NUMBER: מספר פרויקט השירות של ה-VPC המשותף שבו אתם פורסים את שירות או את המשימה של Cloud Run.
- HOST_PROJECT_ID: מזהה פרויקט המארח של ה-VPC המשותף.
לסוכן השירות של Cloud Run צריך להיות מוקצה התפקיד Cloud Run Service Agent בפרויקט Cloud Run. כדי לוודא שהתפקיד לא הוסר באופן ידני, מריצים את הפקודה הבאה:
gcloud projects get-iam-policy SERVICE_PROJECT_ID \ --flatten bindings \ --filter "bindings.role:roles/run.serviceAgent"
מחליפים את SERVICE_PROJECT_ID במזהה הפרויקט של השירות או המשימה ב-Cloud Run.
כדי לקבל שליטה מדויקת יותר, אפשר לוודא שלסוכן השירות של Cloud Run יש את ההרשאות הבאות:
compute.networks.getבפרויקט המארח של ה-VPC המשותף-
compute.subnetworks.getבפרויקט המארח או ברשת המשנה הספציפית -
compute.subnetworks.useבפרויקט המארח או ברשת המשנה הספציפית -
compute.addresses.getבפרויקט השירות של ה-VPC המשותף -
compute.addresses.listבפרויקט השירות של ה-VPC המשותף -
compute.addresses.createבפרויקט השירות של ה-VPC המשותף (נדרש רק עבור תת-רשתות עם מחסנית כפולה ו-IPv6 חיצוני) -
compute.addresses.deleteבפרויקט השירות של ה-VPC המשותף (נדרש רק עבור תת-רשתות עם מחסנית כפולה ו-IPv6 חיצוני) -
compute.addresses.createInternalבפרויקט השירות של ה-VPC המשותף -
compute.addresses.deleteInternalבפרויקט השירות של ה-VPC המשותף -
compute.regionOperations.getבפרויקט השירות של ה-VPC המשותף
הקצאת כתובות IP
כדי למקם את שירות Cloud Run ברשת 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 ממספר המופעים. כשמבצעים הקטנה של מספר העותקים של גרסה, כתובות ה-IP שלה נשמרות ב-Cloud Run למשך עד 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 עבור רשת המשנה:
פריסת שירות
תעבורת נתונים יוצאת (egress) ישירה מ-VPC מאפשרת לשירות Cloud Run לשלוח תנועה לרשת VPC משותפת בלי מחבר של Serverless VPC Access. העלויות של הרשת מתרחבות לאפס בדיוק כמו השירות עצמו. אפשר גם להוסיף תגים לרשת ישירות לגרסאות של שירות Cloud Run כדי להגביר את רמת האבטחה של הרשת, למשל כדי להחיל כללי חומת אש של VPC.
אפשר להגדיר יציאה ישירה מ-VPC עם שירות באמצעותGoogle Cloud המסוף, Google Cloud CLI או YAML.
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run:
בתפריט הניווט של Cloud Run, בוחרים באפשרות Services (שירותים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר שירות חדש. אם אתם מגדירים ומפעילים שירות קיים, לוחצים על השירות ואז על עריכה והפעלה של עדכון חדש.
אם אתם מגדירים שירות חדש, ממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך, ואז לוחצים על Container(s), Volumes, Networking, Security (מאגרים, אמצעי אחסון, רשתות, אבטחה) כדי להרחיב את דף הגדרות השירות.
נכנסים לכרטיסייה Networking.
לוחצים על Connect to a VPC for outbound traffic (קישור ל-VPC לתעבורה יוצאת).
לוחצים על שליחת תנועה ישירות ל-VPC.
בוחרים באפשרות רשתות ששותפו איתי.
בשדה Network (רשת), בוחרים את רשת ה-VPC המשותף שאליה רוצים להפנות את התנועה.
בשדה Subnet (רשת משנה), בוחרים את רשת המשנה שבה השירות מקבל כתובות IP.
אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לשירותים. תגי רשת מצוינים ברמת הגרסה. לכל גרסה של שירות יכולים להיות תגי רשת שונים, כמו
network-tag-2.בקטע Traffic routing (ניתוב תנועה), בוחרים באחת מהאפשרויות הבאות:
- הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
- ניתוב כל התנועה אל ה-VPC כדי לשלוח את כל התנועה היוצאת דרך רשת ה-VPC המשותפת.
לוחצים על יצירה או על פריסה.
כדי לוודא שהשירות שלכם נמצא ברשת ה-VPC המשותפת, לוחצים על השירות ואז על הכרטיסייה Networking (רשת). הרשת ותת-הרשת מופיעות בכרטיס VPC.
עכשיו אפשר לשלוח בקשות משירות Cloud Run לכל משאב ברשת ה-VPC המשותפת, בהתאם לכללי חומת האש.
gcloud
כדי למקם את השירות בתת-הרשת המשותפת, מריצים את הפקודה הבאה ומציינים את שמות המשאבים שמוגדרים במלואם עבור רשת ה-VPC המשותפת ותת-הרשת:
gcloud run deploy SERVICE_NAME \ --image IMAGE_URL \ --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --network-tags NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region REGION \ --max-instances MAX
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_NAME: השם של שירות Cloud Run.
- IMAGE_URL: כתובת ה-URL של התמונה של השירות.
- HOST_PROJECT_ID: מזהה הפרויקט של ה-VPC המשותף.
- VPC_NETWORK: שם המשאב המוגדר במלואו של רשת ה-VPC המשותפת.
- REGION: האזור של שירות Cloud Run, שחייב להיות זהה לאזור של רשת המשנה.
- SUBNET_NAME: שם המשאב המוגדר במלואו של רשת המשנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת שרוצים לשייך לשירות, מופרדים בפסיקים. בשירותים, תגי הרשת מצוינים ברמת השינוי. לכל גרסה של שירות יכולים להיות תגי רשת שונים, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שולח את כל התעבורה היוצאת דרך רשת ה-VPC המשותפת. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
-
- MAX: המספר המקסימלי של מופעים לשימוש ברשת VPC משותפת. המספר המקסימלי של מופעים שמותר להשתמש בהם בשירותים הוא 100.
פרטים נוספים וארגומנטים אופציונליים מופיעים במאמר gcloud.
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 המשותפת.
- SUBNET_NAME בשם המשאב שמוגדר במלואו של רשת המשנה.
- אופציונלי: 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 מאפשרת למשימה ב-Cloud Run לשלוח תעבורה לרשת VPC משותפת בלי מחבר של Serverless VPC Access. אפשר גם להוסיף תגי רשת ישירות למשימות של Cloud Run כדי להגדיר אבטחת רשת ברמה מפורטת יותר, למשל להחיל כללי חומת אש של VPC.
אפשר להגדיר יציאה ישירה מ-VPC באמצעות עבודה באמצעותGoogle Cloud מסוף Google Cloud, Google Cloud CLI או YAML.
המסוף
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
אם אתם מגדירים משימה חדשה, לוחצים על Deploy container (פריסת קונטיינר) כדי למלא את הטופס הראשוני Create job (יצירת משימה) לפי הצורך. אם אתם מגדירים משימה קיימת, לוחצים על הכרטיסייה משימות, בוחרים משימה ואז לוחצים על עריכה.
לוחצים על Container, Variables & Secrets, Connections, Security (מאגר, משתנים וסודות, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.
לוחצים על הכרטיסייה Connections (קישורים).
לוחצים על Connect to a VPC for outbound traffic (קישור ל-VPC לתעבורה יוצאת).
לוחצים על שליחת תנועה ישירות ל-VPC.
בוחרים באפשרות רשתות ששותפו איתי.
בשדה Network (רשת), בוחרים את רשת ה-VPC המשותף שאליה רוצים להפנות את התנועה.
בשדה Subnet (רשת משנה), בוחרים את רשת המשנה שממנה המשימה מקבלת כתובות IP.
אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך למשרה. במקרה של עבודות, תגי הרשת מצוינים ברמת הביצוע. לכל הפעלה של עבודה יכולים להיות תגים שונים של רשת, כמו
network-tag-2.בקטע Traffic routing (ניתוב תנועה), בוחרים באחת מהאפשרויות הבאות:
- הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
- ניתוב כל התנועה אל ה-VPC כדי לשלוח את כל התנועה היוצאת דרך רשת ה-VPC המשותפת.
לוחצים על יצירה או על עדכון.
כדי לוודא שהעבודה נמצאת ברשת ה-VPC המשותפת, לוחצים על העבודה ואז על הכרטיסייה Configuration (הגדרה). הרשת ורשת המשנה מופיעות בכרטיס VPC.
עכשיו אפשר להריץ את העבודה ב-Cloud Run ולשלוח בקשות מהעבודה לכל משאב ברשת ה-VPC המשותפת, בהתאם לכללי חומת האש.
gcloud
כדי להציב את העבודה ברשת המשנה המשותפת, מריצים את הפקודה הבאה ומציינים את שמות המשאבים שמוגדרים במלואם עבור רשת ה-VPC המשותפת ורשת המשנה:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL \ --network projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --network-tags NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region REGION \
מחליפים את מה שכתוב בשדות הבאים:
- JOB_NAME: השם של המשימה ב-Cloud Run.
- IMAGE_URL: כתובת ה-URL של התמונה של המשרה.
- HOST_PROJECT_ID: מזהה הפרויקט המארח של ה-VPC המשותף.
- VPC_NETWORK: שם המשאב המוגדר במלואו של רשת ה-VPC המשותפת.
- REGION: האזור של המשימה ב-Cloud Run, שחייב להיות זהה לאזור של רשת המשנה.
- SUBNET_NAME: שם המשאב המוגדר במלואו של רשת המשנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות המופרדים בפסיקים של תגי הרשת שרוצים לשייך למשרה. לכל הפעלה של עבודה יכולים להיות תגים שונים של רשתות, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שולח את כל התעבורה היוצאת דרך רשת ה-VPC המשותפת. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
-
פרטים נוספים וארגומנטים אופציונליים מופיעים במאמר gcloud.
YAML
אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud run jobs describe JOB_NAME --format export > job.yaml
מעדכנים את המאפיינים הבאים:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME annotations: run.googleapis.com/launch-stage: BETA 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 המשותפת.
- SUBNET בשם המשאב שמוגדר במלואו של רשת המשנה.
- אופציונלי: NETWORK_TAG_NAMES עם השמות של תגי הרשת שרוצים לשייך למשרה. במקרה של עבודות, תגי הרשת מצוינים ברמת הביצוע. לכל הפעלה של עבודה יכולים להיות תגים שונים של רשת, כמו
network-tag-2. - EGRESS_SETTING עם ערך של הגדרת יציאה:
-
all-traffic: שולח את כל התעבורה היוצאת דרך רשת ה-VPC המשותפת. -
private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
-
- IMAGE בכתובת ה-URL של קובץ אימג' של קונטיינר של המשימה.
יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:
gcloud run jobs replace job.yaml
הגדרת רשת משנה עם כתובות IPv4 ו-IPv6
כדי להוסיף רשת משנה עם תמיכה כפולה עם טווח IPv6 למשאב Cloud Run, אפשר לעיין במאמר הגדרת רשת משנה עם תמיכה כפולה.
ניתוק שירות
המסוף
כדי להסיר את השירות מרשת ה-VPC המשותפת:
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
לוחצים על השירות שרוצים להסיר ואז על עריכה ופריסה של גרסה חדשה.
נכנסים לכרטיסייה 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 המשותפת:
נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :
לוחצים על המשימה שרוצים להסיר ואז על עריכה ופריסה של גרסה חדשה.
לוחצים על הכרטיסייה Configuration.
מבטלים את הסימון של 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
צריך להסיר את התוכן הבא מקובץ
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
פתרון בעיות
לא ניתן למחוק רשת משנה
כדי למחוק רשת משנה, צריך קודם למחוק את כל המשאבים שמשתמשים בה. אם Cloud Run משתמש ברשת משנה, צריך לנתק את Cloud Run מרשת ה-VPC המשותפת או להעביר אותו לרשת משנה אחרת לפני שמוחקים את רשת המשנה.
אי אפשר לנתק רשת VPC משותפת
כדי לנתק את רשת ה-VPC המשותפת בפרויקט המארח, צריך לפעול לפי השלבים לביטול ההקצאה של VPC משותף ולוודא שניתקתם את כל השירותים או העבודות של Cloud Run מרשת ה-VPC המשותפת.
כדי לראות אילו משאבי Cloud Run משתמשים ברשת ה-VPC המשותפת, מריצים את הפקודה הבאה:
gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
מחליפים את HOST_PROJECT_ID במזהה של הפרויקט המארח של ה-VPC המשותף.
תת-הרשת של יציאת הנתונים הישירה מ-VPC לא מכילה יותר כתובות IPv4
השגיאה הבאה מתרחשת כשמנסים לפרוס:
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, עוברים אל הדף 'כתובות IP' במסוף Google Cloud או מריצים את הפקודה הבאה מ-Google Cloud CLI:
gcloud compute addresses list