在 Cloud Composer 中配置 Private Service Connect

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

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

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

关于 Cloud Composer 中的 Private Service Connect

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

支持 Private Service Connect Cloud Composer 中,您的专用 IP 环境 而无需使用 VPC 对等互连。此类环境使用 采用 PSC 架构的专用 IP

准备工作

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

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

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

  • 如果为使用方停用 Private Service Connect 拒绝组织政策限制条件 SERVICE_PRODUCER 端点,则无法使用 Private Service Connect。此政策不会影响 使用 Cloud Composer Private Service Connect。此类环境 在此政策处于启用状态时,应用可以正常运行

创建环境时启用 Private Service Connect

控制台

如需创建具有 Private Service Connect 的环境,请执行以下操作: 创建 Private Service Connect 时, 专用 IP 环境。然后为 Private Service Connect 连接指定子网。

创建专用 IP 环境时:

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

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

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

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

    您可以使用环境的子网。

    或者,您可以指定其他子网。执行此操作 可让您更好地控制 选择 PSC 端点。该范围可由多个 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.9.7-airflow-2.9.3 \
    --enable-private-environment \
    --web-server-allow-all \
    --connection-subnetwork ENVIRONMENT_PSC_SUBNETWORK

替换:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。
  • ENVIRONMENT_PSC_SUBNETWORK 替换为 Private Service Connect 端点的子网 URI。

    您可以使用 环境的子网

    或者,您也可以指定其他子网。执行此操作 可让您更好地控制 选择的是 PSC 端点。此范围可供多个 Cloud Composer 环境共享。每个环境都需要一个 IP 地址。

例如:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.9.7-airflow-2.9.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.9.7-airflow-2.9.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 端点。此范围可供多个 Cloud Composer 环境共享。每个环境都需要一个 IP 地址。

示例:

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

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

    "softwareConfig": {
      "imageVersion": "composer-2.9.7-airflow-2.9.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.9.7-airflow-2.9.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 端点。此范围可由多个 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.9.7-airflow-2.9.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"
      }
    }
 }
}

后续步骤