Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר איך הסביבה שלכם יכולה לגשת לרשת VPC ב-Managed Airflow (דור 3), יש בו הוראות לחיבור סביבה לרשת VPC ותיאור של אופן ההשבתה של חיבור שהוגדר בעבר.
אם רוצים להפעיל או להשבית את הגישה לאינטרנט לרכיבי Airflow בסביבה, אפשר לעיין במאמר בנושא שינוי סוג הרשת של הסביבה (כתובת IP פרטית או ציבורית).
אם רוצים להשבית או להפעיל גישה לאינטרנט רק כשמתקינים חבילות PyPI, אפשר לעיין במאמר בנושא הגדרת גישה לאינטרנט כשמתקינים חבילות PyPI.
אם רוצים להגדיר רשתות VPC משותפות, אפשר לעיין במאמר הגדרת VPC משותף לקבלת מידע על הגדרת פרויקטים והרשאות.
מידע על גישה לרשת VPC
ב-Managed Airflow (דור 3), אפשר להפעיל גישה לרשת VPC עבור סביבה.
אם מפעילים גישה לרשת VPC בסביבה:
רכיבי Airflow בסביבה שלכם יכולים לגשת לנקודות קצה ברשת פרטית ברשת ה-VPC שלכם. לדוגמה, קוד ה-DAG יכול לגשת למשאבים שנמצאים ברשת ה-VPC באמצעות חיבור Airflow שהוגדר.
אם בסביבה שלכם נעשה שימוש ברשתות IP פרטיות, כל התנועה מנותבת לרשת ה-VPC שלכם, למעט התנועה לממשקי Google APIs, לשירותים ולדומיינים שזמינים לסביבות IP פרטיות דרך גישה פרטית ל-Google. בנוסף, השיטה הזו מאפשרת לרכיבי Airflow להתחבר לכתובות IP ציבוריות לשימוש פרטי (PUPI) שהוגדרו ב-GKE, כי תעבורת הנתונים תנותב דרך רשת ה-VPC במקום להישלח לאינטרנט הציבורי.
בהתאם להגדרת רשת ה-VPC, סביבת IP פרטית יכולה לקבל גישה לאינטרנט דרך רשת ה-VPC.
אזורי DNS פרטיים שמוגדרים ברשת ה-VPC שלכם זמינים באופן אוטומטי לרכיבי Airflow בסביבה שלכם.
הסביבה שומרת שתי כתובות IP ברשת המשנה של ה-VPC, ומשתמשת בשתי כתובות IP נוספות במהלך תחזוקה ושדרוגים. מוודאים שארבע כתובות IP לכל סביבה זמינות ברשת המשנה של ה-VPC.
ב-Managed Airflow נעשה שימוש בקובץ מצורף לרשת כדי לחבר את הסביבה לרשת VPC:
אם מציינים רשת VPC ותת-רשת, Managed Airflow יוצר מחבר רשת חדש בפרויקט. הקובץ המצורף הזה נמחק אחרי שמוחקים סביבה, משביתים את החיבור לרשת VPC או מחליפים את הפרמטרים של חיבור ה-VPC.
אם מציינים מחבר רשת קיים, הוא צריך להיות באותו פרויקט עם הסביבה. הקובץ המצורף הזה לא נמחק אחרי שמוחקים סביבה, משביתים את החיבור או מחליפים את הפרמטרים של חיבור ה-VPC.
ברשתות VPC משותפות:
מוודאים שהגדרתם רשת VPC משותפת ל-Managed Airflow. במאמר הגדרת VPC משותף מוסבר איך מגדירים פרויקטים והרשאות ל-Managed Airflow.
אחרי שמגדירים את רשת ה-VPC המשותפת, אפשר לחבר את הסביבה לרשת VPC מהפרויקט המארח. אם משתמשים בחיבור רשת קיים, צריך ליצור אותו בפרויקט השירות (שבו נמצאת הסביבה) ולצרף אותו לרשת של VPC משותף.
מגבלות על שיתוף DNS טרנזיטיבי ב-Managed Airflow (דור 3)
המגבלות על קישוריות DNS טרנזיטיבית חלות על סביבת Managed Airflow (דור 3) באופן הבא:
- ב-Cloud DNS יש מגבלה של קפיצה טרנזיטיבית אחת, כלומר נתמכות שתי קפיצות בסך הכול.
- ב-Managed Airflow (דור 3), הרכיבים של הסביבה פועלים בפרויקט הדייר ומתקשרים עם הפרויקט שבו נמצאת הסביבה באמצעות DNS peering. הניתוב הטרנזיטיבי משמש את ה-DNS peering של פרויקט הדייר, כך שאפשר להשתמש רק בצעד אחד בסך הכול.
כפתרון עקיף, אפשר ליצור אזור DNS peering בפרויקט שבו נמצאת הסביבה, כדי שישמש כקיצור דרך. מידע נוסף מופיע במאמר מתי כדאי להשתמש בפירינג במקום זאת במסמכי Cloud DNS.
מידע על טווח כתובות ה-IP הפנימיות של הסביבה
בסביבות Managed Airflow (דור 3) נדרשות כמה כתובות IP עבור הרכיבים שפועלים בפרויקט דייר (tenant), כמו האשכול של הסביבה ו-Cloud SQL Proxy. כתובות ה-IP האלה נלקחות מטווח כתובות ה-IP הפנימיות של הסביבה.
טווח כתובות ה-IP הפנימיות שמוגדר כברירת מחדל הוא
100.64.128.0/20.כשיוצרים סביבה, אפשר לציין טווח אחר של כתובות IP פנימיות. חובה להשתמש במסכת
/20בטווח הזה.אי אפשר לשנות את טווח כתובות ה-IP הפנימיות של סביבה קיימת.
טווח כתובות ה-IP הפנימיות יוצר אינטראקציה עם רשת ה-VPC בדרכים הבאות:
אסור שיהיה קונפליקט בין טווח כתובות ה-IP הפנימי לבין תת-הרשת של ה-VPC שאליה מחוברת סביבת Managed Airflow. אי אפשר להפעיל חיבור עם תת-רשת של VPC שחופפת לטווח כתובות ה-IP הפנימיות.
אם טווח כתובות ה-IP הפנימי של סביבה חופף לטווחים של רשת ה-VPC, לא ניתן לגשת לסביבה מנקודות קצה ברשת ה-VPC שיש להן כתובות IP חופפות.
לדוגמה, אם הטווח הפנימי הוא
100.64.128.0/20, כל בקשה לנקודת הקצה100.64.128.1ברשת ה-VPC תיכשל כי הבקשה לא יוצאת מפרויקט הדייר.טווח כתובות ה-IP הפנימי לא שמור. אתם יכולים להשתמש באותו טווח כתובות IP פנימיות לכמה סביבות בלי לבצע הגדרה נוספת, כי רשתות ה-VPC הפנימיות שבהן משתמשות סביבות שונות מופרדות.
אתם יכולים להשתמש בכתובות IP של טווח פנימי למטרות אחרות, כל עוד DAGs ומשימות בסביבה שלכם לא שולחים אליהן בקשות.
חיבור לרשת VPC
המסוף
נכנסים לדף Environments במסוף Google Cloud .
ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.
עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).
בקטע Network configuration, מאתרים את הפריט מחבר רשת ולוחצים על Edit.
בתיבת הדו-שיח מחבר רשת:
כדי ליצור קובץ מצורף חדש לרשת, ברשימה Network attachment (קובץ מצורף לרשת), בוחרים באפשרות Create a new network attachment (יצירת קובץ מצורף חדש לרשת). ברשימות Network ו-Subnetwork, בוחרים רשת VPC ורשת משנה.
כדי להשתמש בחיבור רשת קיים, בוחרים חיבור מרשימת חיבורי הרשת.
לוחצים על Save.
gcloud
הארגומנטים הבאים של Google Cloud CLI מציינים את הפרמטרים של חיבור רשת ה-VPC:
-
--network: מזהה רשת ה-VPC. -
--subnetwork: מזהה רשת המשנה של ה-VPC. -
--network-attachment: שימוש בחיבור רשת קיים במקום זאת.
New network attachment
כדי לחבר את הסביבה לרשת VPC באמצעות חיבור רשת חדש, מריצים את הפקודה הבאה ב-Google Cloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: שם הסביבה -
LOCATION: האזור שבו נמצאת הסביבה -
NETWORK_ID: מזהה רשת ה-VPC -
SUBNETWORK_ID: מזהה רשת המשנה של ה-VPC
דוגמה:
gcloud beta composer environments update example-environment \
--location us-central1 \
--network projects/example-project/global/networks/example-network \
--subnetwork projects/example-project/regions/us-central1/subnetworks/example-subnetwork
קבצים מצורפים לרשת קיימת
כדי לחבר את הסביבה לרשת VPC באמצעות חיבור רשת חדש, מריצים את הפקודה הבאה ב-Google Cloud CLI:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--network-attachment NETWORK_ATTACHMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: שם הסביבה -
LOCATION: האזור שבו נמצאת הסביבה -
NETWORK_ATTACHMENT_ID: קובץ מצורף לרשת בפורמטprojects/{project}/regions/{region}/networkAttachments/{networkAttachment}.
דוגמה:
gcloud beta composer environments update example-environment \
--location us-central1 \
--network-attachment projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
API
יוצרים בקשת API של
environments.patch.בבקשה הזו:
כדי ליצור קובץ מצורף לרשת חדשה:
בפרמטר
updateMask, מציינים את המסכהconfig.node_config.network,config.node_config.subnetwork.בגוף הבקשה, בשדות
networkו-subnetwork, מציינים את מזהי רשת ה-VPC ורשת המשנה.
כדי להשתמש בקובץ מצורף לרשת קיים:
בפרמטר
updateMaskמציינים את המסכהconfig.node_config.composer_network_attachment.בגוף הבקשה, מציינים ערך לצירוף הרשת הקיים בפורמט
projects/{project}/regions/{region}/networkAttachments/{networkAttachment}.
דוגמה (צירוף רשת חדשה):
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork
"config": {
"nodeConfig": {
"network": "projects/example-project/global/networks/example-network",
"subnetwork": "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
}
}
דוגמה (צירוף לרשת קיימת):
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.composer_network_attachment
"config": {
"nodeConfig": {
"composerNetworkAttachment": "projects/example-project/regions/us-central1/networkAttachments/example-network-attachment"
}
}
Terraform
השדות הבאים בבלוק node_config מציינים את פרמטרי החיבור של רשת ה-VPC:
-
network: מזהה רשת ה-VPC. -
subnetwork: מזהה רשת המשנה של ה-VPC. -
composer_network_attachment: שימוש בחיבור רשת קיים במקום זאת.
New network attachment
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
network = NETWORK_ID
subnetwork = SUBNETWORK_ID
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה. -
NETWORK_ID: מזהה רשת ה-VPC -
SUBNETWORK_ID: מזהה רשת המשנה של ה-VPC
דוגמה (צירוף רשת חדשה):
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
network = "projects/example-project/global/networks/example-network"
subnetwork = "projects/example-project/regions/us-central1/subnetworks/example-subnetwork"
}
... other configuration parameters
}
}
קבצים מצורפים לרשת קיימת
כתוצאה מכך, הסביבה לא תשתמש יותר בקובץ המצורף. כדי לפתור את הבעיה, מוודאים ש-Terraform מתעלם משינויים בפרמטר producer_accept_lists של הקובץ המצורף, באופן הבא:
resource "google_compute_network_attachment" "NETWORK_ATTACHMENT_ID" {
lifecycle {
ignore_changes = [producer_accept_lists]
}
# ... other configuration parameters
}
לאחר מכן מציינים את הקובץ המצורף הזה לסביבה. אפשר גם לציין קובץ מצורף שלא מנוהל ב-Terraform, כמו בדוגמה.
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
}
# ... other configuration parameters
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה. -
NETWORK_ATTACHMENT_ID: מזהה הקובץ המצורף לרשת.
דוגמה (צירוף לרשת קיימת):
resource "google_compute_network_attachment" "example" {
lifecycle {
ignore_changes = [producer_accept_lists]
}
# ... other configuration parameters
}
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
# Attachment is managed in Terraform:
composer_network_attachment = google_compute_network_attachment.NETWORK_ATTACHMENT_ID.id
# Attachment is not managed in Terraform:
# composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
}
# ... other configuration parameters
}
}
השבתת החיבור לרשת VPC
המסוף
נכנסים לדף Environments במסוף Google Cloud .
ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.
עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).
בקטע Network configuration, מאתרים את הפריט מחבר רשת ולוחצים על Edit.
בתיבת הדו-שיח Network attachment, בוחרים באפשרות None ולוחצים על Save.
gcloud
הארגומנט --disable-vpc-connectivity משבית את החיבור של סביבתכם לרשת ה-VPC:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-vpc-connectivity
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: שם הסביבה -
LOCATION: האזור שבו נמצאת הסביבה
דוגמה:
gcloud beta composer environments update example-environment \
--location us-central1 \
--disable-vpc-connectivity
API
יוצרים בקשת API של
environments.patch.בבקשה הזו:
בפרמטר
updateMask, מציינים את המסכהconfig.node_config.network,config.node_config.subnetwork.בגוף הבקשה, בשדות
networkו-subnetwork, מציינים ערכים ריקים.
דוגמה:
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.network,config.node_config.subnetwork
"config": {
"nodeConfig": {
"network": "",
"subnetwork": ""
}
}
Terraform
אי אפשר לנתק רשת VPC באמצעות Terraform. במקום זאת, אפשר לצרף רשת VPC אחרת, או לנתק את הרשת באמצעות כלים אחרים כמו Google Cloud CLI.
ניתוב תעבורה ב-Cloud Run דרך קובץ מצורף לרשת
אם מגבילים את התנועה הנכנסת לנקודות קצה פנימיות בשירות Cloud Run, אי אפשר לגשת לנקודת הקצה הזו מסביבת Managed Airflow. הגישה מוגבלת כי עובדי Airflow בפרויקט הדייר של הסביבה לא שייכים לאותה רשת VPC כמו הסביבה.
אפשרות נוספת היא להפנות את תעבורת הנתונים לנקודת הקצה של הפונקציה דרך מחבר הרשת במקום דרך מסלול ברירת המחדל ל-Google APIs, וכך לאפשר גישה.
אחרי השינוי, תעבורת הנתונים לשני הדומיינים הבאים מנותבת דרך מחבר הרשת של הסביבה שלכם:
.run.app.cloudfunctions.net
אם האפליקציה שלכם משתמשת בדומיינים בהתאמה אישית ואתם משתמשים בסביבת IP פרטית עם רשת VPC מקושרת, תעבורת הנתונים לכתובות שאינן של Google עוברת כבר דרך קובץ הרשת של הסביבה כברירת מחדל.
ההגבלות הבאות חלות על סביבה שבה הקישוריות מוגדרת באופן הזה:
- בסביבה צריך להשתמש ברשתות עם כתובות IP פרטיות. אם בסביבה שלכם נעשה שימוש ב-IP ציבורי, אתם יכולים לשנות את סוג הרשת.
- אי אפשר לנתק סביבה מרשת VPC. כדי להתנתק, צריך קודם לחזור לניתוב התנועה שמוגדר כברירת מחדל.
כדי להגדיר ניתוב תנועה ל-Cloud Run:
gcloud
משתמשים בארגומנט --cloud-run-functions-routing כשיוצרים או מעדכנים את הסביבה:
- (ברירת מחדל)
direct: ניתוב התנועה ל-Cloud Run באותו אופן כמו לשירותים ול-Google APIs אחרים. -
via-network-attachment: ניתוב תנועה אל Cloud Run דרך קובץ מצורף לרשת של הסביבה.
אפשר להשתמש בארגומנט הזה באותה פעולה עם חיבור רשת ה-VPC.
כדי להפעיל ניתוב דרך מחבר הרשת של הסביבה, מריצים את הפקודה הבאה ב-CLI של gcloud:
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--cloud-run-functions-routing via-network-attachment
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: שם הסביבה -
LOCATION: האזור שבו נמצאת הסביבה
דוגמה:
gcloud beta composer environments update example-environment \
--location us-central1 \
--cloud-run-functions-routing via-network-attachment
API
יוצרים בקשת API של
environments.patch.בבקשה הזו:
בפרמטר
updateMask, מציינים את המסכהnode_config.TrafficRoutingConfig.בגוף הבקשה, בשדה
cloud_run_functions_routing, מציינים איך לנתב את התנועה אל Cloud Run- (ברירת מחדל)
DIRECT: תנועת נתונים מנותבת ל-Cloud Run באותו אופן כמו לשירותים ול-Google APIs אחרים של Google. -
VIA_NETWORK_ATTACHMENT: ניתוב תנועה אל Cloud Run דרך קובץ מצורף לרשת של הסביבה.
- (ברירת מחדל)
אפשר להשתמש בארגומנט הזה באותה פעולה עם חיבור רשת ה-VPC.
דוגמה:
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.node_config.TrafficRoutingConfig
{
"config": {
"nodeConfig": {
"trafficRoutingConfig": {
"cloudRunFunctionsRouting": "VIA_NETWORK_ATTACHMENT"
}
}
}
}