從 Agentspace 遷移至區域性 NEG 自我代管資料庫

1. 簡介

在本程式碼研究室中,您將部署內部 TCP Proxy 負載平衡器和區域網路端點群組 (NEG),並發布為 PSC Producer Service。NEG 會包含一或多個 Compute 執行個體,在 GCP 自行代管資料庫,例如 JIRA、Confluence、Sharepoint。

Private Service Connect 是 Google Cloud 網路功能,可讓消費者從虛擬私有雲網路內,以私密方式存取代管服務。同樣地,代管服務供應商也能在自己的虛擬私有雲或跨雲端網路中代管這些服務,並為消費者提供私人連線。舉例來說,當您使用 Private Service Connect 存取區域 NEG 時,您是服務供應商,而 Google (Agentspace) 是服務消費者。

課程內容

  • Agentspace 的網路需求
  • Agentspace 網路最佳做法
  • 建立 Private Service Connect 生產端服務

軟硬體需求

  • 具備「擁有者」權限的 Google Cloud 專案

2. 建構項目

您將建立 Producer 網路 (agentspace-psc-demo),部署內部 TCP Proxy 負載平衡器和區域 NEG,並透過 Private Service Connect (PSC) 發布為服務。

3. 網路需求

以下是生產端網路的網路需求明細。在本程式碼研究室中,消費端是 Agentspace。

元件

說明

虛擬私有雲 (agentspace-psc-demo)

自訂模式虛擬私有雲

PSC NAT 子網路

來自 Consumer VPC 網路的封包會使用來源 NAT (SNAT) 進行轉譯,因此原始來源 IP 位址會轉換為 Producer VPC 網路中 NAT 子網路的來源 IP 位址。每個服務連結支援一個 /29 子網路。

PSC 轉送規則子網路

用於為區域內部 TCP Proxy 負載平衡器分配 IP 位址。轉送規則子網路視為一般子網路

NEG 子網路

用於從一般子網路為網路端點群組分配 IP 位址。

僅限 Proxy 的子網路

系統會指派一個內部 IP 位址給每個負載平衡器的Proxy 。從 Proxy 傳送到後端 VM 或網路端點群組的封包,來源 IP 位址來自僅限 Proxy 的子網路。建議使用 /23 子網路,但系統支援的最小子網路為 /26。 每個區域都需要一個區域 Proxy 子網路。

後端服務

後端服務是負載平衡器與後端資源之間的橋樑。在本教學課程中,後端服務會與區域 NEG 建立關聯。

4. 最佳做法

  • 可用區 NEG 支援一或多個可用區 GCE 執行個體,依據為 GCE_VM_IP_PORT
  • 建立服務附件前,請先在 Producer 轉送規則中啟用全域存取權。
  • 建立 Agentspace 端點時,請啟用全域存取權。
  • 內部 TCP Proxy 負載平衡器也支援代管和非代管執行個體群組
  • 現有的 Google Cloud TCP Proxy 或直通負載平衡器可公開為 Producer Service

5. 程式碼研究室拓撲

9a8a948b0a4ad91e.png

6. 設定和需求

自行設定環境

  1. 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請建立帳戶

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
  • 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要理會該字串。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為 PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間都會維持這個設定。
  • 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件
  1. 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,您可以刪除建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。

啟動 Cloud Shell

雖然您可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。

Google Cloud 控制台中,點選右上工具列的 Cloud Shell 圖示:

55efc1aaa7a4d3ad.png

佈建並連線至環境的作業只需幾分鐘即可完成。完成後,您應該會看到如下的內容:

7ffe5cbb04455448.png

這部虛擬機器搭載各種您需要的開發工具,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,可大幅提升網路效能和驗證。您可以在瀏覽器中完成本程式碼研究室的所有作業。您不需要安裝任何軟體。

7. 事前準備

啟用 API

在 Cloud Shell 中,確認專案 ID 已設定完畢:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone1a=[YOUR-ZONE1a]
zone1b=[YOUR-ZONE1b]
echo $project
echo $region
echo $zone1a
echo $zone1b

啟用所有必要服務:

gcloud services enable compute.googleapis.com

8. 建立供應商虛擬私有雲網路

虛擬私有雲網路

在 Cloud Shell 中執行下列操作:

gcloud compute networks create agentspace-psc-demo --subnet-mode custom

建立子網路

PSC 子網路會與 PSC 服務連結建立關聯,以進行網路位址轉譯。

在 Cloud Shell 中,建立 PSC NAT 子網路:

gcloud compute networks subnets create producer-psc-nat-subnet --network agentspace-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

在 Cloud Shell 中,建立 Producer 轉送規則子網路:

gcloud compute networks subnets create producer-psc-fr-subnet --network agentspace-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

在 Cloud Shell 中,建立網路端點群組子網路:

gcloud compute networks subnets create neg-subnet --network agentspace-psc-demo --range 172.16.30.0/28 --region $region --enable-private-ip-google-access

在 Cloud Shell 中,建立 Producer 地區專屬的僅限 Proxy 子網路

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=agentspace-psc-demo \
  --range=10.10.10.0/24

保留負載平衡器的 IP 位址

在 Cloud Shell 中,為負載平衡器保留內部 IP 位址:

gcloud compute addresses create zonal-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

在 Cloud Shell 中,查看保留的 IP 位址。

gcloud compute addresses describe zonal-neg-lb-ip \
  --region=$region | grep -i address:

輸出內容範例:

gcloud compute addresses describe zonal-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2

設定可用區 NEG

在下一節中,您將建立可用區網路端點群組,其中包含一或多個 IP 位址,或 IP 位址和目的地通訊埠組合:

  • 虛擬機器網路介面的主要內部 IPv4 位址
  • VM 網路介面的主要內部 IPv4 位址,加上目的地連接埠號碼
  • 指派給 VM 網路介面的別名 IP 位址範圍中的內部 IPv4 位址
  • 指派給 VM 網路介面的別名 IP 位址範圍中的內部 IPv4 位址,加上目的地連接埠號碼

包含 GCE_VM_IP_PORT 端點的網路介面必須位於 NEG 的子網路中。如果從 GCE_VM_IP_PORT 端點省略通訊埠號碼,Google Cloud 會使用 NEG 的預設通訊埠號碼做為端點。

在參考架構中,與區域 NEG 相關聯的 GCE 執行個體包含下列項目:

  • database-us-central1-a | us-central1-a | IP:100.100.10.2 | 連接埠:443
  • database-us-central1-a | us-central1-b | IP: 100.100.10.3 | Port: 443
  • 子網路名稱:database-subnet-1

為 zone1a 建立可用區 NEG

在下一節中,您將為每個區域 (例如 us-central1-a) 建立網路端點群組,並指定用於建立 GCE 執行個體的子網路名稱。在參考架構中,子網路名稱為 database-subnet-1。

在 Cloud Shell 中建立區域 NEG:

gcloud compute network-endpoint-groups create us-central-zonal-neg-1a \
    --zone=$zone1a \
    --network=agentspace-psc-demo \
    --subnet=database-subnet-1 \
    --default-port=443

在 Cloud Shell 中,使用在 zone1a 中部署的 GCE 執行個體 IP:Port 更新區域 NEG。在參考架構中,GCE 執行個體為 100.100.10.2,部署在 us-central1-a 區域的連接埠為 443。

gcloud compute network-endpoint-groups update us-central-zonal-neg-1a --zone=$zone1a --add-endpoint instance=database-us-central1-a,port=443

為 zone1b 建立可用區 NEG

在下一節中,您將為每個區域 (例如 us-central1-b) 建立網路端點群組,並指定用於建立 GCE 執行個體的子網路名稱。在參考架構中,子網路名稱為 database-subnet-1。

在 Cloud Shell 中建立區域 NEG:

gcloud compute network-endpoint-groups create us-central-zonal-neg-1b \
    --zone=$zone1b \
    --network=agentspace-psc-demo \
    --subnet=database-subnet-1 \
    --default-port=443

在 Cloud Shell 中,使用在 zone1b 中部署的 GCE 執行個體 IP:Port 更新區域 NEG。在參考架構中,GCE 執行個體為 100.100.10.3,通訊埠為 443,部署在 us-central1-b 區域。

gcloud compute network-endpoint-groups update us-central-zonal-neg-1b --zone=$zone1b --add-endpoint instance=database-us-central1-b,port=443

建立地區健康狀態檢查

在 Cloud Shell 中,建立探測內部部署資料庫通訊埠 443 的健康狀態檢查:

gcloud compute health-checks create tcp zonal-443-healthcheck \
    --region=$region \
    --port=443

建立網路防火牆政策和防火牆規則

在 Cloud Shell 中執行下列操作:

gcloud compute network-firewall-policies create agentspace-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy agentspace-psc-demo-policy --network agentspace-psc-demo --name agentspace-psc-demo --global-firewall-policy

下列防火牆規則允許來自 PSC NAT 子網路範圍的流量,連上網路中的所有執行個體。

在 Cloud Shell 中執行下列操作:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow traffic from PSC NAT subnet to GCE" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

下列防火牆規則允許來自健康狀態檢查探測範圍 的流量,傳送至網路中的所有執行個體。請注意,健康狀態檢查和應用程式通訊埠必須相符。

在 Cloud Shell 中執行下列操作:

gcloud compute network-firewall-policies rules create 2002 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal probe health check range to GCE" --direction INGRESS --src-ip-ranges 35.191.0.0/16,130.211.0.0/22 --global-firewall-policy --layer4-configs=tcp:443

下列防火牆規則允許流量從僅限 Proxy 的子網路 範圍傳送至網路中的所有執行個體。請注意,Proxy 子網路和應用程式通訊埠必須相符。

在 Cloud Shell 中執行下列操作:

gcloud compute network-firewall-policies rules create 2003 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal tcp proxy health check range to GCE" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp:443

9. 建立生產端服務

建立負載平衡器元件

在 Cloud Shell 中建立後端服務:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=zonal-443-healthcheck --health-checks-region=$region

在 Cloud Shell 中,將區域性 NEG us-central-zonal-neg-1a 關聯至後端服務:

gcloud compute backend-services add-backend producer-backend-svc \
   --network-endpoint-group=us-central-zonal-neg-1a  \
   --network-endpoint-group-zone=$zone1a \
   --balancing-mode=CONNECTION \
   --max-connections-per-endpoint=100 \
   --region=$region

在 Cloud Shell 中,將區域性 NEG us-central-zonal-neg-1b 關聯至後端服務:

gcloud compute backend-services add-backend producer-backend-svc \
   --network-endpoint-group=us-central-zonal-neg-1b  \
   --network-endpoint-group-zone=$zone1b \
   --balancing-mode=CONNECTION \
   --max-connections-per-endpoint=100 \
   --region=$region

在 Cloud Shell 中,建立目標 TCP Proxy,將要求轉送至後端服務:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

在下列語法中,建立已啟用全域存取權的轉送規則 (內部 TCP Proxy 負載平衡器)。

在 Cloud Shell 中執行下列操作:

gcloud compute forwarding-rules create producer-zonal-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=agentspace-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=zonal-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --allow-global-access \
     --ports=443

驗證後端健康狀態

請使用下一節的 Cloud 控制台,驗證後端服務及其相關聯運算執行個體的健康狀態 (綠色狀態)。前往下列位置:

「網路服務」→「負載平衡」→「Producer-backend-svc」

dbbc97dcef9db785.png

建立服務附件

如要發布服務,您必須建立 Private Service Connect 服務連結。您可以發布具有自動核准或明確核准功能的服務。

  • 如要發布服務並自動允許任何消費者連線,請按照「發布具有自動核准功能的服務」一文中的操作說明進行。
  • 如要發布服務並明確要求消費者核准,請在服務連結連線設定中選取「接受所選專案的連線」,並將「已接受的專案」欄位留空。
  • 產生服務附件後,要求存取 Producer 服務的 Consumer 端點一開始會處於待處理狀態。如要授權連線,製作人必須接受發出消費者端點要求的專案。

在 Cloud Shell 中,建立服務附件 cc-database1-svc-attachment,並啟用自動核准:

gcloud compute service-attachments create zonal-database1-svc-attachment --region=$region --producer-forwarding-rule=producer-zonal-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

接著,取得並記下 selfLink URI 中列出的服務附件 (以 projects 開頭),以便在 Agentspace 中設定 PSC 端點。

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/zonal-database1-svc-attachment

在 Cloud Shell 中執行下列操作:

gcloud compute service-attachments describe zonal-database1-svc-attachment --region=$region

預期輸出內容範例:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-07-12T16:00:22.429-07:00'
description: ''
enableProxyProtocol: false
fingerprint: zOpeRQnPWSc=
id: '1784245893044590569'
kind: compute#serviceAttachment
name: zonal-database1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '119824781489996776'
  low: '1784245893044590569'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/serviceAttachments/zonal-database1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/forwardingRules/producer-zonal-neg-fr

在 Cloud 控制台中,前往:

「網路服務」→「Private Service Connect」→「已發布的服務」

898fe7673474be14.png

4d0b77966af14c7a.png

10. 在 Agentspace 中建立 PSC 端點連線

將生產端服務連結 URI 與 Agentspace 建立關聯,並確保已選取全域存取權。以下是透過參考架構服務附件啟用全域存取權的範例。

cb16ba8d7cfb86dd.png

如要完成私人網路設定,請參閱 Agentspace 第三方資料來源的進一步說明。

在 Cloud 控制台中驗證 PSC 端點

如要確認 Agentspace (消費者) 和生產者之間的 PSC 連線是否成功,請驗證連結至生產者服務的 Agentspace 租戶專案。這項資訊會顯示在「已連結的專案」下方。系統會隨機指派租戶專案 ID,但一律以「tp」結尾。

您可以在 Cloud 控制台中驗證 PSC 連線。在 Cloud 控制台中,前往:

依序選取「Network Services」→「Private Service Connect」→「Published Service」,然後選取服務「zonal-database1-svc-attachment」。

2f6b7830ce3db3b7.png

11. 清除

從單一 Cloud Shell 終端機刪除實驗室元件

gcloud compute service-attachments delete zonal-database1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-zonal-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2002 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2003 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=agentspace-psc-demo-policy  --name=agentspace-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete agentspace-psc-demo-policy --global -q

gcloud compute network-endpoint-groups delete us-central-zonal-neg-1a --zone=$zone1a -q

gcloud compute network-endpoint-groups delete us-central-zonal-neg-1b --zone=$zone1b -q

gcloud compute addresses delete zonal-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks subnets delete neg-subnet --region=$region -q

gcloud compute health-checks delete zonal-443-healthcheck --region=us-central1 -q

gcloud compute networks delete agentspace-psc-demo -q

12. 恭喜

恭喜,您已成功設定並發布使用 Private Service Connect 的 Producer 服務。

您已建立 Producer 基礎架構,並瞭解如何建立區域 NEG、Producer 服務,以及將服務附件與 Agentspace 建立關聯。

Cosmopup 認為程式碼研究室超讚!

c911c127bffdee57.jpeg

後續步驟

查看一些程式碼研究室…

其他資訊和影片

參考文件