同时配置专用服务访问通道和 Private Service Connect

本页介绍了如何同时配置专用服务访问Private Service Connect

通过配置专用服务访问通道,您可以在 Google Cloud 项目中为 Virtual Private Cloud (VPC) 网络分配 IP 地址范围并创建专用服务连接。这样一来,VPC 网络中的资源便可连接到您的 Cloud SQL 实例。

通过配置 Private Service Connect,您可以从属于不同群组、团队、项目或组织的多个 VPC 网络连接到 Cloud SQL 主实例或其任何只读副本。

创建支持专用服务访问和 Private Service Connect 的实例

通过创建同时支持专用服务访问和 Private Service Connect 的 Cloud SQL 实例,您可以同时获享这两项服务的好处。如需了解详情,请参阅实例的连接选项

借助 Private Service Connect,您可以从属于不同群组、团队、项目或组织的多个 VPC 网络连接到 Cloud SQL 实例。

您可以使用 gcloud CLI 或 API 创建支持专用服务访问和 Private Service Connect 的 Cloud SQL 实例。

gcloud

如需创建同时支持专用服务访问和 Private Service Connect 的实例,请使用 gcloud beta sql instances create 命令:

gcloud beta sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip \
--allocated-ip-range-name=RANGE_NAME \
--database-version=DATABASE_VERSION \
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD \
--network=VPC_NETWORK_NAME \
--psc-auto-connections=network=VPC_NETWORK_PATH,project=SERVICE_PROJECT

进行以下替换:

  • INSTANCE_NAME:实例的名称。
  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • REGION_NAME:实例的区域名称。
  • ALLOWED_PROJECTS:允许的项目 ID 或编号列表(以英文逗号分隔)。如果某个项目未包含在此列表中,您将无法在该项目中创建 Private Service Connect 端点来连接到实例。

  • AVAILABILITY_TYPE:为实例启用高可用性。对于此参数,请指定以下值之一:
    • REGIONAL:启用高可用性,建议用于生产实例。实例会故障切换到所选区域内的另一个可用区。
    • ZONAL:不提供故障切换功能。此设置为默认值。

    如需详细了解如何为实例设置和移除高可用性,请参阅为现有实例配置高可用性为实例停用高可用性

  • RANGE_NAME:对于此可选参数,请设置为其分配 IP 地址范围的范围名称。范围名称必须符合 RFC 1035 并且包含 1 到 63 个字符。
  • DATABASE_VERSION:实例的数据库版本(例如 SQLSERVER_2019_STANDARD)。
  • NUMBER_OF_vCPUs:实例的核心数。
  • MEMORY_SIZE:实例的内存量。
  • ROOT_PASSWORDroot Cloud SQL 用户的密码。
  • VPC_NETWORK_NAME:实例连接到的 VPC 网络的名称和路径(例如 "projects/PROJECT_ID/global/networks/default")。
  • VPC_NETWORK_PATH:需要在其中创建 Private Service Connect 端点的 VPC 网络的路径。例如:
    projects/my-host-project/global/networks/default
  • SERVICE_PROJECT:创建 Private Service Connect 端点的项目。如果 VPC 网络不是共享 VPC,则此项目只能是该网络的宿主项目。如果这是共享 VPC,则可以是宿主项目,也可以是服务项目。

    您在自动连接参数中指定的所有项目都会自动添加到允许的项目中。

如需了解如何连接到已启用 Private Service Connect 的实例,请参阅连接到 Cloud SQL 实例

如需停用公共 IP,请使用 --no-assign-ip 参数。

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • INSTANCE_NAME:实例的名称。
  • REGION_NAME:实例的区域名称。
  • ROOT_PASSWORDroot Cloud SQL 用户的密码。
  • AVAILABILITY_TYPE:为实例启用高可用性。对于此参数,请指定以下值之一:
    • REGIONAL:启用高可用性,建议用于生产实例。实例会故障切换到所选区域内的另一个可用区。
    • ZONAL:不提供故障切换功能。此设置为默认值。

    如需详细了解如何为实例设置和移除高可用性,请参阅为现有实例配置高可用性为实例停用高可用性

  • VPC_NETWORK_NAME:实例连接到的 VPC 网络的名称和路径(例如 "projects/PROJECT_ID/global/networks/default")。
  • RANGE_NAME:对于此可选参数,请设置为其分配 IP 地址范围的范围名称。范围名称必须符合 RFC 1035 并且包含 1 到 63 个字符。
  • ALLOWED_PROJECTS:允许的项目 ID 或编号列表(以英文逗号分隔)。如果某个项目未包含在此列表中,您将无法在该项目中创建 Private Service Connect 端点来连接到实例。

  • VPC_NETWORK_PATH:需要在其中创建 Private Service Connect 端点的 VPC 网络的路径。例如:
    projects/my-host-project/global/networks/default
  • SERVICE_PROJECT:创建 Private Service Connect 端点的项目。如果 VPC 网络不是共享 VPC,则此项目只能是该网络的宿主项目。如果这是共享 VPC,则可以是宿主项目,也可以是服务项目。

    您在自动连接参数中指定的所有项目都会自动添加到允许的项目中。

  • MACHINE_TYPE:一个枚举字符串值,表示实例的机器类型。例如:db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE,其中 NUMBER_OF_vCPUsMEMORY_SIZE 是实例所需的核心数和内存量。

如需了解如何连接到已启用 Private Service Connect 的实例,请参阅连接到 Cloud SQL 实例

您将 ipv4Enabled 参数设置为 false,因为您的实例具有内部 IP 地址。

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

请求 JSON 正文:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": VPC_NETWORK_NAME,
      "allocatedIpRange": "RANGE_NAME",
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscAutoConnections": [
          {
            "consumerProject":"SERVICE_PROJECT",
            "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK_PATH"
          }
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

为实例停用 Private Service Connect

对于同时启用了专用服务访问通道和 Private Service Connect 的实例,您可以停用 Private Service Connect。出于安全考虑,您可能不希望从属于不同群组、团队、项目或组织的多个 VPC 网络连接到实例。

您可以使用 gcloud CLI 或 API 为实例停用 Private Service Connect。

gcloud

如需为实例停用 Private Service Connect,请使用 gcloud beta sql instances patch 命令:

gcloud beta sql instances patch INSTANCE_NAME \
--project=PROJECT_ID \
--no-enable-private-service-connect \
--clear-allowed-psc-projects

进行以下替换:

  • INSTANCE_NAME:实例的名称
  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • INSTANCE_NAME:实例的名称

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

请求 JSON 正文:

{
  "kind": "sql#instance",
  "name": "INSTANCE_NAME",
  "project": "PROJECT_ID",
  "settings": {
    "ipConfiguration": {
      "pscConfig": {
        "pscEnabled": "false",
        "allowedConsumerProjects": [{}]
      }
    },
    "kind": "sql#settings"
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

为实例启用 Private Service Connect

您可以为已启用专用服务访问通道的实例启用 Private Service Connect。您可以使用 Private Service Connect 从多个 VPC 网络连接到 Cloud SQL 实例。

您可以使用 gcloud CLI 或 API 为实例启用 Private Service Connect。

gcloud

如需为实例启用 Private Service Connect,请使用 gcloud beta sql instances patch 命令:

gcloud beta sql instances patch INSTANCE_NAME \
--project=PROJECT_ID \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--psc-auto-connections=network=VPC_NETWORK_PATH,project=SERVICE_PROJECT

进行以下替换:

  • INSTANCE_NAME:实例的名称
  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • ALLOWED_PROJECTS:允许的项目 ID 或编号列表(以英文逗号分隔)。如果某个项目未包含在此列表中,您将无法在该项目中创建 Private Service Connect 端点以连接到实例。

  • VPC_NETWORK_PATH:用于创建 Private Service Connect 端点的 VPC 网络的路径。例如:
    projects/my-host-project/global/networks/default
  • SERVICE_PROJECT:创建 Private Service Connect 端点的项目。如果 VPC 网络不是共享 VPC,则此项目只能是该网络的宿主项目。如果这是共享 VPC,则可以是宿主项目,也可以是服务项目。

    您在自动连接参数中指定的所有项目都会自动添加到允许的项目中。

如需了解如何连接到已启用 Private Service Connect 的实例,请参阅连接到 Cloud SQL 实例

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
  • INSTANCE_NAME:实例的名称。
  • ALLOWED_PROJECTS:允许的项目 ID 或编号列表(以英文逗号分隔)。这些项目会替换已配置为使用 Private Service Connect 的项目。如果某个项目未包含在此列表中,您将无法在该项目中创建 Private Service Connect 端点以连接到实例。
  • VPC_NETWORK_PATH:用于创建 Private Service Connect 端点的 VPC 网络的路径。例如:
    projects/my-host-project/global/networks/default
  • SERVICE_PROJECT:创建 Private Service Connect 端点的项目。如果 VPC 网络不是共享 VPC,则此项目只能是该网络的宿主项目。如果这是共享 VPC,则可以是宿主项目,也可以是服务项目。

    您在自动连接参数中指定的所有项目都会自动添加到允许的项目中。

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

请求 JSON 正文:

{
  "kind": "sql#instance",
  "name": "INSTANCE_NAME",
  "project": "PROJECT_ID",
  "settings": {
    "ipConfiguration": {
      "pscConfig": {
        "pscAutoConnections": [
          {
            "consumerProject":"SERVICE_PROJECT",
            "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK_PATH"
          }
        ],
        "pscEnabled": "true",
        "allowedConsumerProjects": [ALLOWED_PROJECTS]
      }
    },
    "kind": "sql#settings"
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

如需了解如何连接到已启用 Private Service Connect 的实例,请参阅连接到 Cloud SQL 实例