Vertex AI 使用 PSC,以私密方式存取線上預測端點

1. 簡介

地端部署主機可透過公開網際網路 (選項 1),或使用 Cloud VPNCloud Interconnect 搭配 Private Service Connect (PSC) (選項 2),從地端部署網路原生存取線上預測服務,這兩種方式都提供 SSL/TLS 加密。透過互連網路連線進行線上預測的混合式連線效能,優於透過網際網路連線,因此建議用於重要應用程式,如圖 1 所示。

本教學課程將說明如何使用高可用性 VPN (HA VPN),在兩個 VPC 網路之間私下存取線上預測,做為多雲端和地端部署私人連線的基礎。

請注意,Vertex 線上預測是公開端點,因此您要使用 VPC Service Controls (VPC-SC) 限制存取權,建立安全範圍來允許或拒絕存取 Vertex 和其他 Google API。本教學課程未涵蓋 VPC-SC,詳情請參閱「搭配使用 VPC Service Controls 與 Vertex AI」。

24a07ba49a7bcb16.png

建構項目

您將設定名為 on-prem-vpc 的虛擬私有雲網路,代表地端部署環境。在您的部署作業中,on-prem-vpc 不會存在,而是會使用混合式網路連線至地端部署資料中心或雲端服務供應商。

您將建構完整的 Private Service Connect 架構,說明如何透過 Cloud NAT 公開存取線上預測功能,以及如何透過高可用性 VPN 使用 PSC 私下存取線上預測功能,詳情如下。

b545c808b366341a.png

在 Google Cloud 專案中部署線上預測後,即可探索下列用途:

線上預測的公開存取權包括:

  • 建立 GCE 執行個體 (nat-client),利用 NAT 進行輸出網際網路存取
  • 使用 CURL 對模型進行推論
  • 使用 TCPDUMP 驗證線上預測是否透過公開 VIP 存取

線上預測的私人存取權包含下列項目:

  • 將模型部署至專案中的 Vertex 線上預測端點
  • 在 aiml-vpc 中建立 Private Service Connect (Googleapis) 端點
  • 透過 Cloud Router 將 PSC IP 位址匯出為自訂通告,傳送至地端部署 VPC
  • 建立 GCE 執行個體 (private-client),並使用 PSC 端點 IP 更新 etc/hosts 檔案
  • 使用 CURL 對模型進行推論
  • 使用 TCPDUMP 驗證線上預測是否透過 PSC 端點 IP 位址存取

課程內容

  • 如何建立 Private Service Connect 端點
  • 如何透過 Cloud Router 通告 PSC 端點 IP
  • 如何使用 TCPDUMP 驗證線上預測存取權 (公有和私有)

軟硬體需求

  • Google Cloud 專案

IAM 權限

Compute 網路管理員

Service Directory 編輯器

DNS 管理員

網路管理員

配額管理員

筆記本管理員

服務帳戶使用者

儲存空間管理員

Vertex AI 使用者

服務帳戶管理員

2. 事前準備

更新專案以支援教學課程

本教學課程會使用 $variables,協助您在 Cloud Shell 中實作 gcloud 設定。

在 Cloud Shell 中執行下列操作:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. 啟用服務

在 Cloud Shell 中執行下列操作:

gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable iam.googleapis.com 
gcloud services enable compute.googleapis.com 
gcloud services enable notebooks.googleapis.com

4. aiml-vpc 設定

建立 aiml-vpc

在 Cloud Shell 中執行下列操作:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

建立由使用者管理的筆記本子網路

在 Cloud Shell 中執行下列操作:

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

Cloud Router 和 NAT 設定

本教學課程會使用 Cloud NAT 下載筆記本軟體套件,因為使用者管理的筆記本執行個體沒有外部 IP 位址。Cloud NAT 也提供輸出 NAT 功能,也就是說,網際網路主機無法與使用者管理的筆記本啟動通訊,因此更加安全。

在 Cloud Shell 中,建立區域性 Cloud Router。

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

在 Cloud Shell 中,建立區域性 Cloud NAT 閘道。

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

5. 設定地端部署 VPC

建立 地端部署 VPC

在 Cloud Shell 中執行下列操作:

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

建立 nat-subnet

在 Cloud Shell 中執行下列操作:

gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1

建立 private-ip-subnet

在 Cloud Shell 中執行下列操作:

gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1

Cloud Router 和 NAT 設定

本教學課程會使用 Cloud NAT 下載軟體套件。Cloud NAT 也提供輸出 NAT 功能,也就是說,網際網路主機不得與運算資源發起通訊,因此更加安全。

在 Cloud Shell 中,建立區域性 Cloud Router。

gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1

在 Cloud Shell 中,建立區域性 Cloud NAT 閘道。

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. 建立 Private Service Connect 端點

在下一節中,您將建立 Private Service Connect (PSC) 端點,用於從地端部署 VPC 存取 Vertex API。在後續步驟中,系統會從 aiml-vpc-cloud-router-vpn 將 PSC IP 位址 100.100.10.10 通告至地端部署網路,做為自訂路由器通告。

透過 Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

建立 PSC 端點

透過 Cloud Shell

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

列出已設定的 Private Service Connect 端點

透過 Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

說明已設定的 Private Service Connect 端點

透過 Cloud Shell

gcloud compute forwarding-rules describe \
    pscvertex --global

7. 混合式連線

在下一節中,您將建立 Cloud Router,以便使用邊界閘道通訊協定 (BGP),在虛擬私有雲 (VPC) 和對等互連網路之間動態交換路由。

Cloud Router 可透過 Cloud VPN 通道設定 BGP 工作階段,連線至您的網路。並自動取得新的子網路 IP 位址範圍,然後通告至對等互連網路。

在本教學課程中,您會在 aiml-vpc地端部署-vpc 之間部署高可用性 VPN。

aiml-vpc 建立高可用性 VPN 閘道。

建立每個閘道時,系統會自動分配兩個外部 IPv4 位址,每個閘道介面各一個。

在 Cloud Shell 中建立高可用性 VPN 閘道

gcloud compute vpn-gateways create aiml-vpn-gw \
   --network=aiml-vpc\
   --region=us-central1

地端部署 VPC 建立高可用性 VPN 閘道

建立每個閘道時,系統會自動分配兩個外部 IPv4 位址,每個閘道介面各一個。請記下這些 IP 位址,以便稍後在設定步驟中使用。

在 Cloud Shell 中建立高可用性 VPN 閘道。

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

驗證高可用性 VPN 閘道建立作業

使用主控台前往「混合式連線」→「VPN」→「Cloud VPN 閘道」,並驗證閘道 IP 是否已產生。

66312b1b53c233d7.png

為 aiml-vpc 建立 Cloud Router

在 Cloud Shell 中,建立位於 us-central1 的 Cloud Router

gcloud compute routers create aiml-cr-us-central1 \
   --region=us-central1 \
   --network=aiml-vpc\
   --asn=65001

為地端部署 VPC 建立 Cloud Router

在 Cloud Shell 中,建立位於 us-central1 的 Cloud Router

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

為 aiml-vpc 建立 VPN 通道

您會在每個高可用性 VPN 閘道上建立兩個 VPN 通道。

建立 VPN 通道 0

在 Cloud Shell 中建立 tunnel0:

gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 0

建立 VPN 通道 1

在 Cloud Shell 中建立 tunnel1:

gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 1

為 地端部署-vpc 建立 VPN 通道

您會在每個高可用性 VPN 閘道上建立兩個 VPN 通道。

建立 VPN 通道 0

在 Cloud Shell 中建立 tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

建立 VPN 通道 1

在 Cloud Shell 中建立 tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

驗證 VPN 通道建立作業

使用控制台前往「混合式連線」→「VPN」→「Cloud VPN 通道」

e8e13ebaed09f1.png

8. 建立 BGP 鄰居

建立 BGP 工作階段

在本節中,您將設定 Cloud Router 介面和 BGP 對等互連。

為 aiml-vpc 建立 BGP 介面和對等互連

在 Cloud Shell 中建立 BGP 介面:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel0 \
    --region us-central1

在 Cloud Shell 中建立 BGP 對等互連:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

在 Cloud Shell 中建立 BGP 介面:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel1 \
    --region us-central1

在 Cloud Shell 中建立 BGP 對等互連:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

為地端部署 VPC 建立 BGP 介面和對接

在 Cloud Shell 中建立 BGP 介面:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-aiml-vpc\
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

在 Cloud Shell 中建立 BGP 對等互連:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel0 \
    --interface if-tunnel1-to-aiml-vpc\
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

在 Cloud Shell 中建立 BGP 介面:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-aiml-vpc\
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

在 Cloud Shell 中建立 BGP 對等互連:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel1\
    --interface if-tunnel2-to-aiml-vpc\
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

前往「混合式連線能力」→「VPN」,查看 VPN 通道詳細資料。

cb91b4476a88acd3.png

透過高可用性 VPN 驗證 aiml-vpc 學習到的路徑

使用控制台,依序前往「VPC network」(虛擬私有雲網路) →「VPC networks」(虛擬私有雲網路) →「aiml-vpc」→「ROUTES」(路徑) →「REGION」(區域) →「US-CENTRAL1」(美國中部 1) →「VIEW」(檢視)

觀察 aiml-vpc 是否已從 地端部署-vpc 網路位址轉譯 (NAT)-子網路 和 private-ip-子網路 學習已知路由

f407ed6e1a6233db.png

確認地端部署 VPC 已透過高可用性 VPN 瞭解 workbench-subnet

使用控制台,依序前往「虛擬私有雲網路」→「虛擬私有雲網路」→「地端部署-虛擬私有雲」→「路由」→「區域」→「US-CENTRAL1」→「VIEW」

7957e5d898a9e7e0.png

9. 建立自訂路徑通告 aiml-vpc

由於子網路未在 VPC 中設定,因此 aiml-cr-us-central1 雲端路由器不會自動宣傳 Private Service Connect 端點 IP。

您需要從 aiml-cr-us-central Cloud Router 為端點 IP 位址 100.100.10.10 建立自訂路由通告,透過 BGP 向 on-prem-vpc 的地端部署環境通告。

在控制台中,依序前往「HYBRID CONNECTIVITY」→「CLOUD ROUTERS」→「aiml-cr-us-central1」,然後選取「EDIT」

c8fb02ed59a5b068.png

在「Advertised routes」(播送的路由) 專區中,選取「Create custom routes」(建立自訂路由) 選項,根據下方範例更新欄位,選取「DONE」(完成),然後按一下「SAVE」(儲存)

5996464e3aae0665.png

f799082ab2cd7e31.png

驗證

確認地端部署 VPC 已透過高可用性 VPN 瞭解 PSC 端點 IP 位址

使用控制台,依序前往「虛擬私有雲網路」→「虛擬私有雲網路」→「地端部署-虛擬私有雲」→「路由」→「區域」→「US-CENTRAL1」→「VIEW」

1b42673e6f940bf2.png

10. 在地端部署虛擬私有雲上建立自訂路徑通告

根據預設,地端部署 VPC Cloud Router 會通告所有子網路,但只需要 private-ip-subnet。

在下一節中,請更新地端部署 on-prem-cr-us-central1 Cloud Router 的路徑通告。

在控制台中,依序前往「HYBRID CONNECTIVITY」→「CLOUD ROUTERS」→「地端部署-cr-us-central1」,然後選取「EDIT」

bd96bde9550d516a.png

在「Advertised routes」(播送的路由) 專區中,選取「Create custom routes」(建立自訂路由) 選項,根據下方範例更新欄位,選取「DONE」(完成),然後按一下「SAVE」(儲存)

f8b61f669a9cfeef.png

驗證

確認 aiml-vpc 已從 地端部署-vpc 瞭解 private-ip-subnet 路由。

使用控制台,依序前往「VPC network」(虛擬私有雲網路) →「VPC networks」(虛擬私有雲網路) →「aiml-vpc」→「ROUTES」(路徑) →「REGION」(區域) →「US-CENTRAL1」→「VIEW」(檢視)

2b1a7a5f918e9f50.png

11. 建立使用者代管服務帳戶 (GCE 執行個體)

如要精細控管 Vertex API,您必須使用使用者管理的服務帳戶,並將該帳戶套用至 NAT 和私人用戶端執行個體。產生服務帳戶後,您可以根據業務需求修改權限。在本教學課程中,使用者管理的服務帳戶 vertex-sa 會套用下列角色:

您必須先 Service Account API,才能繼續操作。

在 Cloud Shell 中建立服務帳戶。

gcloud iam service-accounts create gce-vertex-sa \
    --description="service account for vertex" \
    --display-name="gce-vertex-sa"

在 Cloud Shell 中,使用 Compute 執行個體管理員角色更新服務帳戶

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

在 Cloud Shell 中,使用 Vertex AI 使用者角色更新服務帳戶

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

12. 建立使用者管理的服務帳戶 (Notebooks)

在下一節中,您將建立與本教學課程所用 Vertex Workbench (Notebook) 相關聯的使用者代管服務帳戶。

在本教學課程中,服務帳戶會套用下列角色:

在 Cloud Shell 中建立服務帳戶。

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

在 Cloud Shell 中,將服務帳戶更新為 Storage 管理員角色。

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

在 Cloud Shell 中,使用 Vertex AI 使用者角色更新服務帳戶。

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

在 Cloud Shell 中,更新服務帳戶,並指派 Artifact Registry 管理員角色。

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

在 Cloud Shell 中列出服務帳戶,並記下建立使用者管理的筆記本時要使用的電子郵件地址。

gcloud iam service-accounts list

13. 已建立測試執行個體

在下一節中,您將建立測試執行個體,驗證存取 Vertex API 的不同方法,具體來說:

  • 執行個體 nat-client, 會使用 Cloud NAT 解析 Vertex AI,因此可透過網際網路存取線上預測端點
  • 執行個體 private-client 會使用 Private Service Connect IP 100.100.10.10,透過高可用性 VPN 存取線上預測端點。

在 Cloud Shell 中建立 nat-client 執行個體。

gcloud compute instances create nat-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=nat-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

在 Cloud Shell 中建立 private-client 執行個體。

gcloud compute instances create private-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=private-ip-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

如要允許 Identity-Aware Proxy (IAP) 連線至 VM 執行個體,請建立符合下列條件的防火牆規則:

  • 套用至所有您希望能透過 IAP 存取的 VM 執行個體。
  • 允許來自 IP 範圍 35.235.240.0/20 的輸入流量。這個範圍包含 IAP 用於 TCP 轉送的所有 IP 位址。

在 Cloud Shell 中,建立 IAP 防火牆規則。

gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
    --network on-prem-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

14. 建立由使用者管理的筆記本

Notebooks API

在下一節中,建立納入先前建立的服務帳戶 (user-managed-notebook-sa) 的使用者管理筆記本。

在 Cloud Shell 中建立 private-client 執行個體。

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

15. 部署模型及線上預測

在下一節中,請使用提供的 程式碼研究室「Vertex AI:使用 Sklearn 的自訂預測處理常式,預先處理及後續處理預測資料」,從第 7 節開始,因為您已在上一個步驟中建立筆記本。模型部署完成後,請返回教學課程,開始下一個部分。

ee68b7ba0cfd2746.png

16. 透過網際網路驗證 Vertex API 的存取權

在下一節中,您將登入執行個體 nat-client,並對用於解析 Vertex API 的網域 us-central1-aiplatform.googleapis.com 使用 dig 和 tcpdump,驗證與 Vertex AI 的連線。

在 Cloud Shell 中使用 IAP 登入 nat-client,對 vertex 網域 us-central1-aiplatform.googleapis.com 執行 dig,驗證與 Vertex API 的連線

gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

執行 dig。

dig us-central1-aiplatform.googleapis.com

例如,請注意 DNS 回應中的公用 IP。

user@nat-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE  rcvd: 322

從 nat-client OS 執行 tcpdump,在對線上預測執行 curl 時驗證 DNS 解析。

 sudo tcpdump -i any port 53 -n

範例:

user@nat-client:~$ sudo tcpdump -i any port 53 -n 
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes

選取「+」開啟新的 Cloud Shell 終端機。開啟新分頁後,請更新專案名稱變數。

在 Cloud Shell 中,更新專案名稱變數。

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

在 Cloud Shell 2 中,對 nat-client 執行個體執行 SSH。

gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"

在下一節中,您將使用 sudo VI 編輯器或 nano 建立 instances.json 檔案,並插入用於從已部署模型取得預測結果的資料字串。

在 NAT 用戶端 OS 中,使用下列資料字串建立 instances.json 檔案:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

範例:

user@nat-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@nat-client:$

從 Cloud 控制台取得線上預測端點 ID,以供後續步驟使用。

依序前往「VERTEX AI」→「ONLINE PREDICTION」

237d413ccde1e95b.png

在 nat-client OS 中,建立下列變數:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

範例:

ENDPOINT_ID="3328226095324463104"

從 nat-client OS 執行 curl,取得模型的回覆。

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

例如,請注意預測結果成功。

user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}

17. 驗證 - 網際網路存取 Vertex API

現在您已執行預測,讓我們看看 TCPDUMP 結果 (終端機 1),指出 nat-client 執行個體 (192.168.10.2) 對本機 DNS 伺服器 169.254.169.254 執行 Vertex AI 網域 us-central1-aiplatform.googleapis.com 的 DNS 查詢。DNS 查詢結果是 Vertex API 的公開虛擬 IP 位址 (VIP),如下所示:

user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)

18. 啟用 Vertex API 的私人存取權

在下一節中,您將透過混合式網路 (高可用性 VPN) 使用 Private Service Connect 存取 Vertex API,以私密方式進行線上預測。在本教學課程的範例中,您將更新 private-client 執行個體中的 /etc/hosts 檔案。

在地端部署環境中,更新單一或少數幾部機器的 /etc/hosts 檔案以進行測試是適當的做法,但對於大規模和正式環境,使用 PSC 端點 FQDN 建立新的轉送區域會更理想。

舉例來說,教學課程中建立的 PSC 端點名為 pscvertex,因此會轉譯為 pscvertex.p.googleapis.com。使用 Vertex 的端點時,請在 FQDN 後方附加服務,例如 us-central1-aiplatform-pscvertex.p.googleapis.com

使用 PSC 端點更新地端部署 DNS 時,也需要重構本機應用程式,以便呼叫 FDQN (例如 us-central1-aiplatform-pscvertex.p.googleapis.com),而非原生公開端點 us-central1-aiplatform.googleapis.com

如果用戶端可設定為使用自訂端點,就能使用 p.googleapis.com DNS 名稱,將要求傳送至端點。

如要瞭解如何設定用戶端或用戶端程式庫以使用自訂端點,請參閱相關說明文件。例如:

  • Python:您可以在 google-api-core 套件的用戶端選項類別中設定 api_endpoint。
  • Go:您可以在 api 套件的用戶端選項套件中設定 WithEndpoint。
  • gcloud: You can configure api_endpoint_overrides

選取「+」開啟新的 Cloud Shell 終端機。開啟新分頁後,請更新專案名稱變數。

從 Cloud Shell。

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

在新的 Cloud Shell 中使用 IAP 登入 private-client,對 vertex 網域 us-central1-aiplatform.googleapis.com 執行 dig,驗證與 Vertex API 的連線。

從 Cloud Shell 登入 private-client OS 執行個體。

gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

執行 dig。

dig us-central1-aiplatform.googleapis.com

例如,請根據 DNS 回應記下公開 IP。

user@private-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5

使用 sudo VI 編輯器或 nano 更新 private-client 執行個體的 /etc/hosts,建立指向 PSC 端點 100.100.10.10 的 Vertext AI FQDN 記錄 us-central1-aiplatform.googleapis.com,不需進一步變更。

範例:

user@private-client:~$ more /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

從私有用戶端 OS,對 Vertex API 端點執行 PING。

ping us-central1-aiplatform.googleapis.com

舉例來說,PING 會傳回 PSC 端點 IP,但預期不會有回覆。

user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.

從私有用戶端 OS 執行 tcpdump,在對線上預測執行 curl 時,驗證 DNS 解析和 IP 資料路徑至 PSC 端點。

 sudo tcpdump -i any port 53 -n or host 100.100.10.10

選取「+」開啟第四個 Cloud Shell 終端機。新分頁開啟後,請更新專案名稱變數。

在 Cloud Shell 中,更新專案名稱變數。

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

在 Cloud Shell 4 中,對 private-client 執行個體執行 ssh。

gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"

在下一節中,您將使用 sudo VI 編輯器或 nano 建立 instances.json 檔案,並插入用於從已部署模型取得預測結果的資料字串。

在私有用戶端 OS 中,使用下列資料字串建立 instances.json 檔案:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

範例:

user@private-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@private-client:$

在私有用戶端作業系統中,建立下列變數:

gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

範例:

ENDPOINT_ID="3328226095324463104"

在 Cloud Shell 4 的私有用戶端 OS 中,執行 curl 以取得模型的回應。

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

19. 驗證 - 私人存取 Vertex API

在 Cloud Shell 4 的私有用戶端 OS 中,請注意 PSC 端點 IP (100.100.10.10) 用於存取 Vertex API。

user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: May 29 08:21:36 2023 GMT
*  expire date: Aug 21 08:21:35 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

在 Cloud Shell 3 的 TCPDUMP 終端機中,我們可以驗證系統未觀察到對 us-central1-aiplatform.googleapis.com 的 DNS 查詢,因為 /etc/host 檔案優先使用 PSC IP 位址 100.100.10.10。

user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341

您已成功驗證透過網際網路連線至公開端點,並使用混合式網路和 Private Service Connect (googleapis) 私下連線至線上預測。退出 OS,返回 Cloud Shell 提示。

20. 清理

在 Cloud Shell 中刪除教學課程元件。

gcloud compute forwarding-rules delete pscvertex --global --quiet

gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet 

gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet 

gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet

gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet

gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet

gcloud compute networks subnets delete nat-subnet  private-ip-subnet --region=us-central1 --quiet

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute networks delete aiml-vpc --quiet

刪除 Vertex 元件

如要刪除容器映像檔,請前往 Artifact Registry,選取您建立的存放區,然後選取「刪除」

616a3108bc2e48c8.png

如要刪除 Storage Bucket,請使用 Cloud 控制台的導覽選單瀏覽至 Storage,選取 Bucket,然後按一下「Delete」(刪除)

eddd1f9fdfaede8.png

從端點取消部署模型。前往「Vertex AI」→「線上預測」→ 選取「diamonds-cpr_endpoint」→「取消部署端點的模型」→「取消部署」

bc95f092d21d4698.png

刪除模型。依序前往「Vertex AI」→「Model Registry」→「Delete Model」(刪除模型)

ec4afff091e11606.png

刪除線上預測端點。前往 VertexAI → 線上預測 → 選取 diamonds-cpr_endpoint → 刪除端點

7453760299bdfb9a.png

21. 恭喜

恭喜!您已成功設定並驗證連線至線上預測功能,包括透過網際網路連線,以及透過 Private Service Connect 和混合式網路以私密方式連線。

您已建立 nat-client 和 private-client,並使用 TCPDUMP 驗證用於連線至 Vertex API 的 IP 位址。此外,您也瞭解了 Private Service Connect (googleapis),以及如何利用客戶 PSC 端點,隔離地端部署和多雲端應用程式。

Cosmopup 認為教學課程很棒!

e6d3675ca7c6911f.jpeg

後續步驟

查看一些教學課程…

延伸閱讀和影片

參考文件