将环境连接到 VPC 网络

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

本页介绍了您的环境如何在 Cloud Composer 3 中访问 VPC 网络,提供了将环境连接到 VPC 网络的说明,并介绍了如何停用之前配置的连接。

VPC 网络访问简介

在 Cloud Composer 3 中,您可以为环境启用对 VPC 网络的访问权限。

如果您为环境启用对 VPC 网络的访问权限,则:

  • 您的环境的 Airflow 组件 可以访问您的 VPC 网络中的专用网络端点。例如: 您的 DAG 代码可以通过 配置了 Airflow 连接

  • 如果您的环境使用专用 IP 网络所有内部流量都会路由到您的 VPC 网络,但通过专用 Google 访问通道可供专用 IP 环境使用的 Google API、服务和网域的流量除外。

  • 根据您配置 VPC 网络的方式,专用 IP 环境可以通过您的 VPC 网络访问互联网

  • 在 VPC 网络中定义的专用 DNS 区域会自动提供给环境的 Airflow 组件。

  • 环境会在您的 VPC 子网中预留两个 IP 地址。

Cloud Composer 使用网络连接将您的环境连接到 VPC 网络:

  • 如果您指定了 VPC 网络和子网,Cloud Composer 会在您的项目中创建新的网络附件。在您删除环境、停用与 VPC 网络的连接或覆盖 VPC 连接参数后,系统会删除此附件。

  • 如果您指定 现有网络连接, 那么它必须与环境位于同一项目中。这个 删除环境、停用连接或覆盖 VPC 连接参数后,连接未删除。

  • 在共享 VPC 网络中:

    • 确保您已为以下集群配置了共享 VPC 网络: Cloud Composer请参阅 配置共享 VPC,了解如何配置 项目和权限

    • 配置共享 VPC 网络后,您可以 从宿主项目连接到 VPC 网络。如果您使用现有网络附件,则必须在服务项目(环境所在的位置)中创建该附件,并将其附加到共享 VPC 网络。

环境的内部 IP 范围简介

Cloud Composer 3 环境需要多个 IP 地址才能 在租户项目中运行的组件,例如 环境的集群和 Cloud SQL 代理。这些 IP 地址取自环境的内部 IP 地址范围

  • 默认内部 IP 范围为 100.64.128.0/20

  • 在创建 环境此范围必须使用 /20 掩码。

  • 您无法更改现有环境的内部 IP 范围。

内部 IP 范围通过以下方式与您的 VPC 网络进行交互:

  • 内部 IP 地址范围不得与 Cloud Composer 环境连接的 VPC 子网冲突。不可能 以启用与 VPC 子网之间的连接,该子网与 内部 IP 范围。

  • 如果环境的内部 IP 地址范围与您的 VPC 网络范围重叠,则环境无法访问 VPC 网络中具有重叠 IP 地址的端点

    例如,如果内部范围为 100.64.128.0/20,则任何请求 到 VPC 网络中的 100.64.128.1 端点的连接失败,因为 请求未离开租户项目。

  • 内部 IP 范围未预留。您可以使用同一内部 IP 而无需进行任何其他设置 不同环境使用的内部 VPC 网络是相互独立的。

  • 您可以将内部范围 IP 地址用于其他目的,前提是 您环境中的 DAG 和任务不会向它们发出请求。

连接到 VPC 网络

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页。

  4. 网络配置部分中,找到网络附件项,然后点击修改

  5. 网络附件对话框中,执行以下操作:

    • 如需创建新的网络连接,请在网络连接列表中,选择创建新的网络连接。在网络子网列表中,选择 VPC 网络和子网。

    • 如需使用现有网络连接,请在网络连接列表中选择一个连接。

  6. 点击保存

gcloud

以下 Google Cloud CLI 参数指定 VPC 网络连接 参数:

  • --network:VPC 网络 ID。
  • --subnetwork:VPC 子网 ID。
  • --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 网络 ID
  • SUBNETWORK_ID:VPC 子网 ID

示例:

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. 创建 environments.patch API 请求。

  2. 在此请求中:

    • 如需创建新的网络连接,请执行以下操作:

      1. updateMask 参数中,指定 config.node_config.network,config.node_config.subnetwork

      2. 在请求正文的 networksubnetwork 中 字段中,指定您的 VPC 网络和子网 ID。

    • 如需使用现有网络附加项,请执行以下操作:

      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 网络 ID。
  • subnetwork:VPC 子网 ID。
  • composer_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 网络 ID
  • SUBNETWORK_ID:VPC 子网 ID

示例(新网络连接):

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
  }
}

现有网络连接

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      composer_network_attachment = NETWORK_ATTACHMENT_ID
    }

  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • NETWORK_ATTACHMENT_ID:网络连接 ID。

示例(现有网络连接):

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {
      composer_network_attachment = projects/example-project/regions/us-central1/networkAttachments/example-network-attachment
    }

    ... other configuration parameters
  }
}

停用与 VPC 网络的连接

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页。

  4. 网络配置部分,找到 网络连接项,然后点击修改

  5. 网络连接对话框中,选择,然后点击保存

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. 创建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.node_config.network,config.node_config.subnetwork

    2. 在请求正文的 networksubnetwork 字段中,指定空值。

示例:

// 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

无法使用 Terraform 分离 VPC 网络。不过,您可以将其他 VPC 网络附加到该 VPC 网络的位置,也可以使用 Google Cloud CLI 等其他工具来分离该 VPC 网络。

后续步骤