חיבור סביבה לרשת VPC

Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)

בדף הזה מוסבר איך הסביבה שלכם יכולה לגשת לרשת VPC ב-Managed Airflow (דור 3), יש בו הוראות לחיבור סביבה לרשת 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

המסוף

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

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).

  4. בקטע Network configuration, מאתרים את הפריט מחבר רשת ולוחצים על Edit.

  5. בתיבת הדו-שיח מחבר רשת:

    • כדי ליצור קובץ מצורף חדש לרשת, ברשימה Network attachment (קובץ מצורף לרשת), בוחרים באפשרות Create a new network attachment (יצירת קובץ מצורף חדש לרשת). ברשימות Network ו-Subnetwork, בוחרים רשת VPC ורשת משנה.

    • כדי להשתמש בחיבור רשת קיים, בוחרים חיבור מרשימת חיבורי הרשת.

  6. לוחצים על 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

  1. יוצרים בקשת API של environments.patch.

  2. בבקשה הזו:

    • כדי ליצור קובץ מצורף לרשת חדשה:

      1. בפרמטר updateMask, מציינים את המסכה config.node_config.network,config.node_config.subnetwork.

      2. בגוף הבקשה, בשדות network ו-subnetwork, מציינים את מזהי רשת ה-VPC ורשת המשנה.

    • כדי להשתמש בקובץ מצורף לרשת קיים:

      1. בפרמטר updateMask מציינים את המסכה config.node_config.composer_network_attachment.

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

המסוף

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

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).

  4. בקטע Network configuration, מאתרים את הפריט מחבר רשת ולוחצים על Edit.

  5. בתיבת הדו-שיח 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

  1. יוצרים בקשת API של environments.patch.

  2. בבקשה הזו:

    1. בפרמטר updateMask, מציינים את המסכה config.node_config.network,config.node_config.subnetwork.

    2. בגוף הבקשה, בשדות 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

  1. יוצרים בקשת API של environments.patch.

  2. בבקשה הזו:

    1. בפרמטר updateMask, מציינים את המסכה node_config.TrafficRoutingConfig.

    2. בגוף הבקשה, בשדה 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"
      }
    }
  }
}

המאמרים הבאים