במאמר הזה מוסבר איך לציין רשת או רשת משנה, או את שתי האפשרויות, כשמריצים משימות ב-Dataflow.
כדי לבצע את השלבים, אתם צריכים לדעת איך ליצור Google Cloud רשתות ורשתות משנה. אתם גם צריכים להכיר את המונחים שקשורים לרשתות, שמופיעים בקטע הבא.
ברשת default יש הגדרות שמאפשרות להריץ משימות Dataflow. עם זאת, יכול להיות שגם שירותים אחרים משתמשים ברשת הזו. חשוב לוודא שכל השינויים ברשת default תואמים לכל השירותים שלכם. לחלופין, אפשר ליצור רשת נפרדת ל-Dataflow.
למידע נוסף על פתרון בעיות ברשת, ראו פתרון בעיות ברשת של Dataflow.
Google Cloud מונחים שקשורים לרשת
רשת VPC. רשת VPC היא גרסה וירטואלית של רשת פיזית שמוטמעת בתוך רשת הייצור של Google. רשת VPC, שלפעמים נקראת רשת, מספקת קישוריות למשאבים בפרויקט.
מידע נוסף על VPC זמין במאמר רשתות VPC.
רשת VPC משותפת. כשמשתמשים ב-VPC משותף, מגדירים פרויקט אחד כפרויקט מארח ומצרפים אליו פרויקטים של שירותים. רשתות ה-VPC בפרויקט המארח נקראות רשתות VPC משותפות. אם אדמין של VPC משותף מגדיר אתכם כאדמינים של פרויקט שירות, יש לכם הרשאה להשתמש לפחות בחלק מתת-הרשתות ברשתות של הפרויקט המארח.
מידע נוסף על VPC משותף זמין במאמר VPC משותף.
VPC Service Controls. בעזרת VPC Service Controls ב-Dataflow, אתם יכולים להגן על הנתונים מפני פעולות מקריות או מכוונות של גורמים חיצוניים או פנימיים, וכך לצמצם את הסיכונים לזליגת נתונים לא רצויה. אתם יכולים להשתמש ב-VPC Service Controls כדי ליצור גבולות גזרה שמגינים על המשאבים והנתונים של שירותים שאתם מגדירים באופן מפורש.
מידע נוסף על VPC Service Controls זמין בסקירה הכללית על VPC Service Controls. מידע נוסף על המגבלות בשימוש ב-Dataflow עם VPC Service Controls זמין במאמר מוצרים נתמכים ומגבלות.
כללי חומת אש. אתם יכולים להשתמש בכללי חומת אש כדי לאפשר תעבורה או למנוע אותה מהמכונות הווירטואליות ואליהן. למידע נוסף, קראו את המאמר הגדרת גישה לאינטרנט וכללים של חומת אש.
רשת ורשת משנה למשימת Dataflow
כשיוצרים משימת Dataflow, אפשר לציין רשת, רשת משנה או את שתי האפשרויות.
כדאי להיעזר בהנחיות הבאות:
אם אתם לא בטוחים באיזה פרמטר להשתמש, ציינו רק את הפרמטר של רשת המשנה. פרמטר הרשת מוגדר באופן משתמע.
אם משמיטים את הפרמטרים של רשת המשנה ושל הרשת, המערכת של Google Cloud מניחה שאתם מתכוונים להשתמש ברשת VPC במצב אוטומטי בשם
default. אם אין בפרויקט רשת בשםdefault, צריך לציין רשת או רשת משנה חלופית.
הנחיות לציון פרמטר רשת
כדי לבחור רשת VPC במצב אוטומטי בפרויקט, משתמשים בפרמטר הרשת. מידע נוסף זמין במאמר יצירת רשת VPC במצב אוטומטי.
אפשר לציין רשת רק באמצעות השם שלה, בלי כתובת ה-URL המלאה.
אפשר להשתמש בפרמטר הרשת כדי לבחור רשת VPC משותפת רק אם שני התנאים הבאים מתקיימים:
רשת ה-VPC המשותפת שבחרתם היא רשת VPC במצב אוטומטי.
אתם אדמינים של פרויקט שירות עם הרשאות ברמת הפרויקט לכל הפרויקט המארח ב-VPC המשותף. אדמין של VPC משותף נתן לכם את התפקיד "משתמש ברשת Compute" לכל הפרויקט המארח, כך שאתם יכולים להשתמש בכל הרשתות ותת-הרשתות שלו.
בכל שאר המקרים, צריך לציין רשת משנה.
הנחיות לציון פרמטר של רשת משנה
אם תציינו רשת משנה, Dataflow יבחר את הרשת בשבילכם. לכן, כשמציינים רשת משנה, אפשר להשמיט את הפרמטר של הרשת.
כדי לבחור רשת משנה ספציפית ברשת, משתמשים בפרמטר subnetwork.
מציינים רשת משנה באמצעות כתובת URL מלאה או נתיב מקוצר. אם רשת המשנה נמצאת ברשת VPC משותפת, צריך להשתמש בכתובת ה-URL המלאה.
אתם צריכים לבחור רשת משנה באותו אזור שבו אתם מריצים את ה-workers של Dataflow.
צריך לציין את הפרמטר של רשת המשנה במצבים הבאים:
רשת המשנה שציינתם נמצאת ברשת VPC במצב מותאם אישית.
אתם אדמינים של פרויקט שירות עם הרשאות ברמת רשת המשנה לרשת משנה ספציפית בפרויקט מארח של VPC משותף.
מספר כתובות ה-IP הזמינות מגביל את מספר ה-workers של Dataflow שאפשר ליצור. לדוגמה, אם טווח ה-IPv4 של רשת המשנה הוא 10.0.0.0/24, יש 252 כתובות IP שניתן להשתמש בהן למכונות הווירטואליות של ה-worker. ודאו שמרחב כתובות ה-IP גדול מספיק לעומסי העבודה הצפויים, כולל אפשרות להתאמה אוטומטית לעומס (scaling) אופקית. כדי לאמת את ההנחות שלכם, השתמשו בבדיקת עומסים.
הנחיות להגדרת פרמטר של רשת משנה ל-VPC משותף
כשמציינים את כתובת ה-URL של רשת המשנה ל-VPC משותף, צריך לוודא ש-HOST_PROJECT_ID הוא הפרויקט שבו מארחים את ה-VPC.
אם רשת המשנה נמצאת ברשת VPC משותפת, צריך להשתמש בכתובת ה-URL המלאה. דוגמה לכתובת URL מלאה שמציינת רשת משנה.
מוודאים שתת-הרשת של ה-VPC המשותף משותפת עם חשבון השירות של Dataflow, ושהוקצה לה התפקיד "משתמש ברשת Compute" בתת-הרשת שצוינה. בפרויקט המארח, צריך להקצות את התפקיד "משתמש ברשת Compute" לחשבון השירות של Dataflow.
נכנסים לדף VPC משותף במסוף Google Cloud .
בוחרים פרויקט מארח.
בקטע Individual subnet access, בוחרים את רשת המשנה. בחלונית Subnet level permissions מוצגות ההרשאות של רשת המשנה הזו. אתם יכולים לראות אם לרשת המשנה של ה-VPC הוקצה התפקיד "משתמש ברשת Compute".
כדי להעניק הרשאות, בחלונית Subnet level permissions לוחצים על Add principal.
אם הרשת לא משותפת, כשמנסים להריץ את המשימה מופיעה הודעת השגיאה הבאה:
Error: Message: Required 'compute.subnetworks.get' permission. מידע נוסף זמין בקטע נדרשת ההרשאה compute.subnetworks.get במאמר "פתרון בעיות בהרשאות של Dataflow".
דוגמה למפרטים של רשת ורשת משנה
בדוגמה הבאה מוצגת כתובת 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
זאת כתובת URL לדוגמה שבה מזהה הפרויקט המארח הוא 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
המשך
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
gcloud
gcloud dataflow jobs run JOB_NAME \
--gcs-location=gs://STORAGE_BUCKET/templates/template_file \
--region=REGION \
--staging-location=gs://STORAGE_BUCKET/staging \
--network=NETWORK_NAME \
--parameters inputFile=INPUT_PATH,output=gs://STORAGE_BUCKET/output
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
המשך
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
gcloud
gcloud dataflow jobs run JOB_NAME \
--gcs-location=gs://STORAGE_BUCKET/templates/template_file \
--region=REGION \
--staging-location=gs://STORAGE_BUCKET/staging \
--subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME \
--parameters inputFile=INPUT_PATH,output=gs://STORAGE_BUCKET/output
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 חיצונית, קראו את המאמר הגדרת גישה לאינטרנט וכללים של חומת אש.