Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明如何為環境設定授權網路。
關於 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 子網路中的 VM 執行這些指令。在公開 IP 環境中,您可以設定授權網路,限制可存取環境叢集控制層的 IP 位址範圍。在公開 IP 環境中,預設情況下,可執行
kubectl和 Airflow CLI 指令的 IP 範圍沒有任何限制。
事前準備
您只能使用
gcloud、Terraform 和 REST API 指定授權網路。您可以在建立環境時指定授權網路,也可以為現有環境指定授權網路。
建立具有授權網路的環境
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 要求。在 Environment 資源中,指定授權網路環境的設定參數。
如要為私人 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 範圍,請在
master_authorized_networks_config中新增額外的cidr_blocks區塊。
範例 (私人 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.patchAPI 要求。在這個要求中:
在
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 範圍,請在
master_authorized_networks_config中新增額外的cidr_blocks區塊。
範例:
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.patchAPI 要求。在這個要求中:
在
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
}
}
}