Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页介绍了您的环境如何在 Cloud Composer 3 中访问 VPC 网络,提供了将环境连接到 VPC 网络的说明,并介绍了如何停用之前配置的连接。
如果您想为环境的 Airflow 组件启用或停用互联网访问权限,请参阅更改环境网络类型(专用 IP 或公共 IP)。
如果您想仅在安装 PyPI 软件包时停用或启用互联网访问权限,请参阅在安装 PyPI 软件包时配置互联网访问权限。
如果您想配置共享 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 网络
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在网络配置部分中,找到网络附件项,然后点击修改。
在网络附件对话框中,执行以下操作:
如需创建新的网络连接,请在网络连接列表中,选择创建新的网络连接。在网络和子网列表中,选择 VPC 网络和子网。
如需使用现有网络连接,请在网络连接列表中选择一个连接。
点击保存。
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 网络 IDSUBNETWORK_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
创建
environments.patch
API 请求。在此请求中:
如需创建新的网络连接,请执行以下操作:
在
updateMask
参数中,指定config.node_config.network,config.node_config.subnetwork
。在请求正文的
network
和subnetwork
中 字段中,指定您的 VPC 网络和子网 ID。
如需使用现有网络附加项,请执行以下操作:
在
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 网络 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 网络 IDSUBNETWORK_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 网络的连接
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在网络配置部分,找到 网络连接项,然后点击修改。
在网络连接对话框中,选择无,然后点击保存。
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
创建
environments.patch
API 请求。在此请求中:
在
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
无法使用 Terraform 分离 VPC 网络。不过,您可以将其他 VPC 网络附加到该 VPC 网络的位置,也可以使用 Google Cloud CLI 等其他工具来分离该 VPC 网络。