ציון רשת ורשת משנה

במאמר הזה מוסבר איך מציינים רשת או רשת משנה או את שתי האפשרויות כשמריצים משימות Dataflow.

כדי לבצע את השלבים, צריך לדעת איך ליצור רשתות ותתי-רשתות ב-Google Cloud Platform. בנוסף, חשוב להכיר את התנאים של הרשת שמפורטים בקטע הבא.

ברשת default יש הגדרות שמאפשרות להריץ משימות Dataflow. עם זאת, יכול להיות שגם שירותים אחרים ישתמשו ברשת הזו. חשוב לוודא שכל שינוי ברשת default תואם לכל השירותים שלכם. אפשרות אחרת היא ליצור רשת נפרדת ל-Dataflow.

מידע נוסף על פתרון בעיות ברשת זמין במאמר פתרון בעיות ברשת ב-Dataflow.

מינוח הרשת של Google Cloud Platform

  • רשת VPC. רשת VPC היא גרסה וירטואלית של רשת פיזית שמוטמעת בתוך רשת הייצור של Google. רשת VPC, שלפעמים נקראת רשת, מספקת קישוריות למשאבים בפרויקט.

    מידע נוסף על VPC זמין במאמר רשתות VPC.

  • רשת VPC משותפת. כשמשתמשים ב-VPC משותף, מגדירים פרויקט כפרויקט מארח ומצרפים אליו פרויקט אחד או יותר של שירותים. רשתות ה-VPC בפרויקט המארח נקראות רשתות VPC משותפות. אם אדמין של VPC משותף מגדיר אתכם כאדמינים של פרויקט שירות, יש לכם הרשאה להשתמש לפחות בחלק מהתת-רשתות ברשתות של הפרויקט המארח.

    מידע נוסף על VPC משותף זמין במאמר בנושא VPC משותף.

  • VPC Service Controls. התכונה Dataflow VPC Service Controls עוזרת להגן מפני פעולות לא מכוונות או ממוקדות של גורמים חיצוניים או פנימיים, וכך לצמצם את הסיכונים לזליגת נתונים לא רצויה. אתם יכולים להשתמש ב-VPC Service Controls כדי ליצור גבולות גזרה שמגנים על המשאבים ועל הנתונים של שירותים שאתם מציינים באופן מפורש.

    מידע נוסף על VPC Service Controls זמין במאמר סקירה כללית על VPC Service Controls. מידע על המגבלות בשימוש ב-Dataflow עם VPC Service Controls זמין במאמר מוצרים נתמכים ומגבלות.

  • כללים לחומת אש. אפשר להשתמש בכללים של חומת אש כדי לאפשר או לחסום תעבורה אל המכונות הווירטואליות וממנה. מידע נוסף זמין במאמר הגדרת גישה לאינטרנט וכללים של חומת אש.

רשת ורשת משנה למשימת Dataflow

כשיוצרים עבודת Dataflow, אפשר לציין רשת, רשת משנה או את שתי האפשרויות.

כדאי להיעזר בהנחיות הבאות:

  • אם אתם לא בטוחים באיזה פרמטר להשתמש, ציינו רק את פרמטר רשת המשנה. פרמטר הרשת מצוין באופן מרומז בשבילכם.

  • אם לא מציינים את הפרמטרים של תת-הרשת והרשת,המערכת של Google Cloud מניחה שאתם רוצים להשתמש ברשת VPC במצב אוטומטי בשם default. אם אין לכם רשת בשם default בפרויקט, אתם צריכים לציין רשת חלופית או רשת משנה חלופית.

הנחיות לציון פרמטר רשת

  • כדי לבחור רשת VPC במצב אוטומטי בפרויקט, משתמשים בפרמטר network. מידע נוסף זמין במאמר יצירת רשת VPC במצב אוטומטי.

  • אפשר לציין רשת באמצעות השם שלה בלבד, ולא באמצעות כתובת ה-URL המלאה.

  • אפשר להשתמש בפרמטר network כדי לבחור רשת VPC משותפת רק אם מתקיימים שני התנאים הבאים:

    • רשת ה-VPC המשותפת שבוחרים היא רשת VPC במצב אוטומטי.

    • אתם אדמינים של פרויקט שירות עם הרשאות ברמת הפרויקט לכל הפרויקט המארח ב-VPC המשותף. מנהל של VPC משותף העניק לכם את התפקיד Compute Network User לכל הפרויקט המארח, כך שאתם יכולים להשתמש בכל הרשתות ורשתות המשנה שלו.

  • בכל שאר המקרים, צריך לציין רשת משנה.

הנחיות לציון פרמטר של רשת משנה

  • אם מציינים רשת משנה, Dataflow בוחר את הרשת בשבילכם. לכן, כשמציינים רשת משנה, אפשר להשמיט את פרמטר הרשת.

  • כדי לבחור רשת משנה ספציפית ברשת, משתמשים בפרמטר subnetwork.

  • אפשר לציין רשת משנה באמצעות כתובת URL מלאה או נתיב מקוצר. אם רשת המשנה נמצאת ברשת VPC משותפת, צריך להשתמש בכתובת ה-URL המלאה.

  • צריך לבחור רשת משנה באותו אזור שבו מריצים את העובדים של Dataflow.

  • צריך לציין את פרמטר הרשת המשנית במצבים הבאים:

    • רשת המשנה שציינתם נמצאת ברשת VPC במצב מותאם אישית.

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

  • מספר כתובות ה-IP הזמינות מגביל את מספר העובדים של Dataflow שאפשר ליצור. לדוגמה, אם טווח ה-IPv4 של רשת המשנה הוא 10.0.0.0/24, זה מספק 252 כתובות IP שניתן להשתמש בהן למכונות וירטואליות של עובדים. מוודאים שמרחב כתובות ה-IP גדול מספיק לעומסי העבודה הצפויים, כולל אפשרות לשינוי גודל אוטומטי אופקי. כדאי להשתמש בבדיקות עומס כדי לאמת את ההנחות שלכם.

הנחיות לציון פרמטר של רשת משנה ל-VPC משותף

  • כשמציינים את כתובת ה-URL של תת-הרשת ל-VPC משותף, צריך לוודא ש-HOST_PROJECT_ID הוא הפרויקט שבו מתארח ה-VPC.

  • אם רשת המשנה ממוקמת ברשת VPC משותפת, צריך להשתמש בכתובת ה-URL המלאה. דוגמה לכתובת URL מלאה שמציינת רשת משנה

  • מוודאים שתת-הרשת של ה-VPC המשותף משותפת עם חשבון השירות של Dataflow ושהתפקיד Compute Network User מוקצה בתת-הרשת שצוינה. צריך להקצות את התפקיד Compute Network User לחשבון השירות של Dataflow בפרויקט המארח.

    1. נכנסים לדף VPC משותף במסוף Google Cloud .

      מעבר לדף של VPC משותף

    2. בוחרים פרויקט מארח.

    3. בקטע גישה לרשת משנה ספציפית, בוחרים את רשת המשנה. בחלונית הרשאות ברמת רשת המשנה מוצגות ההרשאות של רשת המשנה הזו. אפשר לראות אם רשת המשנה של ה-VPC הוקצה לתפקיד Compute Network User.

    4. כדי להעניק הרשאות, בחלונית Subnet level permissions, לוחצים על Add principal.

    אם הרשת לא משותפת, כשמנסים להריץ את העבודה מופיעה הודעת השגיאה הבאה: Error: Message: Required 'compute.subnetworks.get' permission. מידע נוסף זמין במאמר פתרון בעיות שקשורות להרשאות ב-Dataflow, בקטע בנושא ההרשאה הנדרשת compute.subnetworks.get.

דוגמה למפרטים של רשת ורשת משנה

בדוגמה הבאה מוצגת כתובת URL מלאה שמציינת רשת משנה:

https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

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

  • HOST_PROJECT_ID: מזהה פרויקט המארח
  • REGION_NAME: האזור של משימת Dataflow
  • SUBNETWORK_NAME: השם של רשת המשנה ב-Compute Engine

בדוגמה הבאה, מזהה פרויקט המארח הוא my-cloud-project, האזור הוא us-central1 ושם רשת המשנה הוא mysubnetwork:

 https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork

דוגמה לטופס קצר שבו מצוינת רשת משנה:

regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

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

  • REGION_NAME: האזור של משימת Dataflow
  • SUBNETWORK_NAME: השם של רשת המשנה ב-Compute Engine

הפעלת צינור העברת הנתונים עם הרשת שצוינה

אם רוצים להשתמש ברשת שונה מרשת ברירת המחדל שנוצרה על ידיGoogle Cloud, ברוב המקרים צריך לציין את רשת המשנה. הרשת מוסקת באופן אוטומטי מרשת המשנה שאתם מציינים. מידע נוסף זמין בקטע הנחיות לציון פרמטר של רשת במאמר הזה.

בדוגמה הבאה מוצג איך להריץ את צינור העיבוד משורת הפקודה או באמצעות ה-API בארכיטקטורת REST. בדוגמה הזו מצוינת רשת.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --network=NETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

API

אם מריצים תבנית Dataflow באמצעות API בארכיטקטורת REST, מוסיפים את network או subnetwork, או את שניהם, לאובייקט environment.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "network": "NETWORK_NAME",
       "zone": "us-central1-f"
    }
}

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

  • JOB_NAME: השם של משימת Dataflow (API בלבד)
  • INPUT_PATH: הנתיב למקור
  • HOST_PROJECT_ID: מזהה פרויקט המארח
  • REGION: אזור Dataflow, כמו us-central1
  • STORAGE_BUCKET: מאגר האחסון
  • NETWORK_NAME: השם של רשת Compute Engine

הפעלת צינור עיבוד הנתונים עם רשת המשנה שצוינה

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

בדוגמה הבאה מוצג איך להריץ את צינור העיבוד משורת הפקודה או באמצעות ה-API בארכיטקטורת REST. בדוגמה מצוינת רשת משנה. אפשר גם לציין את הרשת.

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

API

אם מריצים תבנית Dataflow באמצעות API בארכיטקטורת REST, צריך להוסיף את network או subnetwork, או את שניהם, לאובייקט environment.

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME",
       "zone": "us-central1-f"
    }
}

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

  • JOB_NAME: השם של משימת Dataflow (API בלבד)
  • INPUT_PATH: הנתיב למקור
  • HOST_PROJECT_ID: מזהה פרויקט המארח
  • REGION: אזור Dataflow, כמו us-central1
  • STORAGE_BUCKET: מאגר האחסון
  • SUBNETWORK_NAME: השם של רשת המשנה ב-Compute Engine

השבתה של כתובת IP חיצונית

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