从 Agentspace 到可用区级 NEG 自行托管的数据库

1. 简介

在此 Codelab 中,您将部署一个内部 TCP 代理负载平衡器和可用区级网络端点组 (NEG),并将其发布为 PSC 生产者服务。该 NEG 将包含一个或多个在 GCP 中自行托管数据库(例如 JIRA、Confluence、Sharepoint)的计算实例。

Private Service Connect 是 Google Cloud 网络的一项功能,允许使用方从其 VPC 网络内部以私密方式访问托管式服务。同样,它允许托管式服务提供方在其自己的 VPC 或跨云网络中托管这些服务,并为其使用方提供专用连接。例如,当您使用 Private Service Connect 访问地区级 NEG 时,您是服务提供方,而 Google (Agentspace) 是服务使用方。

学习内容

  • Agentspace 的网络要求
  • Agentspace 网络最佳实践
  • 创建 Private Service Connect 提供方服务

所需条件

  • 具有“所有者”权限的 Google Cloud 项目

2. 构建内容

您将建立一个提供方网络 agentspace-psc-demo,以部署内部 TCP 代理负载平衡器和通过 Private Service Connect (PSC) 发布为服务的区域 NEG。

3. 网络要求

下面是提供方网络的网络要求细分,此 Codelab 中的使用方是 Agentspace。

组件

说明

VPC (agentspace-psc-demo)

自定义模式 VPC

PSC NAT 子网

来自使用方 VPC 网络的数据包使用来源 NAT (SNAT) 进行转换,以便其原始的来源 IP 地址转换为来自提供方 VPC 网络中的 NAT 子网的来源 IP 地址。PSC NAT 支持每个服务连接使用一个 /29 子网。

PSC 转发规则子网

用于为区域级内部 TCP 代理负载平衡器分配 IP 地址。转发规则子网被视为常规子网

NEG 子网

用于从常规子网为网络端点组分配 IP 地址。

代理专用子网

负载平衡器的每个代理 都分配有一个内部 IP 地址。从代理发送到后端虚拟机或网络端点组的数据包具有来自代理专用子网的来源 IP 地址。建议 使用 /23 子网,但最低支持 /26 子网。每个区域都需要一个区域级代理子网。

后端服务

后端服务充当负载平衡器与后端资源之间的桥梁。在本教程中,后端服务与可用区级 NEG 相关联。

4. 最佳实践

  • 可用区级 NEG 支持一个或多个基于 GCE_VM_IP_PORT 的可用区级 GCE 实例
  • 在创建服务连接之前,在提供方转发规则上启用全球访问权限。
  • 在创建 Agentspace 端点时启用全球访问权限。
  • 内部 TCP 代理负载平衡器还支持托管式和非托管式实例组
  • 现有的 Google Cloud TCP 代理或直通式负载平衡器可以作为提供方服务公开

5. Codelab 拓扑

9a8a948b0a4ad91e.png

6. 设置和要求

自定进度的环境设置

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
  • 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用 PROJECT_ID 标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。
  • 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档
  1. 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用计划的条件。

启动 Cloud Shell

虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。

Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

55efc1aaa7a4d3ad.png

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

7ffe5cbb04455448.png

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。

7. 准备工作

启用 API

在 Cloud Shell 中,确保项目 ID 已设置:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone1a=[YOUR-ZONE1a]
zone1b=[YOUR-ZONE1b]
echo $project
echo $region
echo $zone1a
echo $zone1b

启用所有必要的服务:

gcloud services enable compute.googleapis.com

8. 创建提供方 VPC 网络

VPC 网络

在 Cloud Shell 中,执行以下操作:

gcloud compute networks create agentspace-psc-demo --subnet-mode custom

创建子网

PSC 子网将与 PSC 服务连接相关联,以实现网络地址转换。

在 Cloud Shell 中,创建 PSC NAT 子网:

gcloud compute networks subnets create producer-psc-nat-subnet --network agentspace-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

在 Cloud Shell 中,创建提供方转发规则子网:

gcloud compute networks subnets create producer-psc-fr-subnet --network agentspace-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

在 Cloud Shell 中,创建网络端点组子网:

gcloud compute networks subnets create neg-subnet --network agentspace-psc-demo --range 172.16.30.0/28 --region $region --enable-private-ip-google-access

在 Cloud Shell 中,创建提供方区域代理专用子网

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=agentspace-psc-demo \
  --range=10.10.10.0/24

预留负载均衡器的 IP 地址

在 Cloud Shell 中,为负载平衡器预留内部 IP 地址:

gcloud compute addresses create zonal-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

在 Cloud Shell 中,查看预留的 IP 地址。

gcloud compute addresses describe zonal-neg-lb-ip \
  --region=$region | grep -i address:

输出示例:

gcloud compute addresses describe zonal-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2

设置可用区级 NEG

在下一部分中,您将创建一个可用区级网络端点组,其中包含一个或多个 IP 地址或 IP 地址和目标端口组合:

  • 虚拟机网络接口的主要内部 IPv4 地址
  • 虚拟机网络接口的主要内部 IPv4 地址以及目标端口号
  • 分配给虚拟机网络接口的别名 IP 地址范围中的内部 IPv4 地址
  • 分配给虚拟机网络接口的别名 IP 地址范围内的内部 IPv4 地址,以及一个目标端口号

包含 GCE_VM_IP_PORT 端点的网络接口必须位于 NEG 的子网中。如果在 GCE_VM_IP_PORT 端点中省略端口号,则 Google Cloud 会为该端点使用 NEG 的默认端口号。

在参考架构中,与区域 NEG 关联的 GCE 实例包含以下内容:

  • database-us-central1-a | us-central1-a | IP:100.100.10.2 | 端口:443
  • database-us-central1-a | us-central1-b | IP: 100.100.10.3 | 端口:443
  • 子网名称:database-subnet-1

为 zone1a 创建可用区级 NEG

在下一部分中,您将按地区(例如 us-central1-a)创建网络端点组,并指定用于创建 GCE 实例的子网名称。在参考架构中,子网名称为 database-subnet-1。

在 Cloud Shell 中,创建一个可用区级 NEG:

gcloud compute network-endpoint-groups create us-central-zonal-neg-1a \
    --zone=$zone1a \
    --network=agentspace-psc-demo \
    --subnet=database-subnet-1 \
    --default-port=443

在 Cloud Shell 中,使用部署在可用区 1a 中的 GCE 实例的 IP:Port 更新区域 NEG,在参考架构中,GCE 实例为 100.100.10.2 端口 443,部署在可用区 us-central1-a 中。

gcloud compute network-endpoint-groups update us-central-zonal-neg-1a --zone=$zone1a --add-endpoint instance=database-us-central1-a,port=443

为 zone1b 创建可用区级 NEG

在下一部分中,您将按地区(例如 us-central1-b)创建网络端点组,并指定用于创建 GCE 实例的子网名称。在参考架构中,子网名称为 database-subnet-1。

在 Cloud Shell 中,创建一个可用区级 NEG:

gcloud compute network-endpoint-groups create us-central-zonal-neg-1b \
    --zone=$zone1b \
    --network=agentspace-psc-demo \
    --subnet=database-subnet-1 \
    --default-port=443

在 Cloud Shell 中,使用部署在可用区 1b 中的 GCE 实例的 IP:端口更新区域 NEG,在参考架构中,GCE 实例是部署在可用区 us-central1-b 中的 100.100.10.3 端口 443。

gcloud compute network-endpoint-groups update us-central-zonal-neg-1b --zone=$zone1b --add-endpoint instance=database-us-central1-b,port=443

创建区域性健康检查

在 Cloud Shell 中,创建一个探测本地数据库端口 443 的健康检查:

gcloud compute health-checks create tcp zonal-443-healthcheck \
    --region=$region \
    --port=443

创建网络防火墙政策和防火墙规则

在 Cloud Shell 中,执行以下操作:

gcloud compute network-firewall-policies create agentspace-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy agentspace-psc-demo-policy --network agentspace-psc-demo --name agentspace-psc-demo --global-firewall-policy

以下防火墙规则允许 PSC NAT 子网范围内的流量传输到网络中的所有实例。

在 Cloud Shell 中,执行以下操作:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow traffic from PSC NAT subnet to GCE" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

以下防火墙规则允许流量从健康检查探测范围 传输到网络中的所有实例。请注意,健康检查端口和应用端口必须一致。

在 Cloud Shell 中,执行以下操作:

gcloud compute network-firewall-policies rules create 2002 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal probe health check range to GCE" --direction INGRESS --src-ip-ranges 35.191.0.0/16,130.211.0.0/22 --global-firewall-policy --layer4-configs=tcp:443

以下防火墙规则允许来自代理专用子网 范围的流量到达网络中的所有实例。请注意,代理子网和应用端口必须一致。

在 Cloud Shell 中,执行以下操作:

gcloud compute network-firewall-policies rules create 2003 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal tcp proxy health check range to GCE" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp:443

9. 创建提供方服务

创建负载平衡器组件

在 Cloud Shell 中,创建后端服务:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=zonal-443-healthcheck --health-checks-region=$region

在 Cloud Shell 中,将可用区级 NEG (us-central-zonal-neg-1a) 与后端服务相关联:

gcloud compute backend-services add-backend producer-backend-svc \
   --network-endpoint-group=us-central-zonal-neg-1a  \
   --network-endpoint-group-zone=$zone1a \
   --balancing-mode=CONNECTION \
   --max-connections-per-endpoint=100 \
   --region=$region

在 Cloud Shell 中,将可用区级 NEG (us-central-zonal-neg-1b) 与后端服务相关联:

gcloud compute backend-services add-backend producer-backend-svc \
   --network-endpoint-group=us-central-zonal-neg-1b  \
   --network-endpoint-group-zone=$zone1b \
   --balancing-mode=CONNECTION \
   --max-connections-per-endpoint=100 \
   --region=$region

在 Cloud Shell 中,创建目标 TCP 代理以将请求路由到后端服务:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

在以下语法中,创建启用了全球访问权限的转发规则(内部 TCP 代理负载平衡器)。

在 Cloud Shell 中,执行以下操作:

gcloud compute forwarding-rules create producer-zonal-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=agentspace-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=zonal-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --allow-global-access \
     --ports=443

验证后端健康状况

使用下一部分中的 Cloud 控制台验证后端服务及其关联的计算实例的运行状况(绿色状态)。前往以下位置:

网络服务 → 负载均衡 → Producer-backend-svc

dbbc97dcef9db785.png

创建服务连接

如需发布服务,您必须创建 Private Service Connect 服务连接。您可以使用自动批准或显式批准发布服务。

  • 如需发布服务并自动允许任何使用方连接到该服务,请按照通过自动批准发布服务中的说明操作。
  • 如需发布使用显式使用方批准的服务,请在服务连接连接设置中选择“接受选定项目的连接”,并将“接受的项目”字段留空。
  • 生成服务连接后,请求访问提供方服务的使用方端点最初会进入待处理状态。如需授权连接,提供方必须接受使用方端点请求的来源项目。

在 Cloud Shell 中,创建具有自动审批功能的 cc-database1-svc-attachment 服务连接:

gcloud compute service-attachments create zonal-database1-svc-attachment --region=$region --producer-forwarding-rule=producer-zonal-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

接下来,获取并记下 selfLink URI(以“projects”开头)中列出的服务连接,以便在 Agentspace 中配置 PSC 端点。

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/zonal-database1-svc-attachment

在 Cloud Shell 中,执行以下操作:

gcloud compute service-attachments describe zonal-database1-svc-attachment --region=$region

预期输出示例:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-07-12T16:00:22.429-07:00'
description: ''
enableProxyProtocol: false
fingerprint: zOpeRQnPWSc=
id: '1784245893044590569'
kind: compute#serviceAttachment
name: zonal-database1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '119824781489996776'
  low: '1784245893044590569'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/serviceAttachments/zonal-database1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/forwardingRules/producer-zonal-neg-fr

在 Cloud 控制台中,前往:

网络服务 → Private Service Connect → 已发布的服务

898fe7673474be14.png

4d0b77966af14c7a.png

10. 在 Agentspace 中建立 PSC 端点连接

将提供方服务连接 URI 与 Agentspace 相关联,确保选择“全局访问”。以下示例展示了如何通过参考架构服务附件启用全球访问权限。

cb16ba8d7cfb86dd.png

如需完成专用网络设置,请参阅 Agentspace 第三方数据源,了解更多说明。

在 Cloud 控制台中验证 PSC 端点

如需确认代理空间(使用方)与提供方之间的 PSC 连接是否成功,请验证与提供方服务相关联的代理空间租户项目。您可以在“关联的项目”下找到此信息。租户项目 ID 是随机分配的,但始终以“tp”结尾。

您可以在 Cloud 控制台中验证 PSC 连接。在 Cloud 控制台中,前往:

依次选择“网络服务”→“Private Service Connect”→“已发布的服务”,然后选择服务“zonal-database1-svc-attachment”。

2f6b7830ce3db3b7.png

11. 清理

从单个 Cloud Shell 终端删除实验组件

gcloud compute service-attachments delete zonal-database1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-zonal-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2002 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2003 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=agentspace-psc-demo-policy  --name=agentspace-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete agentspace-psc-demo-policy --global -q

gcloud compute network-endpoint-groups delete us-central-zonal-neg-1a --zone=$zone1a -q

gcloud compute network-endpoint-groups delete us-central-zonal-neg-1b --zone=$zone1b -q

gcloud compute addresses delete zonal-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks subnets delete neg-subnet --region=$region -q

gcloud compute health-checks delete zonal-443-healthcheck --region=us-central1 -q

gcloud compute networks delete agentspace-psc-demo -q

12. 恭喜

恭喜!您已成功配置并发布了使用 Private Service Connect 的提供方服务。

您创建了提供方基础架构,了解了如何创建区域 NEG、提供方服务以及如何将服务附件与 Agentspace 相关联。

Cosmopup 认为 Codelab 非常棒!

c911c127bffdee57.jpeg

后续操作

查看下列 Codelab…

深入阅读和视频

参考文档