在 Cloud Composer 中配置 Private Service Connect

Cloud Composer 1 | Cloud Composer 2

本页面介绍了如何创建使用 Private Service Connect(而非 VPC 对等互连)的专用 IP 环境。

如需了解有关创建专用 IP 环境的一般信息,请参阅配置专用 IP 环境

关于 Cloud Composer 中的 Private Service Connect

您的环境组件分布在租户和客户项目之间。在专用 IP 环境中,位于这两个项目中的组件使用 VPC 对等互连进行连接。VPC 对等互连有一些限制,包括对 VPC 中对等互连的最大数量的限制。在 Cloud Composer 环境中使用大规模网络时,这些限制会更加明显。

借助 Cloud Composer 中的 Private Service Connect 支持,您的专用 IP 环境可在内部进行通信,而无需使用 VPC 对等互连。此类环境使用采用 PSC 架构的专用 IP

准备工作

  • Private Service Connect 支持仅适用于 Cloud Composer 2。

  • 您只能在创建新环境时启用 Private Service Connect。无法将现有环境切换为使用 Private Service Connect。

  • 您的环境必须是专用 IP 环境。 由于不使用 VPC 对等互连,因此您无需为 Cloud SQL 实例和内部 Cloud Composer 网络指定 CIDR 范围。

  • 如果为使用方停用 Private Service Connect 组织政策限制条件拒绝 SERVICE_PRODUCER 端点,则无法使用 Private Service Connect 创建环境。此政策不会影响使用 PSC 的现有 Cloud Composer 环境。启用此政策后,此类环境便可运行。

创建环境时启用 Private Service Connect

控制台

如需使用 Private Service Connect 创建环境,请在创建专用 IP 环境时选择 Private Service Connect 连接类型。然后,为 Private Service Connect 连接指定子网。

创建专用 IP 环境时:

  1. 网络配置部分中,展开显示网络配置项。

  2. 网络类型部分中,选择专用 IP 环境选项以创建专用 IP 环境。

  3. Composer 连接部分中,选择 Private Service Connect

  4. Composer 连接子网下拉列表中,为 Private Service Connect 端点选择子网。

    您可以使用环境的子网。

    作为替代方案,您可以指定其他子网。这样做可以让您更好地控制从中选择 PSC 端点的 IP 地址的 CIDR 范围。此范围可由多个 Cloud Composer 环境共享。每个环境都需要一个 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.5.2-airflow-2.6.3 \
    --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 范围。此范围可由多个 Cloud Composer 环境共享。每个环境都需要一个 IP 地址。

示例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --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.5.2-airflow-2.6.3"
    },
    "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。

    您可以使用环境的子网

    作为替代方案,您可以指定其他子网。这样做可以让您更好地控制从中选择 PSC 端点 IP 地址的 CIDR 范围。此范围可由多个 Cloud Composer 环境共享。每个环境都需要一个 IP 地址。

示例:

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

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

    "softwareConfig": {
      "imageVersion": "composer-2.5.2-airflow-2.6.3"
    },
    "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.5.2-airflow-2.6.3"
    }

    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。

    您可以使用环境的子网

    作为替代方案,您可以指定其他子网。这样做可以让您更好地控制从中选择 PSC 端点 IP 地址的 CIDR 范围。此范围可由多个 Cloud Composer 环境共享。每个环境都需要一个 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.5.2-airflow-2.6.3"
    }

    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"
      }
    }
 }
}

后续步骤