本地主机可以通过两种方式访问 Agent Platform:公共互联网,或通过 Cloud VPN 或 Cloud Interconnect 使用 Private Service Connect (PSC) 的混合网络架构(以私密方式访问)。这两个选项都提供 SSL/TLS 加密。但是,专用选项可提供更好的性能,因此建议用于关键应用。
在本教程中,您将使用高可用性 VPN (HA VPN) 通过 Cloud NAT 公开访问代理平台,在可用作多云和本地专用连接基础的两个 Virtual Private Cloud (VPC) 网络之间以私密方式访问代理平台。
本教程适用于熟悉 Gemini Enterprise Agent Platform、VPC、 Google Cloud 控制台和 Cloud Shell 的企业网络管理员、数据科学家和研究人员。熟悉 Agent Platform 会很有帮助,但不强制要求。
目标
- 创建两个 VPC 网络,如上图所示:
- 一个 (
onprem-vpc) 表示一个本地网络。 - 另一个 (
vertex-networking-vpc) 用于访问 Agent Platform 的 REST API。
- 一个 (
- 部署高可用性 VPN 网关、Cloud VPN 隧道和 Cloud Router 路由器,以连接
vertex-networking-vpc和onprem-vpc。 - 创建 Private Service Connect (PSC) 端点,以将请求转发到 GenAI REST API。
- 在
vertex-networking-vpc中配置 Cloud Router 自定义通告路由,以向onprem-vpc通告 Private Service Connect 端点的路由。 - 在
onprem-vpc中创建 Compute Engine 虚拟机实例,以表示通过高可用性 VPN 向 GenAI REST API 发送请求的客户端应用。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
- Artifact Registry
- Cloud NAT
- Cloud Storage
- Cloud VPN
- Compute Engine
- Gemini Enterprise Agent Platform
- Virtual Private Cloud
如需根据您的预计使用情况来估算费用,请使用价格计算器。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
-
在 Google Cloud 控制台中,前往项目选择器页面。
-
选择或创建 Google Cloud 项目。
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
- 如果您不是项目所有者,则项目所有者必须为您授予
roles/resourcemanager.projectIamAdminIAM 角色。您需要具有此角色,才能为您自己和服务账号授予 IAM 角色和权限。 - 打开 Cloud Shell 以执行本教程中列出的命令。Cloud Shell 是 Google Cloud 的互动式 shell 环境,可让您通过网络浏览器管理项目和资源。
- 在 Cloud Shell 中,将当前项目设置为您的 Google Cloud 项目 ID,并将同一项目 ID 存储在
projectidshell 变量中: 将 PROJECT_ID 替换为您的项目 ID。如有必要,您可以在 Google Cloud 控制台中查找项目 ID。如需了解详情,请参阅查找项目 ID。projectid="PROJECT_ID" gcloud config set project ${projectid} -
向您的用户账号授予角色。对以下每个 IAM 角色运行以下命令一次:
roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.usergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
替换以下内容:
PROJECT_ID:您的项目 ID。USER_IDENTIFIER:您的用户 个账号。如需查看示例,请参阅 在 IAM 政策中表示员工池用户。ROLE:您向用户账号授予的 IAM 角色。
启用 DNS、IAM、Compute Engine、Service Usage 和 Agent Platform API:
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com
创建两个 VPC 网络:vertex-networking-vpc 和 onprem-vpc
在本部分中,您将创建两个 VPC 网络:一个是用于访问 Gemini Enterprise Agent Platform 生成式 AI(也称为 GenAI)API 的主要网络,另一个用于模拟本地网络。
创建 VPC 网络
创建用于访问 GenAI API 的 VPC 网络 (
vertex-networking-vpc):gcloud compute networks create vertex-networking-vpc --subnet-mode custom创建用于模拟本地网络的 VPC 网络 (
onprem-vpc):gcloud compute networks create onprem-vpc --subnet-mode custom在
onprem-vpc网络中,创建一个名为onprem-vpc-subnet1的子网,其主要 IPv4 范围为172.16.10.0/24:gcloud compute networks subnets create onprem-vpc-subnet1 \ --range 172.16.10.0/24 \ --network onprem-vpc \ --region us-central1在 Google Cloud 控制台中,前往 VPC 网络页面中的当前项目中的网络标签页。
在 VPC 网络列表中,验证是否已创建
vertex-networking-vpc和onprem-vpc这两个网络。在 VPC 网络页面中,点击当前项目中的子网标签页。
在 VPC 子网列表中,验证是否已在
onprem-vpc网络中创建onprem-vpc-subnet1子网。
配置混合连接
在本部分中,您将创建两个相互连接的高可用性 VPN 网关。一个位于 vertex-networking-vpc VPC 网络中。另一个位于 onprem-vpc VPC 网络中。每个网关包含一个 Cloud Router 路由器和一对 VPN 隧道。
创建高可用性 VPN 网关
在 Cloud Shell 中,为
vertex-networking-vpcVPC 网络创建高可用性 VPN 网关:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1为
onprem-vpcVPC 网络创建高可用性 VPN 网关:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1在 Google Cloud 控制台中,前往 VPN 页面中的 Cloud VPN 网关标签页。
在 VPN 网关列表中,验证是否已创建两个网关(
vertex-networking-vpn-gw1和onprem-vpn-gw1),并且每个网关有两个 IP 地址。
创建 Cloud Router 路由器
在 Cloud Shell 中,为
vertex-networking-vpcVPC 网络创建一个 Cloud Router 路由器:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001为
onprem-vpcVPC 网络创建一个 Cloud Router 路由器:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
将 Cloud NAT 网关添加到 onprem-vpc VPC 网络
在此步骤中,您将向 onprem-vpc VPC 网络的 Cloud Router 路由器添加 Cloud NAT 网关。Cloud NAT 网关为没有外部 IP 地址的 Compute Engine 虚拟机 (VM) 实例提供传出连接。
在 Cloud Shell 中,将 Cloud NAT 网关添加到
onprem-vpc-router1Cloud Router:gcloud compute routers nats create us-central-cloudnat-onprem \ --router=onprem-vpc-router1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1在 Google Cloud 控制台中,前往 Cloud Router 页面。
在 Cloud Router 列表中,验证是否已创建
vertex-networking-vpc-router1和onprem-vpc-router1。您可能需要刷新 Google Cloud 控制台浏览器标签页才能查看新值。在 Cloud Router 路由器列表中,点击
onprem-vpc-router1。在路由器详情页面中,验证是否已创建
us-central-cloudnat-onpremCloud NAT 网关。
创建 VPN 隧道
在
vertex-networking-vpc网络中,创建一个名为vertex-networking-vpc-tunnel0的 VPN 隧道:gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 0在
vertex-networking-vpc网络中,创建一个名为vertex-networking-vpc-tunnel1的 VPN 隧道:gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 1在
onprem-vpc网络中,创建一个名为onprem-vpc-tunnel0的 VPN 隧道:gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 0在
onprem-vpc网络中,创建一个名为onprem-vpc-tunnel1的 VPN 隧道:gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 1在 Google Cloud 控制台中,前往 VPN 页面。
在 VPN 隧道列表中,验证是否已创建这四个 VPN 隧道。
建立 BGP 会话
Cloud Router 路由器使用边界网关协议 (BGP) 在 VPC 网络(在本例中为 vertex-networking-vpc)和本地网络(由 onprem-vpc 表示)之间交换路由。在 Cloud Router 路由器上,为本地路由器配置接口和 BGP 对等端。此接口和 BGP 对等配置共同构成了 BGP 会话。在本部分中,您将分别为 vertex-networking-vpc 和 onprem-vpc 创建两个 BGP 会话。
在路由器之间配置接口和 BGP 对等方后,它们将自动开始交换路由。
为 vertex-networking-vpc 建立 BGP 会话
在 Cloud Shell 中,在
vertex-networking-vpc网络中为vertex-networking-vpc-tunnel0创建一个 BGP 接口:gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel0-to-onprem \ --ip-address 169.254.0.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel0 \ --region us-central1在
vertex-networking-vpc网络中,为bgp-onprem-tunnel0创建一个 BGP 对等方:gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel0 \ --interface if-tunnel0-to-onprem \ --peer-ip-address 169.254.0.2 \ --peer-asn 65002 \ --region us-central1在
vertex-networking-vpc网络中,为vertex-networking-vpc-tunnel1创建一个 BGP 接口:gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel1-to-onprem \ --ip-address 169.254.1.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel1 \ --region us-central1在
vertex-networking-vpc网络中,为bgp-onprem-tunnel1创建一个 BGP 对等方:gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel1 \ --interface if-tunnel1-to-onprem \ --peer-ip-address 169.254.1.2 \ --peer-asn 65002 \ --region us-central1
为 onprem-vpc 建立 BGP 会话
在
onprem-vpc网络中,为onprem-vpc-tunnel0创建一个 BGP 接口:gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel0-to-vertex-networking-vpc \ --ip-address 169.254.0.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel0 \ --region us-central1在
onprem-vpc网络中,为bgp-vertex-networking-vpc-tunnel0创建一个 BGP 对等方:gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel0 \ --interface if-tunnel0-to-vertex-networking-vpc \ --peer-ip-address 169.254.0.1 \ --peer-asn 65001 \ --region us-central1在
onprem-vpc网络中,为onprem-vpc-tunnel1创建一个 BGP 接口:gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel1-to-vertex-networking-vpc \ --ip-address 169.254.1.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel1 \ --region us-central1在
onprem-vpc网络中,为bgp-vertex-networking-vpc-tunnel1创建一个 BGP 对等方:gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel1 \ --interface if-tunnel1-to-vertex-networking-vpc \ --peer-ip-address 169.254.1.1 \ --peer-asn 65001 \ --region us-central1
验证 BGP 会话创建
在 Google Cloud 控制台中,前往 VPN 页面。
在 VPN 隧道列表中,验证每个隧道的 BGP 会话状态列中的值是否已从 配置 BGP 会话更改为 BGP 已建立。您可能需要刷新 Google Cloud 控制台浏览器标签页才能查看新值。
创建 Private Service Connect (PSC) 端点
在本部分中,您将为 Google API 创建 Private Service Connect (PSC) 端点,供 onprem-vpc 网络中的虚拟机实例用于从 onprem-vpc 网络访问 GenAI API。
Private Service Connect (PSC) 端点是 onprem-vpc 网络中的内部 IP 地址,该网络中的客户端可以直接访问该地址。此端点的创建方式是部署一条转发规则,用于将与 PSC 端点的 IP 地址匹配的网络流量定向到 Google API 软件包(具体来说 all-apis 软件包)。
PSC 端点的 IP 地址 (192.168.0.1) 将在后面的步骤中作为自定义通告路由从 vertex-networking-vpc-router Cloud Router 路由器通告给 onprem-vpc 网络。
预留要分配给端点的全球内部 IP 地址:
gcloud compute addresses create psc-googleapi-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.0.1 \ --network=vertex-networking-vpc创建端点,以及将该端点连接到 Google API 和服务的转发规则:
gcloud compute forwarding-rules create pscvertex \ --global \ --network=vertex-networking-vpc\ --address=psc-googleapi-ip \ --target-google-apis-bundle=all-apis列出已配置的 PSC 端点并验证是否已创建
pscvertex端点:gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global获取已配置的 PSC 端点的详细信息,并验证 IP 地址是否为
192.168.0.1:gcloud compute forwarding-rules describe \ pscvertex --global
为 vertex-networking-vpc 创建自定义路由通告
在本部分中,您将为 vertex-networking-vpc-router1(vertex-networking-vpc 的 Cloud Route 路由器)创建自定义通告路由,以将 PSC 端点的 IP 地址通告给 onprem-vpc 网络。
在 Google Cloud 控制台中,前往 Cloud Router 页面。
在 Cloud Router 路由器列表中,点击
vertex-networking-vpc-router1。在路由器详情页面上,点击 修改。
在通告的路由部分,对于路由,选择创建自定义路由。
选中通告向 Cloud Router 路由器公开的所有子网复选框,以继续通告 Cloud Router 路由器可用的子网。启用此选项可模拟 Cloud Router 路由器在默认通告模式下的行为。
点击添加自定义路由。
对于来源,选择自定义 IP 范围。
在 IP 地址范围字段中,输入以下 IP 地址:
192.168.0.1在说明字段中,输入以下文本:
Custom route to advertise Private Service Connect endpoint IP address点击完成,然后点击保存。
验证 onprem-vpc 是否已获知通告的路由
在 Google Cloud 控制台中,转到路由页面。
在有效路由标签页上,执行以下操作:
- 在网络字段中,选择
onprem-vpc。 - 在区域字段中,选择
us-central1 (Iowa)。 - 点击视图。
在路由列表中,验证是否存在名称以
onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0和onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1开头的条目,并且两者的目标 IP 范围 为192.168.0.1/32。(192.168.0.1是 PSC 端点的 IP 地址。)如果这些条目没有立即显示,请等待几分钟,然后刷新 Google Cloud 控制台浏览器标签页。
- 在网络字段中,选择
在本地网络中配置虚拟机实例
在本部分中,您将在 onprem-vpc VPC 网络中创建一个 Compute Engine 虚拟机实例。此虚拟机实例模拟连接到 PSC 端点并访问 GenAI API 的本地客户端。
创建用户管理的服务账号
在本教程中,您将按照 Compute Engine 和 IAM 最佳实践创建用户管理的服务账号。
在 Cloud Shell 中,运行以下命令,将 PROJECT_ID 替换为您的项目 ID:
projectid=PROJECT_ID gcloud config set project ${projectid}创建服务账号:
gcloud iam service-accounts create user-managed-sa将 Agent Platform User (
roles/aiplatform.user) IAM 角色分配给该服务账号:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:user-managed-sa@$projectid." \ --role="roles/aiplatform.user"
创建 on-prem-client 虚拟机实例
在此步骤中,您将创建虚拟机实例,该实例使用 Private Service Connect IP 地址 (192.168.0.1) 通过高可用性 VPN 访问 Google API。
如需允许 Identity-Aware Proxy (IAP) 连接到您的虚拟机实例,请创建一条防火墙规则,该规则应:
- 适用于您要通过 IAP 访问的所有虚拟机实例。 (在本例中,只有
on-prem-client。) - 允许来自 IP 地址范围
35.235.240.0/20的、通过端口 22 的 TCP 流量此范围包含 IAP 用于 TCP 转发的所有 IP 地址。
创建
on-prem-client虚拟机实例。以下命令还会安装tcpdump和dnsutils软件包,其中包含之后用于验证 API 请求的tcpdump和dig实用程序:gcloud compute instances create on-prem-client \ --zone=us-central1-a \ --image-family=debian-11 \ --image-project=debian-cloud \ --subnet=onprem-vpc-subnet1 \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address \ --shielded-secure-boot \ --service-account=user-managed-sa@$projectid. \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install tcpdump dnsutils -y"创建一个名为
ssh-iap-on-prem-vpc的 IAP 防火墙规则:gcloud compute firewall-rules create ssh-iap-on-prem-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
验证对 Agent Platform 的公共互联网访问
在本部分中,您将使用 Identity-Aware Proxy 登录 on-prem-client 虚拟机实例,然后通过对公共 Gemini Enterprise Agent Platform 网域 (us-central1-aiplatform.googleapis.com) 运行 dig 命令来验证与 Agent Platform API(包括 GenAI)的公共连接。
在 Cloud Shell(第一个标签页)中,运行以下命令,将 PROJECT_ID 替换为您的项目 ID:
projectid=PROJECT_ID gcloud config set project ${projectid}使用 IAP 登录到
on-prem-client虚拟机实例:gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap运行
dig命令:dig us-central1-aiplatform.googleapis.com您应该会看到类似如下所示的
dig输出,其中回答部分中的 IP 地址是公共 IP 地址:; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;us-central1.aiplatfom.googleapis.com. IN A ;; ANSWER SECTION: us-central1.aiplatfom.googleapis.com. 300 IN A 173.194.192.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.152.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.219.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.146.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.147.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.125.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.136.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.148.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.200.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.234.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.171.95 us-central1.aiplatfom.googleapis.com. 300 IN A 108.177.112.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.128.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.6.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.212.95 us-central1.aiplatfom.googleapis.com. 300 IN A 74.125.124.95 ;; Query time: 8 msec ;; SERVER: 169.254.169.254#53(169.254.169.254) ;; WHEN: Wed Sep 27 04:10:16 UTC 2023 ;; MSG SIZE rcvd: 321
配置并验证对 Agent Platform 的专用访问
在本部分中,您将配置对 Agent Platform 的专用访问,以便在您将请求发送到公共服务端点 (us-central1-aiplatform.googleapis.com) 时,它们会改为重定向到 PSC 端点。然后,PSC 端点会转发请求。
更新 /etc/hosts 文件以指向 PSC 端点
在此步骤中,您将在 /etc/hosts 文件中添加一行,以使发送到公共服务端点 (us-central1-aiplatform.googleapis.com) 的请求重定向到 PSC 端点 (192.168.0.1)。
在
on-prem-client虚拟机实例(第一个标签页)中,使用文本编辑器(例如vim或nano)打开/etc/hosts文件:sudo vim /etc/hosts将以下代码行添加到文件中:
192.168.0.1 us-central1-aiplatform.googleapis.com此行将 PSC 端点的 IP 地址 (
192.168.0.1) 分配给 Gemini Enterprise Agent Platform Google API (us-central1-aiplatform.googleapis.com) 的完全限定域名。修改后的文件应如下所示:
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.1 us-central1-aiplatform.googleapis.com # Added by you 172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client # Added by Google 169.254.169.254 metadata.google.internal # Added by Google按如下方式保存文件:
- 如果您使用的是
vim,请按Esc键,然后输入:wq以保存文件并退出。 - 如果您使用的是
nano,请输入Control+O并按Enter以保存该文件,然后输入Control+X以退出。
- 如果您使用的是
对 Gemini Enterprise Agent Platform 端点执行 ping 操作,如下所示:
ping us-central1-aiplatform.googleapis.comping命令应返回以下输出。192.168.0.1是 PSC 端点 IP 地址:PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.输入
Control+C以退出ping。在向端点发送在线预测请求时,运行以下
tcpdump命令来验证 DNS 解析和 IP 数据路径:sudo tcpdump -i any port 53 -n or host 192.168.0.1
创建非公开请求
在此步骤中,您将创建一个名为 request.json 的文本文件,其中包含您向 GenAI REST API 发送的示例 curl 请求的载荷。如需详细了解示例请求,请参阅示例请求。
在第一个标签页中运行
tcpdump命令,点击 Cloud Shell 中的 打开新的标签页,以打开新的 Cloud Shell 会话(第二个标签页)。在新的 Cloud Shell 会话(第二个标签页)中,运行以下命令,将 PROJECT_ID 替换为您的项目 ID:
projectid=PROJECT_ID gcloud config set project ${projectid}使用 IAP 登录到
on-prem-client虚拟机实例:gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap运行以下命令,将 PROJECT_ID 替换为您的项目 ID:
projectid=PROJECT_ID gcloud config set project ${projectid}使用文本编辑器(例如
vim或nano)创建一个名为request.json的新文件,其中包含以下文本:{ "contents": [{ "role": "user", "parts": [{ "text": "Give me ten interview questions for the role of program manager." }] }] }运行以下命令,向 PSC 端点发送请求,该端点会将请求转发到 GenAI API。当端点收到响应时,会将该响应转发回
on-prem-client虚拟机:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/gemini-2.0-flash-lite:generateContent"您应该会看到类似于以下示例的响应:
{ "predictions": [ { "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**", "citationMetadata": { "citations": [] }, "safetyAttributes": { "categories": [ "Finance", "Health" ], "blocked": false, "scores": [ 0.6, 0.1 ] } } ], "metadata": { "tokenMetadata": { "outputTokenCount": { "totalBillableCharacters": 505, "totalTokens": 153 }, "inputTokenCount": { "totalBillableCharacters": 54, "totalTokens": 12 } } } }在第一个标签页中,验证是否已使用 PSC 端点 IP 地址 (
192.168.0.1) 从on-prem-client虚拟机实例(子网172.16.10.0/28)访问 Agent Platform API。从 Cloud Shell 第一个标签页中的
tcpdump终端,您可以看到不需要对us-central1-aiplatform.googleapis.com进行 DNS 查找,因为已添加到/etc/hosts文件的行优先级更高,并且数据路径中使用了 PSC 端点的 IP 地址 (192.168.0.1)。您应该会看到如下所示的
tcpdump输出:23:48:49.938797 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39 23:48:49.938947 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24 23:48:49.939839 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0 23:48:49.940292 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0 23:48:49.940437 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0 23:48:49.940442 ens4 Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0 23:48:49.941193 ens4 In IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留该项目但删除各个资源。
您可以在 Cloud Shell 中运行以下命令,删除项目中的各个资源:
projectid=PROJECT_ID
gcloud config set project ${projectid}
gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
gcloud iam service-accounts delete user-managed-sa@$projectid. --quiet
gcloud compute forwarding-rules delete pscvertex --global --quiet
gcloud compute addresses delete psc-googleapi-ip --global --quiet
gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
gcloud compute networks delete onprem-vpc --quiet
gcloud compute networks delete vertex-networking-vpc --quiet
后续步骤
- 了解用于访问 Agent Platform 端点和服务的企业网络选项
- 了解如何通过端点访问已发布的服务。
- 了解 Private Service Connect 的工作原理及其提供显著性能优势的原因。
- 详细了解如何通过端点访问 Google API。
- 了解如何以及为何在大型和生产环境中使用 DNS 转发区域而不是更新
/etc/hosts文件。 - 详细了解自定义通告路由。