יציאה ישירה מרשת VPC עם רשת VPC משותפת

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

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

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

מגבלות

ההגבלות הבאות חלות על שירותים ומשימות ב-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 יש הרשאות מספיקות לשימוש בתת-הרשת.

  1. כדי לגשת לרשת ה-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 המשותף.
  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 ממספר המופעים. כשמבצעים הקטנה של מספר העותקים של גרסה, כתובות ה-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 עבור רשת המשנה:

  • 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.

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

המסוף

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

    כניסה ל-Cloud Run

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

  3. אם אתם מגדירים שירות חדש, ממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך, ואז לוחצים על Container(s), Volumes, Networking, Security (מאגרים, אמצעי אחסון, רשתות, אבטחה) כדי להרחיב את דף הגדרות השירות.

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

  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 המשותפת, לוחצים על השירות ואז על הכרטיסייה 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"]
          }
        }
      }
    }
    

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

יצירת משרה

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

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

  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

הגדרת רשת משנה עם כתובות IPv4 ו-IPv6

כדי להוסיף רשת משנה עם תמיכה כפולה עם טווח 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. לוחצים על הג'וב שמכיל את תגי הרשת שרוצים להסיר, ואז לוחצים על Edit and deploy new revision (עריכה ופריסה של גרסה חדשה).

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

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