設定從 Vertex AI 連線至其他網路

本文首先概略說明使用私人服務存取權部署 Vertex AI 服務時,可擴大服務觸及範圍的選項。

接著,我們將簡要討論將服務部署至 Private Service Connect 端點的動機,以便您瞭解哪種方式最符合需求。

由於私人服務存取權會在與您對等互連的受管理網路中主控 Vertex AI 服務,請務必先熟悉「虛擬私有雲端網路對等互連」中的內容,再閱讀本文的其餘部分。

根據預設,對等設定只允許對等的 Vertex AI 網路連線至本機子網路中的端點。匯出自訂路徑可讓生產端網路連線至網路中的其他網路,這些網路具有靜態或動態路徑。

由於不支援傳遞對等互連,因此即使啟用「Export custom routes」(匯出自訂路徑),Vertex AI 的連線也無法連上直接與您網路對等互連的其他網路端點。在下圖所示的範例中,封包可以跨越 Peering Connection #1,但無法跨越 Peering Connection #2。

使用遞移性的對等互連

如要讓 Vertex AI 連線至使用者網路 2,請將對等互連連線 2 替換為 VPN 2,如下圖所示。

未使用遞移對等互連

在對等互連連線 #1 中啟用自訂路徑,可讓來自 Vertex AI 網路的 IP 封包到達使用者網路 #2。

如要讓來自使用者網路 #2 的回應封包傳送回 Vertex AI 網路,使用者網路 #2 的路由表中也必須有傳回路徑。在 Cloud Router 上,VPN 路徑會透過邊界閘道通訊協定 (BGP) 交換,我們可以在使用者 #1 中自訂 BGP 設定,將路徑通告給 10.1.0.0/16 的 Vertex AI 網路範圍,並傳送給對等使用者網路 #2。

請注意,您可以編輯 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 網路使用該區域。

完成這項變更後,您就可以從網路匯出預設路徑,確保傳往網際網路的傳出連線會透過虛擬私有雲網路進行路由。這項異動也讓您可以將任何必要政策套用至 Vertex AI 的傳出流量。

您可以執行下列指令,查詢 Peerings 的 VPC Service Controls 狀態:

gcloud services vpc-peerings get-vpc-service-controls \
  --network YOUR_NETWORK

如果設定已啟用,則會傳回 enabled: true,如果已停用,則會傳回空白清單 ({})。

使用 VPC Service Controls

如果您為工作負載指定網路,並啟用 VPC 服務控管,工作負載就會在與消費者專案對等互連的供應商網路中執行,並遵循與消費者網路相同的政策。

如果這些政策封鎖了傳出流量,工作負載也無法連上網際網路。在這種情況下,您必須按照上一節中的步驟操作,強制工作負載的傳出流量通過 VPC 網路中的 NAT 執行個體。

使用 Proxy 設定 Vertex AI 的連線功能

另一種控管 Vertex AI 傳出 IP 的模式,是強制工作負載的傳出連線必須經過您控管的網路 Proxy。這也能讓您檢查傳出連線是否符合法規。

不過,使用第三方 Proxy 會迫使使用者管理 Proxy 的憑證,以便提出驗證申訴。此外,這些 Proxy 可能不會提出與 Vertex AI SDK 和 API 預期相符的加密套件清單。

Google Cloud 現在提供Secure Web Proxy,方便您採用這種模式。您現在可以按照部署 Secure Web Proxy 執行個體快速入門指南的說明,調整工作負載,以便用於傳出連線。這些連線似乎會來自 Proxy 的來源 IP 位址。

如果元件映像檔中尚未安裝 KFP 程式庫,管道會在執行任何可能指定 Proxy 的程式碼之前,嘗試安裝該程式庫。

如果管道會依賴 Proxy 從網路安裝套件,這項嘗試就會失敗,您可能會看到類似以下的錯誤訊息:

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")

管道元件開始執行後,程式碼就能透過 Proxy 自由安裝其他套件。以下範例使用 https://10.10.10.10:443 中的 Proxy 安裝 numpy

import subprocess
subprocess.call(['pip', 'install', '--proxy', 'https://10.10.10.10:443', 'numpy'])`

設定 API 存取權的許可清單

如要進行 Vertex AI 工作負載和 Google API 之間的交易,您必須允許工作負載存取 Google API 使用的 IP 範圍。為此,您可以執行提供的指令碼,以便傳回預設網域的 IP 位址

使用 Private Service Connect 提供混合式連線

使用私人服務存取權部署 Vertex AI 服務時,有幾項限制。

  • 您可能需要為每個工作負載預留大量私人 IP 位址集區,同時避免與 VPC 位址產生衝突。
    • 即使初始設定正確,並行執行多項工作負載仍可能導致 RANGES_EXHAUSTED
  • 網路部署和疑難排解的複雜性:
    • 由於系統不支援傳遞對等互連,您必須部署複雜的因應措施,才能在與虛擬私有雲網路對等互連的不同網路之間建立連線。
    • 產生者環境中的路由表狀態並非一目瞭然。由於您無法存取租用戶專案,因此在沒有進行大量測試的情況下,通常很難判斷 Vertex AI 工作負載實際可達到的目標。

另一種模式是將這些服務部署至 Private Service Connect 端點

  • 這項服務會在您的 VPC 網路中使用單一 IP 位址,讓您保留私人位址空間供自己使用。
  • 由於 Vertex AI 服務 IP 位於您自己的網路中,因此您可以更輕鬆地建立及執行連線測試,評估該服務在您環境中是否可從其他地方存取。