将环境连接到 VPC 网络

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

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

VPC 网络访问简介

在 Cloud Composer 3 中,您可以允许特定人员访问 VPC 网络, 环境

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

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

  • 如果您的环境使用专用 IP 网络除流向 Google Services API 的流量外,所有内部流量都会路由到 您的 VPC 网络

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

  • 无论 VPC 网络访问状态如何 始终可行

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

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

Cloud Composer 使用 网络连接 连接到 VPC 网络:

  • 如果您指定了 VPC 网络和子网 系统会在项目中创建新的网络连接。此附件已删除 删除环境后, 停用与 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 子网之间的连接,该子网与 内部 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_IDprojects/{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 网络来取代它,或者使用 Google Cloud CLI 等工具

后续步骤