在 Cloud Composer 中設定授權網路

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面說明如何為環境設定授權網路

關於 Cloud Composer 中的授權網路

授權網路可讓您指定可使用 HTTPS 存取環境叢集控制層的 CIDR 範圍。

舉例來說,在 Cloud Composer 2 中,您必須具備私人 IP 環境的叢集存取權,才能在該環境的叢集中執行 kubectl 指令。這類要求的來源網路必須獲得授權,才能存取環境叢集的控制層。

私人和公開 IP 環境中的授權網路

您可以為公開 IP 和私人 IP 環境指定已授權網路。

  • 在私人 IP 環境中,您可以設定授權網路,允許特定 IP 位址範圍存取環境叢集的控制層。例如,允許特定 IP 範圍執行 kubectl 指令。根據預設,在私人 IP 環境中,您只能從私人 IP 環境的 VPC 子網路中的 VM 執行這些指令。

  • 在公開 IP 環境中,您可以設定授權網路,限制可存取環境叢集控制層的 IP 位址範圍。根據預設,在公開 IP 環境中,可執行 kubectl 指令的 IP 範圍沒有任何限制。

事前準備

建立具有授權網路的環境

gcloud

如要建立具有授權網路的環境,請在建立環境時使用 --enable-master-authorized-networks 引數。然後在 --master-authorized-networks 引數中提供以半形逗號分隔的 CIDR 範圍清單。

如要為私人 IP 環境指定授權網路,請按照下列步驟操作:

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.13.5-airflow-2.10.5 \
    --enable-private-environment \
    --enable-master-authorized-networks \
    --master-authorized-networks AUTHORIZED_NETWORKS_IP_RANGES

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。
  • AUTHORIZED_NETWORKS_IP_RANGES 以半形逗號分隔的 IP 位址範圍清單,採用 CIDR 標記法。這些範圍會新增為環境叢集的授權網路。

範例 (私人 IP 環境):

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.13.5-airflow-2.10.5 \
    --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": {
    "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": {
    "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 {
    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 {

    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 以半形逗號分隔的 IP 位址範圍清單,採用 CIDR 標記法。這些範圍會新增為環境叢集的授權網路。

範例:

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

  1. 建構 environments.patch API 要求。

  2. 在這個要求中:

    1. updateMask 參數中指定 config.softwareConfig.masterAuthorizedNetworksConfig 遮罩。

    2. 在要求主體中,指定授權網路的 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

  1. 建構 environments.patch API 要求。

  2. 在這個要求中:

    1. updateMask 參數中指定 config.softwareConfig.masterAuthorizedNetworksConfig 遮罩。

    2. 在要求主體中,請在 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
    }
  }
}

後續步驟