תעבורת נתונים יוצאת (egress) ישירה של VPC עם רשת VPC משותפת

אתם יכולים להפעיל את שירות Cloud Run או את משימת Cloud Run כדי לשלוח תנועה לרשת VPC משותפת באמצעות תעבורת נתונים יוצאת (egress) ישירה של VPC, בלי שנדרש מחבר Serverless VPC Access.

בדף הזה מוסבר איך להגדיר את הרשאות IAM של Cloud Run כדי להשתמש בתת-הרשת של רשת ה-VPC המשותפת, ואז להציב את השירות או את העבודה בתת-הרשת המשותפת.

לפני שמתחילים

מגבלות

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

  • יכול להיות שתיתקלו בעיכובים של דקה או יותר בהקמת החיבור בהפעלה של מופע כשמשתמשים ב-Direct VPC egress. מומלץ להגדיר בקשה לבדיקת תקינות (probe) של הפעלת HTTP שבודקת חיבור ליעד תעבורת נתונים יוצאת (egress) שבו האפליקציה משתמשת לפני שהאפליקציה מקבלת בקשות. בבדיקה הזו של קישוריות יציאה צריך להטמיע ניסיונות חוזרים, או להגדיר את בדיקת ההפעלה עם הגדרות מתאימות של תקופה וסף שיפעלו כניסיון חוזר.
  • יכול להיות שיהיו ניתוקים במשימות Cloud Run שפועלות יותר משעה. הן יכולות להתרחש במהלך אירועי תחזוקה שמעבירים את העבודה ממכונה אחת למכונה אחרת. מאגר התגים מקבל אות SIGTSTP 10 שניות לפני האירוע ואות SIGCONT אחרי האירוע. אחרי שהמאגר מקבל את האות SIGCONT, מנסים שוב להתחבר.
  • כשמשתמשים ב-Direct VPC egress, יכול להיות שיהיו עיכובים של 30 שניות או יותר בהפעלה במצב התחלתי (cold start) של מכונה ב-Cloud NAT. כדי לשפר את ביצועי ההפעלה, מומלץ להשתמש במחברי חיבור לרשת (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 שירותים ומשימות ב-Cloud Run לא תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC. מאגרי עובדים תומכים גם ב-Direct VPC egress וגם ב-Direct VPC ingress.
  • למרות שמאגרי עובדים תומכים ב-Direct VPC ingress, אי אפשר להשתמש בתגי רשת כדי להגדיר את היעד של כלל חומת אש לתעבורת נתונים נכנסת.
  • תעבורת נתונים נכנסת (ingress) למאגרי עובדים נתמכת רק באמצעות Direct VPC, ולא באמצעות מחברים של חיבור לרשת (VPC) מאפליקציית serverless. מחברים לא תומכים בכניסה.

אין תמיכה בפריטים הבאים ביציאה ישירה מ-VPC:

  • ב-VPC Flow Logs לא מופיע השם של הגרסה ב-Cloud Run.
  • ניהול כללי חומת אש
  • רפליקציה של חבילות נתונים
  • Network tags או service identity בכללי חומת האש לתעבורת נתונים נכנסת.
  • כללי חומת אש לא יכולים להשתמש בתגי מנהל המשאבים שמצורפים לעומסי עבודה של Cloud Run.

הגדרת הרשאות IAM

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

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

    • משתמש ברשת Compute ‏ (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: מספר פרויקט השירות של Shared 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: מספר פרויקט השירות של Shared VPC שבו אתם פורסים את שירות או את המשימה של Cloud Run.
      • HOST_PROJECT_ID: מזהה פרויקט המארח של ה-VPC המשותף.
  2. לסוכן השירות של 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 ממספר המופעים. כשמצמצמים את קנה המידה של גרסה, 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 עבור רשת המשנה:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • Class E
    • 240.0.0.0/4

פריסת שירות

תעבורת נתונים יוצאת (egress) ישירה של VPC מאפשרת לשירות Cloud Run לשלוח תנועה לרשת VPC משותפת בלי מחבר Serverless VPC Access. עלויות הרשת מתרחבות לאפס בדיוק כמו השירות עצמו. אפשר גם להוסיף תגים לרשת ישירות לגרסאות של שירות Cloud Run כדי להגביר את רמת האבטחה של הרשת, למשל כדי להחיל כללי חומת אש של VPC.

אפשר להגדיר Direct VPC egress עם שירות באמצעותGoogle Cloud המסוף, Google Cloud CLI או YAML.

המסוף

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

    כניסה ל-Cloud Run

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

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

  4. נכנסים לכרטיסייה Networking.

  5. לוחצים על Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).

  6. לוחצים על שליחת תנועה ישירות ל-VPC.

  7. בוחרים באפשרות רשתות ששותפו איתי.

  8. בשדה Network (רשת), בוחרים את רשת ה-VPC המשותף שאליה רוצים להפנות את תעבורת הנתונים.

  9. בשדה רשת משנה, בוחרים את רשת המשנה שדרכה השירות מקבל כתובות IP.

  10. אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לשירותים. תגי רשת מצוינים ברמת הגרסה. לכל גרסה של שירות יכולים להיות תגי רשת שונים, כמו network-tag-2.

  11. בקטע Traffic routing (ניתוב תנועה), בוחרים באחת מהאפשרויות הבאות:

    • הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
    • העברת כל התנועה ל-VPC כדי לשלוח את כל התנועה היוצאת דרך רשת ה-VPC המשותפת.
  12. לוחצים על יצירה או על פריסה.

  13. כדי לוודא שהשירות שלכם נמצא ברשת ה-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

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

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

    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 של קובץ אימג' של קונטיינר השירות.
  3. יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

Terraform

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

  1. מוסיפים לקובץ main.tf את הנתונים הבאים:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

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

יצירת משרה

תעבורת נתונים יוצאת (egress) ישירה של VPC מאפשרת למשימת Cloud Run לשלוח תעבורה לרשת VPC משותפת בלי מחבר של Serverless VPC Access. אפשר גם להוסיף תגי רשת ישירות למשימות של Cloud Run כדי להגדיר אבטחת רשת ברמת גרנולריות גבוהה יותר, למשל להחיל כללי חומת אש של VPC.

אפשר להגדיר Direct VPC egress באמצעות משימה באמצעותGoogle Cloud מסוף Google Cloud,‏ Google Cloud CLI או YAML.

המסוף

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

    כניסה ל-Cloud Run

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

  3. לוחצים על Container, Variables & Secrets, Connections, Security (מאגר, משתנים וסודות, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.

  4. לוחצים על הכרטיסייה Connections (קישורים).

  5. לוחצים על Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).

  6. לוחצים על שליחת תנועה ישירות ל-VPC.

  7. בוחרים באפשרות רשתות ששותפו איתי.

  8. בשדה Network (רשת), בוחרים את רשת ה-VPC המשותף שאליה רוצים להפנות את תעבורת הנתונים.

  9. בשדה Subnet (רשת משנה), בוחרים את רשת המשנה שממנה המשימה מקבלת כתובות IP.

  10. אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך למשרה. לגבי עבודות, תגי הרשת מצוינים ברמת ההרצה. לכל הרצה של עבודה יכולים להיות תגי רשת שונים, כמו network-tag-2.

  11. בקטע Traffic routing (ניתוב תנועה), בוחרים באחת מהאפשרויות הבאות:

    • הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC המשותפת.
    • ניתוב כל התנועה אל ה-VPC כדי לשלוח את כל התנועה היוצאת דרך רשת ה-VPC המשותפת.
  12. לוחצים על יצירה או על עדכון.

  13. כדי לוודא שהעבודה שלכם נמצאת ברשת ה-VPC המשותפת, לוחצים על העבודה ואז על הכרטיסייה הגדרות. הרשת ורשת המשנה מופיעות בכרטיס 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

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מעדכנים את המאפיינים הבאים:

    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 של קובץ האימג' בקונטיינר של העבודה.
  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

הגדרה של רשת משנה עם פרוטוקול כפול

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

ניתוק שירות

המסוף

  • כדי להסיר את השירות מרשת ה-VPC המשותפת:

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

      כניסה ל-Cloud Run

    2. לוחצים על השירות שרוצים להסיר ואז על עריכה ופריסה של גרסה חדשה.

    3. נכנסים לכרטיסייה Networking.

    4. מבטלים את הסימון של Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).

    5. לוחצים על פריסה.

    6. כדי לוודא שהשירות כבר לא נמצא ברשת ה-VPC המשותפת, לוחצים על הכרטיסייה Networking (רשת). הרשת ותת-הרשת כבר לא מופיעות בכרטיס VPC.

  • כדי להסיר רק את תגי הרשת ולהשאיר את השירות מחובר לרשת ה-VPC המשותפת:

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

    2. נכנסים לכרטיסייה Networking.

    3. מוחקים את השמות של תגי הרשת שרוצים לבטל את השיוך שלהם לשירות.

    4. לוחצים על פריסה.

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 המשותפת:

    1. מורידים את הגדרות ה-YAML של השירות:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. צריך להסיר את התוכן הבא מהקובץ service.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      כאשר:

      • NETWORK: שם המשאב המוגדר במלואו של רשת ה-VPC המשותפת.
      • SUBNET: שם המשאב המוגדר במלואו של רשת המשנה.
      • אופציונלי: NETWORK_TAG_NAMES: השמות של תגי הרשת אם שייכתם אותם לשירות.
    3. מעדכנים את השירות באמצעות הפקודה הבאה:

      gcloud run services replace service.yaml
  • כדי להסיר רק את תגי הרשת ולהשאיר את השירות מחובר לרשת ה-VPC המשותפת:

    1. מורידים את הגדרות ה-YAML של השירות:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. מסירים את המשתנה tags מהתוכן בקובץ service.yaml, ומשאירים את המשתנים network ו-subnetwork במקומם, כמו בדוגמה הבאה:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

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

      • NETWORK: שם המשאב המוגדר במלואו של רשת ה-VPC המשותפת.
      • SUBNET: שם המשאב המוגדר במלואו של רשת המשנה.
    3. מעדכנים את השירות באמצעות הפקודה הבאה:

      gcloud run services replace service.yaml

ניתוק של משרה

המסוף

  • כדי להסיר את העבודה מרשת ה-VPC המשותפת:

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

      כניסה ל-Cloud Run

    2. לוחצים על המשימה שרוצים להסיר ואז על עריכה ופריסה של גרסה חדשה.

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

    4. מבטלים את הסימון של Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).

    5. לוחצים על עדכון.

    6. כדי לוודא שהעבודה כבר לא נמצאת ברשת ה-VPC המשותפת, לוחצים על הכרטיסייה Configuration. הרשת ותת-הרשת לא מופיעות יותר בכרטיס VPC.

  • כדי להסיר רק את תגי הרשת ולהשאיר את העבודה מחוברת לרשת ה-VPC המשותפת:

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

    2. לוחצים על הכרטיסייה Connections (קישורים).

    3. מוחקים את השמות של תגי הרשת שאתם לא רוצים יותר לשייך למשרה.

    4. לוחצים על עדכון.

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 המשותפת:

    1. מורידים את הגדרות ה-YAML של המשימה:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. צריך להסיר את התוכן הבא מהקובץ job.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      כאשר:

      • NETWORK: שם המשאב המוגדר במלואו של רשת ה-VPC המשותפת.
      • SUBNET: שם המשאב המוגדר במלואו של רשת המשנה.
      • אופציונלי: NETWORK_TAG_NAMES: שמות התגים של הרשת אם שייכתם אותם למשרה.
    3. מעדכנים את העבודה באמצעות הפקודה הבאה:

      gcloud run jobs replace job.yaml
  • כדי להסיר רק את תגי הרשת ולהשאיר את העבודה מחוברת לרשת ה-VPC המשותפת:

    1. מורידים את הגדרות ה-YAML של המשימה:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. צריך להסיר את התוכן הבא מהקובץ job.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      כאשר:

      • NETWORK: שם המשאב המוגדר במלואו של רשת ה-VPC המשותפת.
      • SUBNET: שם המשאב המוגדר במלואו של רשת המשנה.
      • אופציונלי: NETWORK_TAG_NAMES: שמות התגים של הרשת אם שייכתם אותם למשרה.
    3. מעדכנים את העבודה באמצעות הפקודה הבאה:

      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 המשותף.

נגמרות כתובות ה-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, עוברים אל הדף IP addresses במסוף Google Cloud או מריצים את הפקודה הבאה מ-Google Cloud CLI:

gcloud compute addresses list