本文首先概略說明使用私人服務存取權部署 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 位於您自己的網路中,因此您可以更輕鬆地建立及執行連線測試,評估該服務在您環境中是否可從其他地方存取。