在 Managed Airflow 中設定 Private Service Connect

Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)

本頁說明如何建立私人 IP 環境,使用 Private Service Connect 而非 VPC 對等互連。

如需建立私人 IP 環境的一般資訊,請參閱「設定私人 IP 環境」。

關於 Managed Airflow 中的 Private Service Connect

環境的元件會分配至租戶和客戶專案。在私人 IP 環境中,這兩個專案中的元件會使用 VPC 對等互連連線。VPC 對等互連有一些限制,包括 VPC 中的對等互連數量上限。如果您使用大型網路和 Managed Airflow 環境,這些限制可能會更加明顯。

Managed Airflow 支援 Private Service Connect,因此私人 IP 環境可進行內部通訊,不必使用 VPC 對等互連。這類環境會使用私人 IP 和 PSC 架構

事前準備

  • Private Service Connect 僅適用於 Managed Airflow (第 2 代)。

  • 您只能在建立新環境時啟用 Private Service Connect。現有環境無法改用 Private Service Connect。

  • 您的環境必須是私人 IP 環境。由於未使用 VPC 對等互連,因此您不需要為 Cloud SQL 執行個體和內部 Managed Airflow 網路指定 CIDR 範圍。

  • 如果停用用戶的 Private Service Connect 機構政策限制拒絕 SERVICE_PRODUCER 端點,就無法使用 Private Service Connect 建立環境。這項政策不會影響現有採用 Private Service Connect 的 Managed Airflow 環境。啟用這項政策後,這類環境就能運作。

建立環境時啟用 Private Service Connect

控制台

如要建立使用 Private Service Connect 的環境,請在建立私有 IP 環境時選取「Private Service Connect」連線類型。然後指定 Private Service Connect 連線的子網路。

建立私人 IP 環境時:

  1. 在「網路設定」部分,展開「顯示網路設定」項目。

  2. 在「網路類型」部分,選取「私人 IP 環境」選項,建立私人 IP 環境。

  3. 在「Composer connectivity」(Composer 連線) 區段中,選取「Private Service Connect」(私人服務連線)

  4. 在「Composer connection subnetwork」(Composer 連線子網路) 下拉式選單中,選取 Private Service Connect 端點的子網路。

    您可以使用環境的子網路。

    或者,您也可以指定其他子網路。這樣一來,您就能進一步控管選取 PSC 端點 IP 位址的 CIDR 範圍。這個範圍可由多個 Managed Airflow 環境共用。每個環境都需要一個 IP 位址。

  5. 指定私人 IP 環境的其他參數。

gcloud

如要建立使用 Private Service Connect 的環境,請在建立私人 IP 環境時使用 --connection-subnetwork 引數。然後指定 Private Service Connect 連線的子網路。

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.17.0-airflow-2.11.1 \
    --enable-private-environment \
    --web-server-allow-all \
    --connection-subnetwork ENVIRONMENT_PSC_SUBNETWORK

更改項目:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的區域。
  • ENVIRONMENT_PSC_SUBNETWORK,並提供 Private Service Connect 端點的子網路 URI。

    您可以使用環境的子網路

    或者,您也可以指定其他子網路。這樣做可讓您進一步控管選取 PSC 端點 IP 位址的 CIDR 範圍。多個 Managed Airflow 環境可以共用這個範圍。每個環境都需要一個 IP 位址。

範例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.17.0-airflow-2.11.1 \
    --enable-private-environment \
    --web-server-allow-all \
    --connection-subnetwork "projects/example-project/regions/us-central1/subnetworks/default"

API

建構 environments.create API 要求。在「環境」資源中,指定 Private Service Connect 連線的設定參數。

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",

  "config": {
    "softwareConfig": {
      "imageVersion": "composer-2.17.0-airflow-2.11.1"
    },
    "nodeConfig": {
      "network": "ENVIRONMENT_NETWORK",
      "subnetwork": "ENVIRONMENT_SUBNETWORK"
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "privateClusterConfig": {
        "enablePrivateEndpoint": false
      },
      "cloudComposerConnectionSubnetwork": "ENVIRONMENT_PSC_SUBNETWORK"
    }
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "0.0.0.0/0",
          "description": "Allows access from all IPv4 addresses"
        },
        {
          "value": "::0/0",
          "description": "Allows access from all IPv6 addresses"
        }
      ]
    }
  }
}

更改項目:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • ENVIRONMENT_NETWORK,其中包含環境網路的 URI。
  • ENVIRONMENT_SUBNETWORK,並提供環境子網路的 URI。
  • ENVIRONMENT_PSC_SUBNETWORK,其中包含 PSC 端點的子網路 URI。

    您可以使用環境的子網路

    或者,您也可以指定其他子網路。這樣做可讓您進一步控管 CIDR 範圍,從中選取 PSC 端點的 IP 位址。多個 Managed Airflow 環境可以共用這個範圍。每個環境都需要一個 IP 位址。

範例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {

    "softwareConfig": {
      "imageVersion": "composer-2.17.0-airflow-2.11.1"
    },
    "nodeConfig": {
      "network": "projects/example-project/global/networks/default",
      "subnetwork": "projects/example-project/regions/us-central1/subnetworks/default"
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "privateClusterConfig": {
        "enablePrivateEndpoint": false
      },
      "cloudComposerConnectionSubnetwork": "projects/example-project/regions/us-central1/subnetworks/default"
    }
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "0.0.0.0/0",
          "description": "Allows access from all IPv4 addresses"
        },
        {
          "value": "::0/0",
          "description": "Allows access from all IPv6 addresses"
        }
      ]
    }
  }
}

Terraform

建立環境時,private_environment_config 區塊中的 cloud_composer_connection_subnetwork 欄位會啟用 Private Service Connect。

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {
      image_version = "composer-2.17.0-airflow-2.11.1"
    }

    node_config {
      network = "ENVIRONMENT_NETWORK"
      subnetwork = "ENVIRONMENT_SUBNETWORK"

    }

    private_environment_config {
      // Other private IP environment parameters
      cloud_composer_connection_subnetwork = "ENVIRONMENT_PSC_SUBNETWORK"
    }

    web_server_network_access_control  {
      allowed_ip_range {
        value = "0.0.0.0/0"
        description = "Allows access from all IPv4 addresses"
      }

      allowed_ip_range {
        value = "::0/0"
        description = "Allows access from all IPv6 addresses"
      }
    }
  }
}

更改項目:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • ENVIRONMENT_NETWORK,其中包含環境網路的 URI。
  • ENVIRONMENT_SUBNETWORK,並提供環境子網路的 URI。
  • ENVIRONMENT_PSC_SUBNETWORK,其中包含 PSC 端點的子網路 URI。

    您可以使用環境的子網路

    或者,您也可以指定其他子網路。這樣做可讓您進一步控管 CIDR 範圍,從中選取 PSC 端點的 IP 位址。多個 Managed Airflow 環境可以共用這個範圍。每個環境都需要一個 IP 位址。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    environment_size = "ENVIRONMENT_SIZE_SMALL"

    software_config {
      image_version = "composer-2.17.0-airflow-2.11.1"
    }

    node_config {
      network = "projects/example-project/global/networks/default"
      subnetwork = "projects/example-project/regions/us-central1/subnetworks/default"
    }

    private_environment_config {
      // Other private IP environment parameters
      enable_private_endpoint = "true"
      cloud_composer_connection_subnetwork = "projects/example-project/regions/us-central1/subnetworks/default"
    }

    web_server_network_access_control  {
      allowed_ip_range {
        value = "0.0.0.0/0"
        description = "Allows access from all IPv4 addresses"
      }

      allowed_ip_range {
        value = "::0/0"
        description = "Allows access from all IPv6 addresses"
      }
    }
 }
}

後續步驟