Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
本页面介绍了您的环境如何在 VPC 网络中 Cloud Composer 3 提供了将环境连接到 VPC 的说明 并介绍了如何停用之前配置的连接。
如果要为环境的 Airflow 组件,请参见 更改环境网络类型(专用或公共 IP)。
如果您想仅在安装 PyPI 软件包时停用或启用互联网访问权限,请参阅在安装 PyPI 软件包时配置互联网访问权限。
如果要配置共享 VPC 网络,请参阅 配置共享 VPC,了解如何配置 项目和权限。
VPC 网络访问简介
在 Cloud Composer 3 中,您可以为环境启用对 VPC 网络的访问权限。
如果您为环境启用对 VPC 网络的访问权限,则:
您环境中的 Airflow 组件可以访问 VPC 网络中的专用网络端点。例如: 您的 DAG 代码可以通过 配置了 Airflow 连接。
如果您的环境使用专用 IP 网络, 除流向 Google Services API 的流量外,所有内部流量都会路由到 您的 VPC 网络。
根据您配置 VPC 网络的方式,专用 IP 环境可以通过您的 VPC 网络访问互联网。
无论 VPC 网络访问状态如何 始终可行
您的 VPC 中定义的专用 DNS 区域 网络会自动提供给您环境的 Airflow 组件。
环境会在您的 VPC 子网中预留两个 IP 地址。
Cloud Composer 使用网络连接将您的环境连接到 VPC 网络:
如果您指定了 VPC 网络和子网,Cloud Composer 会在您的项目中创建新的网络附件。在您删除环境、停用与 VPC 网络的连接或覆盖 VPC 连接参数后,系统会删除此附件。
如果您指定了现有网络附件,则该附件必须与环境位于同一项目中。这个 删除环境、停用连接或覆盖 VPC 连接参数后,连接未删除。
在共享 VPC 网络中:
确保您已为 Cloud Composer 配置共享 VPC 网络。请参阅 配置共享 VPC,了解如何配置 项目和权限
配置共享 VPC 网络后,您可以将环境连接到宿主项目中的 VPC 网络。如果您使用现有网络附件,则必须在服务项目(环境所在的位置)中创建该附件,并将其附加到共享 VPC 网络。
环境的内部 IP 范围简介
Cloud Composer 3 环境需要多个 IP 地址才能 在租户项目中运行的组件,例如 环境的集群和 Cloud SQL 代理。这些 IP 地址取自环境的内部 IP 地址范围。
默认的内部 IP 地址范围为
100.64.128.0/20
。您可以在创建环境时指定其他内部 IP 地址范围。此范围必须使用
/20
掩码。您无法更改现有环境的内部 IP 范围。
内部 IP 范围会以以下方式与您的 VPC 网络互动:
内部 IP 范围不得与 已连接到 Cloud Composer 环境。无法启用与内部 IP 范围重叠的 VPC 子网的连接。
如果环境的内部 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 网络。