在阅读本指南之前,请确保您已熟悉 VPC 对等互连中的材料。
默认情况下,对等互连配置仅允许对等互连的 Vertex AI 网络访问本地子网中的端点。导出自定义路由使提供方网络可以访问您的网络具有通向其的静态或动态路由的其他网络。
由于不支持传递性对等互连,因此即使启用了“导出自定义路由”,来自 Vertex AI 的连接也无法访问直接对等互连到您的网络的其他网络中的端点。在下图所示的示例中,数据包可以遍历对等互连连接 #1,但不能遍历对等互连连接 #2。
如要使 Vertex AI 能够访问用户网络 2,请将对等互连连接 #2 替换为 VPN #2,如下图所示。
在对等互连连接 #1 中启用自定义路由允许来自 Vertex AI 网络的 IP 数据包到达用户网络 #2。
如要允许来自用户网络 2 的响应数据包被路由回 Vertex AI 网络,则返回路由还需要存在于用户网络 2 的路由表中。VPN 路由是使用 Cloud Router 路由器上的边界网关协议 (BGP) 交换的,我们可以在用户 #1 中自定义 BGP 配置以向其对等用户网络 #2 通告 Vertex AI 网络范围 10.1.0.0/16
的路由。
请注意,您可以修改 VPN #1 BGP 配置的两端,以允许本地网络和 Vertex AI 网络获取通向对方的路由。由于没有尝试从 Vertex AI 网络传输转发路径数据包,也没有响应数据包通过任何单个网络的顺序对等互连连接,因此这些转发尝试都没有被明确阻止。
设置从 Vertex AI 到互联网的连接
如果在启动工作负载时未指定网络,则工作负载将在单独的 Google 管理的提供方项目中运行。
如果指定了网络,则工作负载将在与使用方项目对等互连的提供方项目中运行。
默认情况下,Vertex AI 网络有自己的互联网路由,且提供方网络有自己的默认互联网路由。
如需强制通过您的网络路由来自提供方网络的出站连接,您可以为对等互连启用 VPC Service Controls。 请注意,这是与 VPC Service Controls 不同的配置。
为对等互连启用 VPC Service Controls 会导致 Vertex AI 网络中发生以下变化:
- 删除默认的互联网路由。
- 为目的地
199.36.153.4/30
创建路由,并使用默认互联网网关下一个跃点。 - 为
*.googleapis.com
创建托管式专用 Cloud DNS 区域,其中包含适当的记录,用于将主机名映射到这四个地址之一。 - 授权该区域供
servicenetworking
VPC 网络使用。
完成此更改后,您可以从您的网络中导出默认路由,以确保通过 VPC 网络路由到互联网的出站连接。此更改还支持您将任何需要的政策应用于 Vertex AI 的出站流量。
使用 VPC Service Controls
如果为工作负载指定了网络并且启用了 VPC Service Controls,则工作负载将在与使用方项目对等互连并受到相同政策约束的提供方网络中作为使用方网络运行。
如果这些政策阻止出站流量,则工作负载同样无法访问互联网。在这种情况下,您必须按照上一部分中的步骤强制来自工作负载的出站流量通过 VPC 网络中的 NAT 实例。
使用代理设置从 Vertex AI 进行连接
从 Vertex AI 控制出站 IP 的另一种模式是强制来自工作负载的出站连接通过您控制的 Web 代理。它还允许检查出站连接是否符合规范。
但是,使用第三方代理会强制用户管理代理的证书以对投诉进行身份验证。此外,这些代理可能不会提出与 Vertex AI SDK 和 API 的预期相交的加密套件列表。
Google Cloud 现在提供安全 Web 代理来帮助实现此模式。您现在可以按照部署安全 Web 代理实例快速入门指南,调整工作负载以使用该实例进行出站连接。这些连接似乎源自代理的来源 IP 地址。
如果组件映像中尚未安装 KFP 库,则流水线会在运行任何可能已指定代理的代码之前尝试安装该库。
如果流水线依赖代理从互联网安装软件包,则此尝试将失败,并且您可能会看到如下错误:
Could not find a version that satisfies the requirement kfp==2.7.0
在这种情况下,如果您在运行代码之前无法安装 KFP,则必须使用已安装 KFP 的映像。
您可以将 KFP 添加到任何基础映像,并将其推送到您的仓库。
以下 Dockerfile 示例将 KFP 添加到 python:3.8
基础映像。
FROM python:3.8
RUN pip install kfp==2.7.0
然后,您可以将流水线 @component
配置为使用此映像:
@component(base_image="$PATH_TO_YOUR_REPOSITORY:YOUR_IMAGE")
流水线组件运行后,您的代码可以通过代理自由安装其他软件包。以下示例使用 https://10.10.10.10:443
上的代理安装 numpy
。
import subprocess
subprocess.call(['pip', 'install', '--proxy', 'https://10.10.10.10:443', 'numpy'])`
为 API 访问设置许可名单
对于 Vertex AI 工作负载与 Google API 之间的事务,您必须允许从工作负载访问 Google API 使用的 IP 范围。为此,您可以运行提供的脚本以返回默认网域的 IP 地址。