本地主机可以通过两种方式访问 Vertex AI 上的生成式 AI:公共互联网,或通过 Cloud VPN 或 Cloud Interconnect 使用 Private Service Connect (PSC) 的混合网络架构(以私密方式访问)。这两个选项都提供 SSL/TLS 加密。但是,专用选项可提供更好的性能,因此建议用于关键应用。
在本教程中,您将使用高可用性 VPN (HA VPN) 通过 Cloud NAT 公开访问 Vertex AI 上的生成式 AI,在可用作多云和本地专用连接基础的两个 Virtual Private Cloud (VPC) 网络之间以私密方式访问 Vertex AI 上的生成式 AI。
本教程适用于熟悉 Vertex AI、VPC、Google Cloud 控制台和 Cloud Shell 的企业网络管理员、数据科学家和研究人员。熟悉 Vertex AI 上的生成式 AI 会很有帮助,但不强制要求。
目标
- 创建两个 VPC 网络,如上图所示:
- 一个 (
onprem-vpc
) 表示一个本地网络。 - 另一个 (
vertex-networking-vpc
) 用于访问 Vertex AI 上的生成式 AI 的 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 的以下收费组件:
您可使用价格计算器根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 如果您不是项目所有者,则项目所有者必须为您授予
roles/resourcemanager.projectIamAdmin
IAM 角色。您需要具有此角色,才能为您自己和服务账号授予 IAM 角色和权限。 - 打开 Cloud Shell 以执行本教程中列出的命令。Cloud Shell 是 Google Cloud 的交互式 Shell 环境,可让您通过网络浏览器管理项目和资源。
- 在 Cloud Shell 中,将当前项目设置为您的 Google Cloud 项目 ID,并将同一项目 ID 存储在
projectid
shell 变量中:projectid="PROJECT_ID" gcloud config set project ${projectid}
将 PROJECT_ID 替换为您的项目 ID。如有必要,您可以在 Google Cloud 控制台中查找项目 ID。如需了解详情,请参阅查找项目 ID -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
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.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
-
Enable the DNS、IAM、Compute Engine、Service Usage 和 Vertex AI APIs:
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 网络:一个是用于访问 Vertex AI 上的生成式 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-vpc
VPC 网络创建高可用性 VPN 网关:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
为
onprem-vpc
VPC 网络创建高可用性 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-vpc
VPC 网络创建一个 Cloud Router 路由器:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
为
onprem-vpc
VPC 网络创建一个 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-router1
Cloud 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-onprem
Cloud 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
将 Vertex AI User (
roles/aiplatform.user
) IAM 角色分配给该服务账号:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:user-managed-sa@$projectid.iam.gserviceaccount.com" \ --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.iam.gserviceaccount.com \ --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
验证对 Vertex AI 上的生成式 AI 的公共互联网访问
在本部分中,您将使用 Identity-Aware Proxy 登录 on-prem-client
虚拟机实例,然后通过对公共 Vertex AI 网域 (us-central1-aiplatform.googleapis.com
) 运行 dig
命令来验证与 Vertex AI 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
配置并验证对 Vertex AI 上的生成式 AI 的专用访问
在本部分中,您将配置对 Vertex AI 上的生成式 AI 的专用访问,以便在您将请求发送到公共服务端点 (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
) 分配给 Vertex AI 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
以退出。
- 如果您使用的是
对 Vertex AI 端点执行 ping 操作,如下所示:
ping us-central1-aiplatform.googleapis.com
ping
命令应返回以下输出。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
的新文件,其中包含以下文本:{ "instances": [ { "prompt": "Give me ten interview questions for the role of program manager."} ], "parameters": { "temperature": 0.2, "maxOutputTokens": 256, "topK": 40, "topP": 0.95 } }
运行以下命令,向 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/text-bison:predict"
您应该会看到类似于以下示例的响应:
{ "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
)访问 Vertex AI 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.iam.gserviceaccount.com --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
后续步骤
- 了解用于访问 Vertex AI 端点和服务的企业网络选项
- 了解如何通过端点访问已发布的服务。
- 了解 Private Service Connect 的工作原理及其提供显著性能优势的原因。
- 详细了解如何通过端点访问 Google API。
- 了解如何以及为何在大型和生产环境中使用 DNS 转发区域而不是更新
/etc/hosts
文件。 - 详细了解自定义路由通告。