专用网络连接

本页介绍了如何配置 Integration Connectors 以私密方式连接到后端应用,并假定您熟悉以下概念:

Integration Connectors 支持连接到托管在私有网络上的后端。如需启用专用连接,您必须使用 Private Service Connect (PSC)。 PSC 支持以非公开方式连接到不同网络中的服务。

对于 Integration Connectors,从网络的角度来看,您是服务提供方,Integration Connectors 是服务使用方。作为服务提供方,您必须配置 PSC 服务连接,以便 Integration Connectors 可以使用该服务。服务附件准备就绪后,您可以配置连接以使用端点附件来使用服务附件。

端点连接

端点连接是 Integration Connectors 资源,可让连接通过 PSC 服务连接与您的后端应用建立连接。

下图显示了一个端点连接,该连接可让连接通过 PSC 服务连接与后端应用建立连接:

您可以将端点附件创建为 IP 地址或主机名。

将端点连接创建为 IP 地址

如需将端点附件创建为 IP 地址,您可以使用 Cloud 控制台或命令行 (gcloud)。

控制台

如需通过 Cloud 控制台创建端点附件,请执行以下操作:

  1. 打开 Integration Connectors 的端点附件页面。

    前往端点连接

  2. 点击 + 创建 (+ Create)。系统随即会打开创建端点连接页面。
  3. 为以下字段输入值:
    • 名称:端点连接的名称。该名称必须是唯一的。其他名称相同的端点连接不能存在,并且您以后无法更改该名称。 该名称必须以小写字母开头,后面最多可跟 63 个小写字母、数字或连字符,但不能以连字符结尾。长度下限为 2。
    • 服务连接 ID:您已创建的 PSC 服务连接的名称。
    • (可选)说明:输入端点附件的说明。
    • (可选)标签:以键值对的形式输入资源标签。如需详细了解标签,请参阅什么是标签?
    • (可选)启用端点全球访问权限:如果您想通过位于任何区域的连接将流量发送到后端,请选择此选项。

      默认情况下,端点连接要求连接和后端都位于同一区域。因此,如果您为端点启用全球访问权限,则任何区域中的连接都可以将流量发送到您的后端。

  4. 点击创建

IP 地址列用于指定端点附件的 IP 地址。在为专用连接配置连接器时,您必须使用此 IP 地址。

gcloud

如需从命令行创建端点连接,请执行以下操作:

  1. 获取 PSC 服务连接资源:
    gcloud compute service-attachments list

    该命令会返回服务附件列表。例如:

      NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
      demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC

    您将在后续步骤中需要此服务附件信息。

  2. 在运行 CreateEndpointAttachment API 之前,请先获取身份验证令牌:
    TOKEN="$(gcloud auth print-access-token)"
  3. 使用 CreateEndpointAttachment API 创建端点连接。例如:
    curl -X POST -H "Authorization: Bearer $TOKEN" \
           -H "Content-Type: application/json" \
           -d '{
          "name": "projects/PROJECT_ID/locations/LOCATION/endpointAttachments/ENDPOINT_ATTACHMENT_NAME",
          "serviceAttachment": "projects/demo/serviceAttachments/?SERVICE_ATTACHMENT_NAME"
        }' \
           https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpointAttachments?endpointAttachmentId=ENDPOINT_ATTACHMENT_NAME
      

    其中:

    • LOCATION 是服务连接的区域。例如 us-west1
    • PROJECT_ID 是您创建 PSC 服务连接的 Google Cloud 项目。
    • ENDPOINT_ATTACHMENT_NAME 是端点连接的名称。该名称必须是唯一的。其他名称相同的端点连接不能存在,并且您以后无法更改该名称。该名称必须以小写字母开头,后面最多可跟 31 个小写字母、数字或连字符,但不能以连字符结尾。长度下限为 2。
    • SERVICE_ATTACHMENT_NAME 是服务连接的名称。使用之前运行的 gcloud compute service-attachments list 命令返回的 PSC 服务账号名称。

    调用 API 后,Integration Connectors 会启动一项长时间运行的操作,该操作可能需要一些时间才能完成。操作成功完成后,系统会创建端点附件。

  4. 获取与您的 Google Cloud 项目关联的服务目录的项目 ID,然后在服务连接中将该项目 ID 列入许可名单。
  5. 使用 GetEndpointAttachment API 验证是否已创建端点连接。 例如:
    curl -X GET -H "Authorization: Bearer $TOKEN" \
        https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
      

    API 会返回类似于如下所示的响应:

    {
        "name": "projects/demo-project/locations/us-central1/endpointAttachments/demo-ea",
        "createTime": "2023-04-17T04:34:59.569527046Z",
        "updateTime": "2023-04-17T04:37:25.189074195Z",
        "description": "demo endpoint attachment",
        "serviceAttachment": "projects/demo-project/regions/us-central1/serviceAttachments/demo-sa",
        "endpointIp": "10.0.0.0",
        "labels": {"team":"sre"},
      }

    端点附件的 IP 地址可在 endpointIp 字段中找到。在此示例响应中,IP 地址为 10.0.0.0。在配置专用连接的连接器时,请使用此 IP 地址。

如果端点连接创建成功,新创建的连接会列在端点连接页面中,如下图所示:

endpoint-attachment endpoint-attachment

到目前为止介绍的步骤展示了如何将端点附件创建为 IP 地址。不过,您也可以将端点连接创建为主机名,并使用该主机名配置连接器以实现专用连接。如需了解如何使用主机名创建端点附件,请参阅将端点附件创建为主机名

将端点连接创建为主机名

如需将端点附件创建为主机名,请执行以下任务:

  1. 将端点连接创建为 IP 地址。如需了解详情,请参阅将端点附件创建为 IP 地址
  2. 在您的任意 Google Cloud 项目中创建 Cloud DNS 专用代管区域。

    在此 DNS 区域中,您必须添加要用于连接器配置的主机名,并将主机名映射到您在第 1 步中获得的端点附加 IP 地址。如需了解如何创建 Cloud DNS 专用代管区域,请参阅创建专用地区添加记录

  3. 在您的 Google Cloud 项目中创建一个要用于 Integration Connectors 的 Integration Connectors 管理区域。集成连接器托管的区域(对等互连区域)与 Cloud DNS 专用托管区域(在第 2 步中创建)通信以进行域名解析。

    在创建托管区域之前,您必须授予以下角色和权限:

    • 向创建 Integration Connectors 受管区域的用户授予 connectors.managedZones.create 权限。

      connectors.managedZones.create 权限可在 roles/connectors.admin IAM 角色或 roles/connectors.managedZonesAdmin IAM 角色中获得。如需了解可供 Integration Connectors 使用的各种 IAM 角色及其对应的权限,请参阅 集成连接器的 IAM 角色和权限

    • role/dns.peer 角色授予 Integration Connectors service-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com 服务账号。

      如果 Cloud DNS Google Cloud 项目不同于 Integration Connectors Google Cloud 项目,请向 Cloud DNS Google Cloud 项目中的 Integration Connectors 服务账号授予 roles/dns.peer 角色。例如,假设您要在 Google Cloud 项目 12345 中创建 Integration Connectors 代管式区域,而 Cloud DNS 位于 Google Cloud 项目 67890 中。在这种情况下,您必须向 Google Cloud 项目 67890 中的 service-12345@gcp-sa-connectors.iam.gserviceaccount.com 服务账号授予 roles/dns.peer 角色。

    如需创建由 Integration Connectors 管理的区域,您可以使用 Cloud 控制台或命令行 (gcloud)。

    控制台

    如需通过 Cloud 控制台创建由 Integration Connectors 管理的区域,请执行以下操作:

    1. 前往“受管理的区域”页面,查看 Integration Connectors。

      前往“代管区域”

    2. 为以下字段输入值:
      1. 名称:托管地区的名称。
      2. 目标 DNS 名称:您要为其创建托管(对等互连)区域的完整 Cloud DNS 名称。例如 server8.stage.user.private
      3. 目标项目:包含 Cloud DNS 专用区域的 Google Cloud 项目的名称。
      4. 目标网络:维护专用 Cloud DNS 区域的 VPC 网络的名称。
      5. (可选)说明:输入端点附件的说明。
      6. (可选)标签:以键值对的形式输入资源标签。如需详细了解标签,请参阅什么是标签?
    3. 点击创建

    gcloud

    如需从命令行创建由 Integration Connectors 管理的区域,请执行以下操作:

    1. 在运行 CreateManagedZone API 之前,请先获取身份验证令牌:
      TOKEN="$(gcloud auth print-access-token)"
    2. 使用 CreateManagedZone API 创建托管地区。例如:
      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
          "description": "DESCRIPTION",
          "dns": "DNS_NAME",
          "target_project": "TARGET_PROJECT",
          "target_vpc": "TARGET_VPC"
        }' \
        https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones?managedZoneId=MANAGED_ZONE_NAME
        

      其中:

      • DESCRIPTION 是可选的代管式可用区的说明。
      • DNS_NAME:您要为其创建代管(对等互连)区域的完整 Cloud DNS 名称。例如 server8.stage.user.private
      • TARGET_PROJECT 是包含专用 Cloud DNS 区域的 Google Cloud 项目的名称。
      • TARGET_NETWORK 是维护专用 Cloud DNS 区域的 VPC 网络的名称。
      • PROJECT_ID 是您用于 Integration Connectors 的 Google Cloud 项目。
      • MANAGED_ZONE_NAME 是托管可用区的名称。该名称必须是唯一的。其他名称相同的代管式可用区不能存在,并且您以后无法更改该名称。该名称必须以小写字母开头,后面最多可跟 63 个小写字母、数字或连字符,但不能以连字符结尾。长度下限为 2。

      调用 API 后,Integration Connectors 会启动一项长时间运行的操作,该操作可能需要一些时间才能完成。操作成功完成后,系统会创建托管区域。

    3. 使用 GetManagedZone API 验证是否已创建托管区域。 例如:
      curl -X GET -H "Authorization: Bearer $TOKEN" \
          https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
        

      API 会返回类似于如下所示的响应:

      {
          "name": "projects/demo-project/locations/global/managedZones/demo-mz",
          "createTime": "2023-04-17T04:34:59.569527046Z",
          "updateTime": "2023-04-17T04:37:25.189074195Z",
          "description": "demo managed zone",
          "dns": "api.private.service.com.",
          "targetVpc": "target-project-vpc",
          "targetProject": "target-project"
        }

如果成功创建了托管网域,新创建的托管网域会显示在托管网域页面中,如下图所示:

managed-zone managed-zone

将“Integration Connectors”项目列入服务附件的许可名单

您可以创建 PSC 服务附件,使其仅接受来自指定 Google Cloud 项目的请求。不过,若要执行此操作,您需要知道与 Google Cloud 项目关联的服务目录的项目 ID。如需获取服务目录的项目 ID,您可以使用 List Connections API,如以下示例所示。

语法

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

请替换以下内容:

  • CONNECTORS_PROJECT_ID:您创建关联时所用的 Google Cloud 项目的 ID。

示例

此示例会获取 connectors-test Google Cloud 项目的服务目录的项目 ID。

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

在终端上运行此命令会显示类似如下所示的输出:

.....
{
  "connections": [
    {
      "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
      "createTime": "2022-10-07T09:02:31.905048520Z",
      "updateTime": "2022-10-07T09:22:39.993778690Z",
      "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
      "status": {
        "state": "ACTIVE"
      },
      "configVariables": [
        {
          "key": "project_id",
          "stringValue": "connectors-test"
        },
        {
          "key": "dataset_id",
          "stringValue": "testDataset"
        }
      ],
      "authConfig": {},
      "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
      "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
      "nodeConfig": {
        "minNodeCount": 2,
        "maxNodeCount": 50
      }
    },
....

在示例输出结果中,对于 connectors-test Google Cloud 项目,服务目录的项目 ID 为 abcdefghijk-tp

验证端点附加连接

如需验证端点附件连接,请执行以下操作:

  1. 端点附件页面中,点击您创建的端点附件的名称。
  2. 在随即显示的端点附加详情页面中,查看连接状态字段。如果状态为 Accepted,则表示端点附件已正确设置,并且已建立 Private Service Connect 连接。

    如需了解其他状态,请参阅连接状态

配置连接以使用端点连接

在集成连接器中,创建新连接或更新现有连接时,在“目标”部分中,选择端点连接作为目标类型,然后从端点连接列表中选择您创建的端点连接。

如果您创建了托管区域,请选择主机地址作为目标类型,并使用您在创建托管区域时创建的 A 记录。

与各种类型的专用网络的连接

虽然 Integration Connectors 中的专用连接始终是通过 PSC 服务附件建立的,但建立专用连接的步骤会因环境而略有不同。以下部分介绍了如何在各种环境中建立专用连接: