从其他 VPC 网络访问服务

本教程介绍如何以 服务使用方 身份创建 Private Service Connect 端点 来访问已发布的服务。当您向端点发送请求时,Private Service Connect 会将这些请求转发给已发布的服务。

本教程面向云架构师、网络架构师、网络管理员和 IT 管理员。

目标

  • 为服务使用方资源配置网络
  • 创建端点
  • 测试访问端点

费用

在本文档中,您将使用的以下收费组件: Google Cloud

您可使用 价格计算器 根据您的预计使用情况来估算费用。

新 Google Cloud 用户可能有资格申请免费试用

完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理

准备工作

  1. 完成本系列中的前两个教程:
  2. 创建或选择一个项目以用于服务使用方资源。 此项目称为 CONSUMER_PROJECT
    1. 在 Google Cloud 控制台中,前往项目选择器页面。

      转到“项目选择器”

    2. 选择或创建 Google Cloud 项目。

      选择或创建项目所需角色

      • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
      • 创建项目:如需创建项目,您需要 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予 角色
  3. 启用 Compute Engine API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您 创建了项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。 了解如何授予角色

    启用 API

  4. 确保您在项目中拥有以下一个或多个角色: Compute Engine > Compute Network Admin、Compute Engine > Compute Instance Admin

    检查角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择项目。
    3. 主账号 列中,找到标识您或您所属群组的所有行。如需了解您属于哪些群组,请与您的 管理员联系。

    4. 对于指定或包含您的所有行,请检查角色 列,以查看角色列表是否包含所需角色。

    授予角色

    1. 在 Google Cloud 控制台中,前往 IAM 页面。

      转到 IAM
    2. 选择项目。
    3. 点击 授予访问权限
    4. 新的主账号 字段中,输入您的用户标识符。 这通常是员工身份池中的用户的标识符。如需了解详情, 请参阅 在 IAM 政策中表示员工池用户,或与您的管理员联系。

    5. 点击选择角色,然后搜索相应角色。
    6. 如需授予其他角色,请点击 添加其他角色 ,然后添加其他各个角色。
    7. 点击 Save (保存)。

配置网络

以下部分介绍了如何创建网络和子网来托管端点,以及如何创建防火墙规则以允许通过 SSH 访问用于测试端点的客户端虚拟机。

创建网络和子网

如需创建服务使用方网络和子网,请按照以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,前往 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击创建 VPC 网络

  3. 对于名称,输入 consumer-network

  4. 对于子网创建模式 ,选择自定义

  5. 新建子网 部分,输入以下信息。

    1. 对于名称,输入consumer-subnet
    2. 对于区域,选择与您 创建的已发布服务相同的区域。
    3. 对于 IP 栈类型 ,选择 IPv4(单栈)
    4. 对于 IPv4 范围,输入 192.168.10.0/24
    5. 点击完成
  6. 点击创建

gcloud

  1. 创建一个自定义模式 VPC 网络:

    gcloud compute networks create consumer-network --subnet-mode=custom
    
  2. consumer-network 网络中,创建一个子网。

    gcloud compute networks subnets create consumer-subnet \
        --network=consumer-network \
        --range=192.168.10.0/24 \
        --region=REGION
    

    REGION 替换为您创建的已发布服务所在的区域。

配置防火墙规则

创建一个名为 fw-allow-ssh 的防火墙规则,以允许来自 0.0.0.0/0 的 SSH 流量到达具有 allow-ssh 网络标记的虚拟机。

控制台

  1. 在 Google Cloud 控制台中,前往 防火墙政策 页面。

    进入防火墙政策页面

  2. 如需允许传入 SSH 连接,请点击创建防火墙规则 ,然后使用以下设置:

    • 对于名称 ,输入 fw-allow-ssh
    • 对于网络,选择consumer-network
    • 优先级 字段中,输入 1000
    • 对于流量方向,选择入站
    • 对于对匹配项执行的操作 ,选择允许
    • 对于目标 ,选择 Specified target tags
    • 对于目标标记,输入allow-ssh
    • 对于来源过滤条件,选择IPv4 范围
    • 对于来源 IPv4 范围,输入0.0.0.0/0
    • 对于协议和端口,选择 Specified protocols and ports, 然后选中 TCP 复选框。对于端口,输入22
  3. 点击创建

gcloud

  1. 创建 fw-allow-ssh 防火墙规则,以允许通过 SSH 连接到 网络标记为 allow-ssh 的虚拟机。

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=consumer-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=0.0.0.0/0 \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

创建端点

创建一个指向您创建的已发布服务的端点。

控制台

  1. 在 Google Cloud 控制台中,前往 Private Service Connect 页面。

    转到 Private Service Connect

  2. 点击已连接的端点标签页。

  3. 点击连接端点

  4. 对于目标 ,选择已发布的服务

  5. 对于目标服务,输入 projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service

    PRODUCER_PROJECT 替换为已发布服务的项目 ID。将 REGION 替换为已发布服务的区域。

  6. 对于端点名称,输入ep-1

  7. 对于网络,选择consumer-network

  8. 对于子网,选择consumer-subnet

  9. 点击 IP 地址 下拉菜单,然后选择创建 IP 地址

    1. 对于名称,输入ep-ip-1
    2. 对于静态 IP 地址,选择让我选择
    3. 对于自定义 IP 地址,输入192.168.10.5
    4. 点击预留
  10. 点击添加端点

gcloud

  1. 预留要分配给该端点的内部 IP 地址。

    gcloud compute addresses create ep-ip-1 \
        --region=REGION \
        --subnet=consumer-subnet \
        --addresses=192.168.10.5
    

    REGION 替换为您创建的已发布服务所在的区域。

  2. 创建转发规则,以将该端点连接到服务提供方的服务连接。

    gcloud compute forwarding-rules create ep-1 \
        --region=REGION \
        --network=consumer-network \
        --address=ep-ip-1 \
        --target-service-attachment=projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service
    

    替换以下内容:

    • PRODUCER_PROJECT:服务提供方项目的项目 ID。

    • REGION:服务连接的区域。

测试访问端点

如需测试端点和已发布的服务是否正常运行,请创建一个测试虚拟机,并从该虚拟机向端点发送请求。

创建客户端虚拟机以进行测试

在与端点相同的区域中创建客户端虚拟机。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 点击创建实例

  3. 对于名称,输入consumer-test

  4. 对于区域,选择与后端虚拟机相同的区域。

  5. 地区 部分,选择该区域内的一个地区。

  6. 点击网络 并配置以下字段:

    1. 对于网络标记,请输入 allow-ssh
    2. 对于网络接口,请选择以下内容:
      • 对于网络,选择consumer-network
      • 对于子网,选择consumer-subnet
  7. 点击创建

gcloud

gcloud compute instances create consumer-test \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=consumer-subnet

ZONE 替换为与后端虚拟机位于同一区域的地区。

测试连接性

此测试会从客户端虚拟机联系端点。预期行为是流量分布在负载均衡器的后端虚拟机中。

  1. 连接到客户端虚拟机实例。
    gcloud compute ssh consumer-test --zone=ZONE
    
    ZONE 替换为客户端虚拟机的地区。
  2. 使用 curl 连接端点的 IP 地址,通过这种方式向端点发送 Web 请求。重复该请求,您可以看到响应来自不同的后端虚拟机。根据每个后端虚拟机上 /var/www/html/index.html 的内容,生成响应的虚拟机的名称会显示在 HTML 响应的文本中。例如,预期 响应类似于 Page served from: vm-1Page served from: vm-2
    curl -s http://192.168.10.5
    

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

同时删除提供方项目 (PRODUCER_PROJECT) 和使用方项目 (CONSUMER_PROJECT)。

    删除项目: Google Cloud

    gcloud projects delete PROJECT_ID

后续步骤