VPC ישיר עם רשת VPC

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

שירותים ומשימות ב-Cloud Run לא תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC. כדי להגדיר תעבורת נתונים נכנסת (ingress) ישירה של VPC רק למאגרי עובדים, אפשר לעיין במאמר תעבורת נתונים נכנסת (ingress) של מאגרי עובדים ב-Cloud Run.

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

מגבלות

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

  • יכול להיות שתיתקלו בעיכובים של דקה או יותר בהקמת החיבור בהפעלה של מופע כשמשתמשים ביציאה ישירה של VPC. מומלץ להגדיר בדיקת הפעלה של HTTP שבודקת חיבור ליעד יציאה שבו האפליקציה משתמשת לפני שהאפליקציה מקבלת בקשות. בבדיקה הזו של קישוריות יציאה צריך להטמיע ניסיונות חוזרים, או להגדיר את בדיקת ההפעלה עם הגדרות מתאימות של תקופה וסף כדי שהיא תשמש כניסיון חוזר.
  • יכול להיות שיהיו ניתוקים במשימות של Cloud Run שפועלות יותר משעה. הן יכולות להתרחש במהלך אירועי תחזוקה שמעבירים את העבודה ממכונה אחת למכונה אחרת. מאגר התגים מקבל אות SIGTSTP 10 שניות לפני האירוע ואות SIGCONT אחרי האירוע. אחרי שהמאגר מקבל את האות SIGCONT, מנסים שוב להתחבר.
  • כשמשתמשים בתעבורת נתונים יוצאת (egress) ישירה של VPC, יכול להיות שיהיו עיכובים של 30 שניות או יותר בהפעלה במצב התחלתי (cold start) של מכונה עם Cloud NAT. כדי לשפר את ביצועי ההפעלה, מומלץ להשתמש במחברי חיבור לרשת (VPC) מאפליקציית serverless עם Cloud NAT.
  • ‫Cloud Run תומך ברוחב פס של עד ‎1 Gbps לכל מופע בודד. חריגה מהסכום הזה תגרום להגבלת הביצועים.
  • מכסת השימוש ב-Cloud Run מגבילה את המספר המקסימלי של מופעים שאפשר להגדיר לשימוש בתעבורת נתונים יוצאת (egress) ישירה של VPC. המספר המקסימלי מוגדר לכל עדכון של Cloud Run או לכל הפעלה של משימה. כדי להגדיל את המכסות שמוגדרות כברירת מחדל, אפשר לעיין במאמר בנושא הגדלת מכסות.

  • שירותים ומשימות ב-Cloud Run עלולים לחוות ניתוקים במהלך אירועי תחזוקה של תשתית הרשת. מומלץ להשתמש בספריות לקוח שיכולות לטפל באיפוסים מדי פעם של החיבור.
  • ‫Network Intelligence Center תומך רק בבדיקות קישוריות ובכלי לניתוח תנועה עבור טווחי רשתות משנה של IPv4 ו-IPv6.
  • שירותים ומשימות ב-Cloud Run שירותים ומשימות ב-Cloud Run לא תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC. מאגרי עובדים תומכים גם בתעבורת נתונים יוצאת (egress) ישירה של VPC וגם בתעבורת נתונים נכנסת (ingress) ישירה של VPC.
  • למרות שמאגרי עובדים תומכים בתעבורת נתונים נכנסת (ingress) ישירה של VPC, אי אפשר להשתמש בתגי רשת כדי להגדיר את היעד של כלל חומת אש לתעבורת נתונים נכנסת.
  • תעבורת נתונים נכנסת (ingress) למאגרי עובדים נתמכת רק באמצעות חיבור ישיר לרשת (VPC), ולא באמצעות מחברים של חיבור לרשת (VPC) מאפליקציית serverless. מחברים לא תומכים בכניסה.

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

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

הקצאת כתובות 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

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

כדי לוודא של-Cloud Run יש גישה לרשת ה-VPC, משתמשים באחת מהשיטות הבאות:

  • התפקיד Cloud Run Service Agent: כברירת מחדל, לסוכן השירות של Cloud Run יש את התפקיד Cloud Run Service Agent ‏ (roles/run.serviceAgent) שמכיל את ההרשאות הנדרשות.

  • הרשאות בהתאמה אישית: כדי לקבל שליטה מדויקת יותר, צריך לתת לסוכן השירות של Cloud Run את ההרשאות הנוספות הבאות בפרויקט:

    • compute.networks.get
    • compute.subnetworks.get
    • compute.subnetworks.use בפרויקט או ברשת המשנה הספציפית
    • compute.addresses.get
    • compute.addresses.list
    • compute.addresses.create (נדרש רק עבור רשתות משנה עם תמיכה כפולה ב-IPv4 וב-IPv6 עם IPv6 חיצוני)
    • compute.addresses.delete (נדרש רק לרשתות משנה עם תמיכה כפולה ב-IPv4 וב-IPv6 עם כתובות IPv6 חיצוניות)
    • compute.addresses.createInternal
    • compute.addresses.deleteInternal
    • compute.regionOperations.get
  • התפקיד Compute Network User: אם לא משתמשים בתפקיד ברירת המחדל של סוכן השירות של Cloud Run או בהרשאות בהתאמה אישית, צריך להעניק את התפקיד Compute Network User ‏ (roles/compute.networkUser) בחשבון השירות של סוכן השירות של Cloud Run. ברשתות משנה עם IPv6 חיצוני נדרש גם תפקיד האדמין של כתובת IP ציבורית ב-Compute‏ (roles/compute.publicIpAdmin).

    לדוגמה, כדי להעניק את התפקיד Compute Network User, מריצים את הפקודה הבאה:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.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.

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

המסוף

  1. כניסה ל-Cloud Run

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

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

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

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

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

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

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

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

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

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

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

    עכשיו אפשר לשלוח בקשות מהשירות שלכם ב-Cloud Run לכל משאב ברשת ה-VPC, בהתאם למה שמוגדר בכללי חומת האש.

gcloud

כדי לפרוס שירות Cloud Run בלי מחבר מ-Google Cloud CLI:

  1. מעדכנים את הרכיבים של gcloud לגרסה האחרונה:

    gcloud components update
  2. מוודאים ש-Compute Engine API מופעל בפרויקט:

    gcloud services enable compute.googleapis.com
    
  3. פורסים את שירות 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 עם אזור לשירות שלכם.
  4. כדי לוודא שהשירות שלכם נמצא ברשת ה-VPC, מריצים את הפקודה הבאה:

    gcloud run services describe SERVICE_NAME \
    --region=REGION

    מחליפים את:

    • SERVICE_NAME בשם של השירות.
    • REGION באזור של השירות שציינתם בשלב הקודם.

    הפלט צריך לכלול את השם של הרשת, רשת המשנה והגדרת היציאה, למשל:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

עכשיו אפשר לשלוח בקשות מהשירות שלכם ב-Cloud Run לכל משאב ברשת ה-VPC, בהתאם למה שמוגדר בכללי חומת האש.

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. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
    • SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים, משימות או מאגרי עובדים באותה רשת משנה.
    • אופציונלי: 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

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

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

המסוף

  1. כניסה ל-Cloud Run

  2. אם אתם מגדירים משימה חדשה, לוחצים על הכרטיסייה משימות וממלאים את הדף של הגדרות המשימה הראשוניות לפי הצורך. אם מגדירים משימה קיימת, לוחצים על המשימה ואז על עריכה.

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

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

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

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

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

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

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

    • הפניית בקשות רק לכתובות IP פרטיות אל ה-VPC כדי לשלוח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
    • העברת כל התעבורה ל-VPC כדי לשלוח את כל התעבורה היוצאת דרך רשת ה-VPC.
  10. אופציונלי: מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לשירותים. תגי רשת מצוינים ברמת הגרסה. לכל עדכון של שירות יכולים להיות תגים שונים ברשת, כמו network-tag-2.

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

  12. לוחצים על יצירה או על עדכון.

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

    עכשיו אפשר להריץ את משימת Cloud Run ולשלוח בקשות מהמשימה לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.

gcloud

כדי ליצור משימת Cloud Run בלי מחבר מ-Google Cloud CLI:

  1. מעדכנים את הרכיבים של gcloud לגרסה האחרונה:

    gcloud components update
  2. מוודאים ש-Compute Engine API מופעל בפרויקט:

    gcloud services enable compute.googleapis.com
    
  3. יוצרים משימת 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 עם אזור לחיפוש משרות.
  4. כדי לוודא שהעבודה נמצאת ברשת ה-VPC, מריצים את הפקודה הבאה:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    מחליפים את:

    • JOB_NAME בשם של הג'וב.
    • REGION באזור של המשרה שציינתם בשלב הקודם.

    הפלט צריך להכיל את השם של הרשת ושל רשת המשנה, לדוגמה:

    VPC network:
      Network:       default
      Subnet:        default
    

עכשיו אפשר להריץ את משימת Cloud Run ולשלוח בקשות מהמשימה לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.

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

    gcloud run jobs replace job.yaml

חיבור מאגר עובדים לרשת VPC

תכונת ה-VPC הישיר מאפשרת למאגר העובדים של Cloud Run לשלוח או לקבל תעבורת נתונים אל או מרשת VPC. כל מופע של מאגר עובדים מקבל כתובת IP פרטית ברשת ובתת-הרשת שהוגדרו.

בניגוד לשירותים או לעבודות, קישוריות ישירה של VPC למאגרי עובדים מאפשרת תעבורת נתונים יוצאת (egress) ונכנסת (ingress). המשמעות היא שמכונות במאגר העובדים יכולות לגשת למשאבים ברשת ה-VPC, וגם משאבים ברשת ה-VPC יכולים לגשת למכונה במאגר העובדים באמצעות כתובת ה-IP שלה. כאן מוסבר איך מופע יכול לאחזר את כתובות ה-IP הפרטיות שלו באמצעות שרת המטא-נתונים.

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

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

המסוף

  1. כניסה ל-Cloud Run

  2. בתפריט, בוחרים באפשרות מאגרי עובדים ולוחצים על פריסת קונטיינר כדי להגדיר מאגר עובדים חדש. אם אתם מגדירים מאגר עובדים קיים, לוחצים על מאגר העובדים ואז על עריכה ופריסה של עדכון חדש.

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

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

  5. בוחרים באפשרות Connect to a VPC (קישור ל-VPC).

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

    עכשיו אפשר לשלוח בקשות ממאגר העובדים של Cloud Run לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.

gcloud

כדי לפרוס מאגר עובדים של Cloud Run בלי מחבר מ-Google Cloud CLI:

  1. מעדכנים את הרכיבים של gcloud לגרסה האחרונה:

    gcloud components update
  2. מוודאים ש-Compute Engine API מופעל בפרויקט:

    gcloud services enable compute.googleapis.com
    
  3. מריצים את הפקודה הבאה כדי לפרוס את מאגר העובדים של Cloud Run:

    gcloud run worker-pools deploy WORKER_POOL \
        --image=IMAGE_URL \
        --network=NETWORK \
        --subnet=SUBNET \
        --network-tags=NETWORK_TAG_NAMES \
        --vpc-egress=EGRESS_SETTING \
        --region=REGION

    מחליפים את:

    • WORKER_POOL מחליפים בשם של מאגר העובדים ב-Cloud Run. שמות של מאגרי עובדים צריכים להיות באורך של עד 49 תווים, להיות ייחודיים לכל אזור ולכל פרויקט, ולא להיות זהים לשם של שירות קיים מהפרויקט. אם מאגר העובדים עדיין לא קיים, הפקודה הזו יוצרת את מאגר העובדים במהלך הפריסה. אפשר להשמיט את הפרמטר הזה לגמרי, אבל אם תשמיטו אותו, תתבקשו לציין את השם של מאגר העובדים.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, למשל us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • NETWORK בשם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
    • SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים, משימות או מאגרי עובדים באותה רשת משנה.
    • אופציונלי (רק ליציאה ישירה מ-VPC): NETWORK_TAG_NAMES עם השמות המופרדים בפסיקים של תגי הרשת שרוצים לשייך למאגר עובדים. בשירותים, תגי הרשת מצוינים ברמת הגרסה. לכל עדכון של מאגר עובדים יכולים להיות תגי רשת שונים, כמו network-tag-2.
    • EGRESS_SETTING עם ערך של הגדרת יציאה:
      • all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC.
      • private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
    • REGION מחליפים באזור של מאגר העובדים.
  4. כדי לוודא שמאגר העובדים נמצא ברשת ה-VPC, מריצים את הפקודה הבאה:

    gcloud run worker-pools describe WORKER_POOL \
        --region=REGION

    מחליפים את:

    • WORKER_POOL בשם של מאגר העובדים.
    • REGION באזור של מאגר העובדים שציינתם בשלב הקודם.

    הפלט צריך לכלול את השם של הרשת, רשת המשנה והגדרת היציאה, למשל:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

עכשיו אפשר לשלוח בקשות ממאגר העובדים של Cloud Run לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.

YAML

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

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
  2. מעדכנים את המאפיינים הבאים:

    apiVersion: run.googleapis.com/v1
      kind: WorkerPool
      metadata:
        name: WORKER_POOL
        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_URL

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

    • WORKER_POOL: השם של מאגר העובדים ב-Cloud Run.
    • REGION: האזור של מאגר העובדים ב-Cloud Run, שחייב להיות זהה לאזור של רשת המשנה.
    • NETWORK: השם של רשת ה-VPC. מציינים רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, רשת המשנה מקבלת את אותו שם כמו הרשת.
    • SUBNET בשם של רשת המשנה. צריך לציין רשת VPC או רשת משנה, או את שתיהן. אם מציינים רק רשת, שם רשת המשנה יהיה זהה לשם הרשת. אתם יכולים לפרוס או להריץ כמה שירותים, משימות או מאגרי עובדים באותה רשת משנה.
    • אופציונלי (רק ליציאה ישירה מ-VPC): NETWORK_TAG_NAMES: השמות של תגי הרשת שרוצים לשייך למאגר העובדים. במאגרי עובדים, תגי הרשת מוגדרים ברמת הגרסה. לכל עדכון של מאגר עובדים יכולים להיות תגי רשת שונים, כמו network-tag-2.
    • EGRESS_SETTING: an egress setting value.
      • all-traffic: שליחת כל התעבורה היוצאת דרך רשת ה-VPC.
      • private-ranges-only: שולח תעבורה רק לכתובות פנימיות דרך רשת ה-VPC.
    • IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, כמו us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

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

  3. יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:

    gcloud run worker-pools replace worker-pool.yaml

    אם קיים קובץ worker-pool.yaml, הפקודה gcloud run worker-pools replace משתמשת בו כברירת מחדל.

אדמינים יכולים להגביל את הגדרות היציאה שמפתחים יכולים לבחור על ידי הגדרת המדיניות הארגונית run.allowedVPCEgress.

אחזור כתובות ה-IP הפרטיות באמצעות שרת המטא-נתונים

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

  • כדי לקבל את כתובת ה-IPv4, שולחים בקשה לשרת המטא-נתונים בנקודת הקצה /computeMetadata/v1/instance/network-interfaces/0/ip:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip" -H "Metadata-Flavor: Google"
    
  • כדי לקבל את כתובת ה-IPv6, יוצרים את המכונה עם רשת משנה (subnet) עם תמיכה כפולה במצבי פרוטוקול ושולחים בקשה לשרת המטא-נתונים בנקודת הקצה /computeMetadata/v1/instance/network-interfaces/0/ipv6:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ipv6" -H "Metadata-Flavor: Google"
    
  • כדי לוודא שמופע מאגר העובדים מצורף לרשת VPC, שולחים שאילתה לנתיבי המטא-נתונים הבאים של ממשק הרשת:

    # Verify the existence of the network interface directory
    
    curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/" -H "Metadata-Flavor: Google"
    
    # Verify the existence of the first network interface
    
    curl "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/" -H "Metadata-Flavor: Google"
    

טיפול בשגיאות בשרת המטא-נתונים

שרת המטא-נתונים מחזיר שגיאת 404: Not Found בתרחישים הבאים:

  • אם מבצעים שאילתה לגבי כתובת IPv6 ברשת משנה עם IPv4 בלבד.
  • אם לא מחברים את מופע מאגר העובדים לרשת VPC. במקרה הזה, שרת המטא-נתונים מחזיר שגיאה עבור הנתיבים הבאים:

    • /computeMetadata/v1/instance/network-interfaces
    • /computeMetadata/v1/instance/network-interfaces/0
    • /computeMetadata/v1/instance/network-interfaces/0/ip
    • /computeMetadata/v1/instance/network-interfaces/0/ipv6

הגדרה של dual-stack ‏ (IPv4 ו-IPv6)

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

הגבלת הגישה באמצעות כללים של חומת אש

הגבלת הגישה למשאבים ברשת VPC באמצעות כללי חומת אש של VPC. אפשר להוסיף את ההגבלות האלה באחת מהדרכים הבאות:

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

    בכלל חומת האש ליציאה, מציינים את השירות או את העבודה באמצעות זהות השירות של חשבון השירות המקושר, טווח כתובות ה-IP של רשת המשנה או תגי הרשת המשויכים.

תגי רשת לתעבורת נתונים יוצאת (egress)

אפשר להוסיף עוד שכבת אבטחה לרשת באמצעות תגי רשת בכללי חומת אש של תעבורת יציאה.

המסוף

כדי לשייך תגי רשת לשירות או לעבודה:

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

    כניסה ל-Cloud Run

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

  3. לוחצים על הכרטיסייה Networking (רשת) בשביל שירותים, או על הכרטיסייה Connections (חיבורים) בשביל משרות.

  4. מוודאים שסימנתם את האפשרויות Connect to a VPC for outbound traffic (התחברות ל-VPC לתעבורה יוצאת) ו-Send traffic directly to a VPC (שליחת תעבורה ישירות ל-VPC).

  5. בשדה Subnet (תת-רשת), בוחרים את תת-הרשת שממנה השירות מקבל כתובות IP. אפשר לפרוס או להפעיל כמה שירותים או משימות באותה רשת משנה.

  6. בשדה Network tags, מזינים את השמות של תגי הרשת שרוצים לשייך לשירות או לעבודה.

  7. לוחצים על פריסה או על עדכון.

במקרה של שירותים, לכל עדכון של שירות יכול להיות סט שונה של תגי רשת, כי תגי הרשת מצוינים ברמת העדכון. לגבי משימות, לביצוע של משימה יש את אותם תגי רשת שהיו למשימה כשנוצר הביצוע של המשימה.

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:

    1. כניסה ל-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. כניסה ל-Cloud Run

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

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

    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. מסירים את המשתנה tags מהתוכן בקובץ job.yaml, ומשאירים את המשתנים network ו-subnetwork במקומם, כמו בדוגמה הבאה:

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

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

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

      gcloud run jobs replace job.yaml

ניתוק של מאגר עובדים

gcloud

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

    gcloud run worker-pools update WORKER_POOL --region=REGION \
    --clear-network
  • כדי להסיר רק את תגי הרשת ולהשאיר את מאגר העובדים מחובר לרשת ה-VPC, מריצים את הפקודה הבאה:

    gcloud run worker-pools update WORKER_POOL --region=REGION \
    --clear-network-tags

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

    • WORKER_POOL: השם של מאגר העובדים ב-Cloud Run.
    • REGION: האזור של מאגר העובדים של Cloud Run.

פתרון בעיות

אי אפשר למחוק רשת משנה

כדי למחוק רשת משנה, קודם צריך למחוק או לפרוס מחדש את כל המשאבים שמשתמשים בה. אם 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 במסוףGoogle Cloud ומחפשים כתובות שבהן הערך בעמודה בשימוש על ידי הוא Serverless.

לחלופין, אפשר להריץ את הפקודה הבאה מ-Google Cloud CLI:

gcloud compute addresses list --filter="purpose=SERVERLESS"

בעיות עם MTU מותאם אישית

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