Cloud Composer 1 | Cloud Composer 2
本页介绍了如何为您的环境配置授权网络。
Cloud Composer 中的授权网络简介
通过授权网络,您可以指定可以使用 HTTPS 访问环境的集群控制平面的 CIDR 范围。
例如,在 Cloud Composer 1 中,必须要在专用 IP 环境中对环境的集群进行此类访问,才能运行 Airflow CLI 命令(gcloud composer environments run
)。产生此类请求的网络必须获得授权才能访问环境集群的控制平面。
专用和公共 IP 环境中的授权网络
您可以为公共 IP 和专用 IP 环境指定授权网络。
在专用 IP 环境中,您可以配置授权网络以允许特定范围的 IP 地址访问环境集群的控制平面。例如,允许特定 IP 地址范围运行
kubectl
和 Airflow CLI 命令。默认情况下,在专用 IP 环境中,您只能通过专用 IP 环境的 VPC 子网中的虚拟机运行这些命令。在公共 IP 环境中,您可以配置授权网络来限制可访问环境集群的控制平面的 IP 地址范围。默认情况下,在公共 IP 环境中,可以运行
kubectl
和 Airflow CLI 命令的 IP 范围没有限制。
准备工作
使用授权网络创建环境
gcloud
如需创建具有授权网络的环境,请在创建环境时使用 --enable-master-authorized-networks
参数。然后在 --master-authorized-networks
参数中提供以英文逗号分隔的 CIDR 范围列表。
如需为专用 IP 环境指定授权网络,请执行以下操作:
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--enable-private-environment \
--enable-master-authorized-networks \
--master-authorized-networks AUTHORIZED_NETWORKS_IP_RANGES
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。- 将
LOCATION
替换为环境所在的区域。 - 将
AUTHORIZED_NETWORKS_IP_RANGES
替换为采用 CIDR 表示法的 IP 地址范围的逗号分隔列表。这些范围将添加为环境集群的授权网络。
示例(专用 IP 环境):
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--enable-private-environment \
--enable-privately-used-public-ips \
--enable-master-authorized-networks \
--master-authorized-networks 192.0.2.0/23,192.0.4.0/23
API
构建 environments.create
API 请求。在环境资源中,为具有授权网络的环境指定配置参数。
如需为专用 IP 环境指定授权网络,请执行以下操作:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
},
"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
{
"displayName": "AUTHORIZED_NETWORK_NAME",
"cidrBlock": "AUTHORIZED_NETWORK_RANGE"
}
]
}
}
}
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。- 将
AUTHORIZED_NETWORK_NAME
替换为授权网络 IP 地址范围的名称。您将使用此名称标识此块。此字段是可选字段。 - 将
AUTHORIZED_NETWORK_RANGE
替换为以 CIDR 表示法指定的 IP 地址范围。此范围将添加为环境集群的授权网络。 - 如果您想要使用多个 IP 范围,请向
cidrBlocks
添加额外的范围。
示例(专用 IP 环境):
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "example-environment",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
},
"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
{
"displayName": "example_range_1",
"cidrBlock": "192.0.2.0/23"
},
{
"displayName": "example_range_2",
"cidrBlock": "192.0.4.0/23"
}
]
}
}
}
Terraform
创建环境时,config
中的 master_authorized_networks_config
代码块用于控制您的环境的授权网络。
如需为专用 IP 环境指定授权网络,请执行以下操作:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
ip_allocation_policy = [{
use_ip_aliases = true
}]
}
private_environment_config {
// Private environment parameters
}
master_authorized_networks_config {
enabled = true
cidr_blocks {
cidr_block = "AUTHORIZED_NETWORK_RANGE"
display_name = "AUTHORIZED_NETWORK_NAME"
}
}
}
}
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。- 将
LOCATION
替换为环境所在的区域。 - 将
AUTHORIZED_NETWORK_RANGE
替换为以 CIDR 表示法指定的 IP 地址范围。此范围将添加为环境集群的授权网络。 - 将
AUTHORIZED_NETWORK_NAME
替换为授权网络 IP 地址范围的名称。您需要使用此名称来识别此块。 - 如果要使用多个 IP 范围,请将额外的
cidr_blocks
块添加到master_authorized_networks_config
。
示例(专用 IP 环境):
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
// Specify your network and subnetwork
network = google_compute_network.example_network.id
subnetwork = google_compute_subnetwork.example_subnet.id
ip_allocation_policy = [{
use_ip_aliases = true
}]
}
private_environment_config {
// Private environment parameters
}
master_authorized_networks_config {
enabled = true
cidr_blocks {
cidr_block = "192.0.2.0/23"
display_name = "example_range_1"
}
cidr_blocks {
cidr_block = "192.0.4.0/23"
display_name = "example_range_2"
}
}
}
}
为现有环境指定授权网络
您可以为现有环境指定授权网络。
gcloud
如需指定授权网络,请使用 --enable-master-authorized-networks
参数。然后在 --master-authorized-networks
参数中提供以英文逗号分隔的 CIDR 范围列表。
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-master-authorized-networks \
--master-authorized-networks AUTHORIZED_NETWORKS_IP_RANGES
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。- 将
LOCATION
替换为环境所在的区域。 - 将
AUTHORIZED_NETWORKS_IP_RANGES
替换为采用 CIDR 表示法的 IP 地址范围的逗号分隔列表。这些范围将添加为环境集群的授权网络。
示例:
gcloud composer environments update example-environment \
--location us-central1 \
--enable-master-authorized-networks \
--master-authorized-networks 192.0.2.0/23,192.0.4.0/23
API
构建
environments.patch
API 请求。在此请求中:
在参数
updateMask
中,指定config.softwareConfig.masterAuthorizedNetworksConfig
掩码。在请求正文中,指定授权网络的 CIDR 范围。
"config": {
"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
{
"displayName": "AUTHORIZED_NETWORK_NAME",
"cidrBlock": "AUTHORIZED_NETWORK_RANGE"
}
]
}
}
您需要将其中的:
- 将
AUTHORIZED_NETWORK_NAME
替换为授权网络 IP 地址范围的名称。您将使用此名称标识此块。此字段是可选字段。 - 将
AUTHORIZED_NETWORK_RANGE
替换为以 CIDR 表示法指定的 IP 地址范围。此范围将添加为环境集群的授权网络。 - 如果您想要使用多个 IP 范围,请向
cidrBlocks
添加额外的范围。
示例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.masterAuthorizedNetworksConfig
"config": {
"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
{
"displayName": "example_range_1",
"cidrBlock": "192.0.2.0/23"
},
{
"displayName": "example_range_2",
"cidrBlock": "192.0.4.0/23"
}
]
}
}
Terraform
config
块中的 master_authorized_networks_config
代码块用于控制您的环境的授权网络。
如需为专用 IP 环境添加授权网络,请将以下代码块添加到您的环境定义中:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example_environment"
region = "us-central1"
config {
// Other environment parameters
master_authorized_networks_config {
enabled = true
cidr_blocks {
cidr_block = "AUTHORIZED_NETWORK_RANGE"
display_name = "AUTHORIZED_NETWORK_NAME"
}
}
}
}
您需要将其中的:
- 将
AUTHORIZED_NETWORK_RANGE
替换为以 CIDR 表示法指定的 IP 地址范围。此范围将添加为环境集群的授权网络。 - 将
AUTHORIZED_NETWORK_NAME
替换为授权网络 IP 地址范围的名称。您需要使用此名称来识别此块。 - 如果要使用多个 IP 范围,请将额外的
cidr_blocks
块添加到master_authorized_networks_config
。
示例:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
// Other environment parameters
master_authorized_networks_config {
enabled = true
cidr_blocks {
cidr_block = "192.0.2.0/23"
display_name = "example_range_1"
}
cidr_blocks {
cidr_block = "192.0.4.0/23"
display_name = "example_range_2"
}
}
}
}
停用授权网络
您可以为现有环境停用授权网络:
- 对于专用 IP 环境,这会移除先前添加为授权网络的范围的访问权限。
对于公共 IP 环境,这会移除之前配置的限制。
gcloud
如需停用授权网络,请使用 --disable-master-authorized-networks
参数。
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-master-authorized-networks
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。- 将
LOCATION
替换为环境所在的区域。
示例:
gcloud composer environments update example-environment \
--location us-central1 \
--disable-master-authorized-networks
API
构建
environments.patch
API 请求。在此请求中:
在参数
updateMask
中,指定config.softwareConfig.masterAuthorizedNetworksConfig
掩码。在请求正文的
enabled
字段中指定false
。
"config": {
"masterAuthorizedNetworksConfig": {
"enabled": false
}
}
示例:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.masterAuthorizedNetworksConfig
"config": {
"masterAuthorizedNetworksConfig": {
"enabled": false,
}
}
Terraform
config
块中的 master_authorized_networks_config
代码块用于控制您的环境的授权网络。
如需停用授权网络,请将 master_authorized_networks_config
代码块中的 enabled
字段设置为 false
。
示例:
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example_environment"
region = "us-central1"
config {
// Other environment parameters
master_authorized_networks_config {
enabled = false
}
}
}