Private Service Connect:虛擬私有雲對等互連至 Private Service Connect 遷移作業

1. 簡介

生產端可以向使用者提供服務消耗,而虛擬私有雲對等互連是很常見的方法。不過,由於使用虛擬私有雲對等互連,有許多轉送複雜性,例如非遞移的虛擬私有雲對等互連、大型 IP 位址使用,以及對等互連虛擬私有雲中的資源過度公開。

Private Service Connect (PSC) 是一種連線方法,可讓生產端透過消費者在工作負載虛擬私有雲中佈建的單一端點公開服務。這可以避免使用者在使用虛擬私有雲對等互連時遇到許多問題。雖然系統是透過 PSC 建立許多新服務,但許多服務仍以虛擬私有雲對等互連服務的形式存在。

透過虛擬私有雲對等互連建立服務遷移路徑,Google Cloud 很高興能夠協助您遷移至 PSC 架構。採用這種遷移方法後,透過虛擬私有雲對等互連公開的生產端服務 IP 位址,會透過 PSC 型架構保存在 PSC 式架構中,因此取用者須盡量減少變更。請按照本程式碼研究室的說明操作,瞭解執行這項遷移作業的技術步驟。

注意:這個遷移路徑僅適用於生產者和用戶位於同一個 Google Cloud 機構中的服務。針對使用虛擬私有雲對等互連的任何 Google Cloud 服務或第三方服務,這些服務都會採用類似的遷移方法,但也會依服務本身需求自訂。請與相關單位聯絡,瞭解這類服務的遷移路徑。

課程內容

  • 如何設定虛擬私有雲對等互連服務
  • 如何設定 PSC 型服務
  • 使用 Internal-Ranges API,透過虛擬私有雲對等互連執行子網路遷移作業,達成將虛擬私有雲對等互連到 PSC 服務的程序。
  • 瞭解遷移服務需要停機的時間
  • 遷移步驟

軟硬體需求

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

2. 程式碼研究室拓撲

為求簡單起見,本程式碼研究室會將所有資源集中在一項專案中。在程式碼研究室中,如果生產者和消費者位於不同專案,需要在生產端端執行哪些動作,以及要對消費者端執行哪些動作。

本程式碼研究室將有 4 個狀態。

7dbf27cf215f9703.png

狀態 1 是虛擬私有雲對等互連狀態。將會有兩個虛擬私有雲:Consumer-vpc 和 Producer-vpc 這兩個執行個體進行對等互連。Producer-vpc 會透過內部網路直通式負載平衡器公開簡單的 Apache 服務。Consumer-vpc 會有一個用於測試的 consumer-vm。

7f64427c0e59d417.png

狀態 2 是 PSC 測試狀態。我們會建立新的轉送規則,並使用這項規則來與服務連結建立關聯。然後我們會在 Consumer-vpc 中建立測試 PSC 端點,測試 PSC 服務是否正常運作。

98c324c59c1fbf68.png

狀態 3 是遷移狀態。我們會保留已部署虛擬私有雲對等互連型服務,以便在 consumer-vpc 中使用的子網路範圍,因此保留這個子網路範圍。接著,我們會使用 IP 位址與 Producer-vpc 中現有的轉送規則相同的 IP 位址,建立新的 PSC 端點。

a64ab7b69132c722.png

狀態 4 為最終 PSC 狀態。我們會清除測試 PSC 端點,並刪除 consumer-vpc 和 producer-vpc 之間的虛擬私有雲對等互連。

3. 設定和需求

自助式環境設定

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 「Project name」是這個專案參與者的顯示名稱。這是 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 中運作,可大幅提升網路效能和驗證功能。您可以在瀏覽器中完成本程式碼研究室的所有工作。您不需要安裝任何東西。

4. 事前準備

啟用 API

在 Cloud Shell 中,請確認您的專案已設定並設定變數。

gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
export region=us-central1
export zone=$region-a
echo $projectid
echo $region
echo $zone

啟用所有必要服務

gcloud services enable compute.googleapis.com
gcloud services enable networkconnectivity.googleapis.com
gcloud services enable dns.googleapis.com

5. 建立生產端虛擬私有雲網路 (生產端活動)

虛擬私有雲網路

透過 Cloud Shell

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

建立子網路

透過 Cloud Shell

gcloud compute networks subnets create producer-service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

gcloud compute networks subnets create producer-fr-subnet \
        --network=producer-vpc \
        --range=192.168.0.0/28 \
        --region=$region

建立生產端 Cloud Router 和 Cloud NAT

透過 Cloud Shell

gcloud compute routers create $region-cr \
   --network=producer-vpc \
   --region=$region

gcloud compute routers nats create $region-nat \
    --router=$region-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

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

透過 Cloud Shell

gcloud compute network-firewall-policies create producer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy producer-vpc-policy \
    --network producer-vpc \
    --name network-producer-vpc \
    --global-firewall-policy

如要允許 IAP 連線至您的 VM 執行個體,請建立下列防火牆規則:

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

透過 Cloud Shell

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

我們也會再建立兩項規則,允許負載平衡器對服務進行健康狀態檢查,以及允許從消費端虛擬私有雲連線的 VM 產生的網路流量。

透過 Cloud Shell

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "LB healthchecks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:80  \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 3000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from consumer-vpc" \
    --direction INGRESS \
    --src-ip-ranges 10.0.1.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

6. 生產端服務設定 (生產端活動)

我們會建立使用單一 VM 的生產端服務,其中使用一個執行 Apache 網路伺服器的 VM,然後新增至具有區域性內部網路直通式負載平衡器的非代管執行個體群組。

建立 VM 和非代管的執行個體群組

透過 Cloud Shell

gcloud compute instances create producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-subnet \
    --zone $zone \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "I am a Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

透過 Cloud Shell

gcloud compute instance-groups unmanaged create prod-uig \
  --zone=$zone

gcloud compute instance-groups unmanaged add-instances prod-uig \
  --zone=$zone \
  --instances=producer-service-vm

建立區域性內部網路直通式負載平衡器

透過 Cloud Shell

gcloud compute health-checks create http producer-hc \
        --region=$region

gcloud compute backend-services create producer-bes \
  --load-balancing-scheme=internal \
  --protocol=tcp \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

gcloud compute backend-services add-backend producer-bes \
  --region=$region \
  --instance-group=prod-uig \
  --instance-group-zone=$zone

gcloud compute addresses create producer-fr-ip\
  --region $region \
  --subnet producer-fr-subnet \
  --addresses 192.168.0.2

gcloud compute forwarding-rules create producer-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

7. 建立消費者虛擬私有雲網路 (消費者活動)

虛擬私有雲網路

透過 Cloud Shell

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

建立子網路

透過 Cloud Shell

gcloud compute networks subnets create consumer-vm-subnet \
    --network=consumer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

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

我們將為 Consumer-vpc 建立另一個網路防火牆政策。

透過 Cloud Shell

gcloud compute network-firewall-policies create consumer-vpc-policy --global

gcloud compute network-firewall-policies associations create \
    --firewall-policy consumer-vpc-policy \
    --network consumer-vpc \
    --name network-consumer-vpc \
    --global-firewall-policy

gcloud compute network-firewall-policies rules create 1000 \
    --action ALLOW \
    --firewall-policy consumer-vpc-policy \
    --description "SSH with IAP" \
    --direction INGRESS \
    --src-ip-ranges 35.235.240.0/20 \
    --layer4-configs tcp:22  \
    --global-firewall-policy

8. 建立虛擬私有雲對等互連

生產端活動

透過 Cloud Shell

gcloud compute networks peerings create producer-vpc-peering \
    --network=producer-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc

消費者活動

透過 Cloud Shell

gcloud compute networks peerings create consumer-vpc-peering \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=producer-vpc

檢查 consumer-vpc 中的路徑清單,確認已建立對等互連。您應該會看到 consumer-vpc 和 producer-vpc 的路徑。

消費者活動

透過 Cloud Shell

gcloud compute routes list --filter="network=consumer-vpc"

預期輸出內容

NAME: default-route-49dda7094977e231
NETWORK: consumer-vpc
DEST_RANGE: 0.0.0.0/0
NEXT_HOP: default-internet-gateway
PRIORITY: 1000

NAME: default-route-r-10d65e16cc6278b2
NETWORK: consumer-vpc
DEST_RANGE: 10.0.1.0/28
NEXT_HOP: consumer-vpc
PRIORITY: 0

NAME: peering-route-496d0732b4f11cea
NETWORK: consumer-vpc
DEST_RANGE: 192.168.0.0/28
NEXT_HOP: consumer-vpc-peering
PRIORITY: 0

NAME: peering-route-b4f9d3acc4c08d55
NETWORK: consumer-vpc
DEST_RANGE: 10.0.0.0/28
NEXT_HOP: consumer-vpc-peering
PRIORITY: 0

9. 建立 DNS 區域 (消費者活動)

我們會建立 Cloud DNS 私人區域,透過 DNS 呼叫生產端服務,而非透過私人 IP 位址呼叫,藉此呈現更真實的範例。

我們會將 A 記錄新增至 example.com 網域 (指向 service.example.com 網域) 至先前建立的網路直通式負載平衡器轉送規則 IP 位址。轉送規則 IP 位址為 192.168.0.2。

透過 Cloud Shell

gcloud dns managed-zones create "producer-service" \
   --dns-name=example.com \
   --description="producer service dns" \
   --visibility=private \
   --networks=consumer-vpc

gcloud dns record-sets transaction start \
   --zone="producer-service"

gcloud dns record-sets transaction add 192.168.0.2 \
   --name=service.example.com \
   --ttl=300 \
   --type=A \
   --zone="producer-service"

gcloud dns record-sets transaction execute \
   --zone="producer-service"

10. 透過虛擬私有雲對等互連測試生產端服務 (消費者活動)

此時,狀態 1 架構已建立。

建立用戶用戶端 VM

透過 Cloud Shell

gcloud compute instances create consumer-client \
   --zone=$zone \
   --subnet=consumer-vm-subnet \
   --no-address

測試連線能力

透過 Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

來自消費者用戶端 VM

curl service.example.com

預期輸出

I am a Producer Service. 

來自消費者用戶端 VM

exit

11. 為 Private Service Connect 設定服務 (生產端活動)

現在已完成所有初始設定步驟,可以開始準備從虛擬私有雲對等互連服務遷移至 Private Service Connect 的過程。在本節中,我們會將服務設定為透過服務連結公開,以對 Producer-vpc 進行變更。我們必須在該子網路中建立新的子網路和轉送規則,以便將現有的子網路遷移至 consumer-vpc,藉此保持服務的現有 IP 位址維持不變。

建立託管新負載平衡器轉送規則 IP 的子網路。

透過 Cloud Shell

gcloud compute networks subnets create producer-psc-fr-subnet \
    --network=producer-vpc \
    --range=10.0.2.64/28 \
    --region=$region

建立負載平衡器轉送規則內部 IP 位址。

透過 Cloud Shell

gcloud compute addresses create producer-psc-ip \
  --region $region \
  --subnet producer-psc-fr-subnet \
  --addresses 10.0.2.66

建立新的負載平衡器轉送規則。這項規則已採用先前設定的後端服務和健康狀態檢查。

透過 Cloud Shell

gcloud compute forwarding-rules create psc-service-fr \
  --region=$region \
  --load-balancing-scheme=internal \
  --network=producer-vpc \
  --subnet=producer-psc-fr-subnet \
  --address=producer-psc-ip \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=producer-bes \
  --backend-service-region=$region

psc-nat-subnet 會與 PSC 服務連結建立關聯,以用於網路位址轉譯。在實際工作環境中,這個子網路的大小必須適當調整,才能支援連接的端點數量。詳情請參閱 PSC NAT 子網路大小說明文件。

透過 Cloud Shell

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.100.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

我們必須在網路防火牆政策中新增額外的防火牆規則,以允許來自 psc-nat-subnet 的流量。透過 PSC 存取服務時,流量的來源為 psc-nat-subnet。

透過 Cloud Shell

gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.100.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

建立服務連結,並記下服務連結 URI,以便在下一節設定 PSC 端點。

透過 Cloud Shell

gcloud compute service-attachments create producer-sa \
    --region=$region \
    --producer-forwarding-rule=psc-service-fr  \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$projectid=5 \
    --nat-subnets=psc-nat-subnet

透過 Cloud Shell

gcloud compute service-attachments describe producer-sa --region=$region

輸出內容範例

connectionPreference: ACCEPT_MANUAL
consumerAcceptLists:
- connectionLimit: 5
  projectIdOrNum: $projectid
creationTimestamp: '2025-04-24T11:23:09.886-07:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-sa
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/producer-sa
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/forwardingRules/psc-service-fr

12. 將「test」消費端 PSC 端點連線至生產端服務並測試 (消費者活動)

架構現在處於狀態 2。

此時透過虛擬私有雲對等互連公開的現有生產端服務仍正常運作,且在實際工作環境中正常運作。在啟動服務中斷期間,將目前的虛擬私有雲對等互連子網路遷移至消費者虛擬私有雲之前,我們會建立「測試」PSC 端點,確保公開的服務連結運作正常。我們的結束狀態連線會是 PSC 端點,其 IP 位址與虛擬私有雲對等互連型服務目前的轉送規則相同。

建立 PSC 端點

透過 Cloud Shell

gcloud compute addresses create test-psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-vm-subnet \
    --addresses 10.0.1.3

下方的目標服務會是您在上一個步驟中記下的服務連結 URI。

透過 Cloud Shell

gcloud compute forwarding-rules create test-psc-endpoint \
  --region=$region \
  --network=consumer-vpc \
  --address=test-psc-endpoint-ip \
  --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa

測試「測試」PSC 端點

透過 Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

來自消費者客戶

curl 10.0.1.3

預期輸出

I am a Producer Service. 

來自消費者客戶

exit

13. 遷移現有的生產端轉送規則子網路

執行這些步驟會導致即時虛擬私有雲對等互連的生產端服務服務中斷。我們現在會使用 Internal Ranges API,將轉送規則子網路從 Producer-vpc 遷移至 consumer-vpc。這樣當我們刪除 producer-vpc 中的子網路時,系統會鎖定該子網路,不讓該子網路使用該子網路,且僅用於在 consumer-vpc 中建立這個子網路。

如要使用內部範圍 API,您必須保留現有的虛擬私有雲對等互連轉送規則子網路 (Producer-fr-subnet、192.168.0.0/28),並在 consumer-vpc (consumer-psc-subnet) 中指定目標子網路名稱。我們會在幾個步驟中以這個名稱建立新的子網路,在 consumer-vpc 中建立新子網路。

保留 Producer-fr-subnet 以進行遷移

生產端活動

透過 Cloud Shell

gcloud network-connectivity internal-ranges create producer-peering-internal-range \
    --ip-cidr-range=192.168.0.0/28 \
    --network=producer-vpc \
    --usage=FOR_MIGRATION \
    --migration-source=projects/$projectid/regions/$region/subnetworks/producer-fr-subnet \
    --migration-target=projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet

在先前建立的內部範圍中執行說明,以查看子網路的狀態。

生產端活動

透過 Cloud Shell

gcloud network-connectivity internal-ranges describe producer-peering-internal-range

輸出內容範例

createTime: '2025-04-24T19:26:10.589343291Z'
ipCidrRange: 192.168.0.0/28
migration:
  source: projects/$projectid/regions/$region/subnetworks/producer-fr-subnet
  target: projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
name: projects/$projectid/locations/global/internalRanges/producer-peering-internal-range
network: https://www.googleapis.com/compute/v1/projects/$project/global/networks/producer-vpc
peering: FOR_SELF
updateTime: '2025-04-24T19:26:11.521960016Z'
usage: FOR_MIGRATION

刪除以虛擬私有雲對等互連為基礎的轉送規則和子網路

生產端活動

透過 Cloud Shell

gcloud compute forwarding-rules delete producer-fr --region=$region

gcloud compute addresses delete producer-fr-ip --region=$region

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

遷移子網路

使用先前建立的內部範圍建立新的子網路,將子網路遷移至 consumer-vpc。這個子網路的名稱必須與先前指定的名稱相同 (consumer-psc-subnet)。PEER_MIGRATION 的具體用途是指將子網路預留給對等虛擬私有雲之間的子網路遷移作業。有了這個用途旗標,這個子網路只能包含預留的靜態 IP 位址和 PSC 端點。

消費者活動

透過 Cloud Shell

gcloud compute networks subnets create consumer-psc-subnet \
  --purpose=PEER_MIGRATION \
  --network=consumer-vpc \
  --range=192.168.0.0/28 \
  --region=$region

14. 建立 End State PSC 端點 (消費者活動)

此時,Producer 服務仍然處於停機狀態。我們剛建立的子網路仍為鎖定狀態,只能用於遷移。如要進行測試,您可以嘗試在這個子網路中建立 VM。無法建立 VM。

透過 Cloud Shell

gcloud compute instances create test-consumer-vm \
    --zone=$zone \
    --subnet=consumer-psc-subnet \
    --no-address

預期輸出

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - Subnetwork must have purpose=PRIVATE.

我們只能使用這個子網路建立 PSC 端點。請注意,我們建立的 IP 位址使用的 IP 與供應商服務透過虛擬私有雲對等互連使用的轉送規則相同。

透過 Cloud Shell

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-psc-subnet \
    --addresses 192.168.0.2

再次提醒您,您必須使用先前記下的相同服務連結 URI,以及用來建立「測試」PSC 端點的服務連結。

透過 Cloud Shell

gcloud compute forwarding-rules create psc-endpoint \
    --region=$region \
    --network=consumer-vpc \
    --address=psc-endpoint-ip \
    --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa

15. 測試結束狀態 PSC 端點 (消費者活動)

您現在處於狀態 3 架構。

透過 Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

來自消費者用戶端 VM

curl service.example.com

預期輸出

I am a Producer Service. 

來自消費者用戶端 VM

exit

目前服務中斷,服務已恢復上線。請注意,我們不需要針對現有 DNS 進行任何變更。不需要進行消費端用戶端變更。應用程式只要能恢復已遷移服務的作業,

16. 遷移清除

為了完成遷移作業,我們必須執行幾個清除步驟。我們必須刪除並解鎖資源。

解鎖內部範圍子網路

這麼做會解鎖遷移的子網路,以便將其用途從「PEER_MIGRATION」變更為「PRIVATE」。

生產端活動

透過 Cloud Shell

gcloud network-connectivity internal-ranges delete producer-peering-internal-range

消費者活動

透過 Cloud Shell

gcloud compute networks subnets update consumer-psc-subnet \
    --region=$region \
    --purpose=PRIVATE

gcloud compute networks subnets describe consumer-psc-subnet --region=$region

輸出內容範例

creationTimestamp: '2025-04-24T12:29:33.883-07:00'
fingerprint: xxx
gatewayAddress: 192.168.0.1
id: 'xxx'
ipCidrRange: 192.168.0.0/28
kind: compute#subnetwork
name: consumer-psc-subnet
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
privateIpGoogleAccess: false
privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS
purpose: PRIVATE
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet

刪除虛擬私有雲對等互連

生產端活動

透過 Cloud Shell

gcloud compute networks peerings delete producer-vpc-peering \
    --network=producer-vpc

消費者活動

透過 Cloud Shell

gcloud compute networks peerings delete consumer-vpc-peering \
        --network=consumer-vpc

刪除「test」PSC 端點

消費者活動

透過 Cloud Shell

gcloud compute forwarding-rules delete test-psc-endpoint --region=$region
gcloud compute addresses delete test-psc-endpoint-ip --region=$region

17. 遷移清除 (消費者活動) 後的最終測試

此時,狀態 4 架構 (最終狀態) 已達成。

再次測試 PSC 端點連線,確保在清理遷移作業時不會有任何負面影響。

透過 Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

來自消費者用戶端 VM

curl service.example.com

預期輸出

I am a Producer Service. 

來自消費者用戶端 VM

exit

成功!

18. 清除步驟

透過 Cloud Shell

gcloud compute forwarding-rules delete psc-endpoint --region=$region -q

gcloud compute addresses delete psc-endpoint-ip --region=$region -q

gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q

gcloud dns record-sets delete service.example.com --zone="producer-service" --type=A -q

gcloud dns managed-zones delete "producer-service" -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy  --name=network-consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

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

gcloud compute networks subnets delete consumer-vm-subnet --region=$region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute service-attachments delete producer-sa --region=$region -q

gcloud compute forwarding-rules delete psc-service-fr --region=$region -q

gcloud compute addresses delete producer-psc-ip --region=$region -q

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

gcloud compute health-checks delete producer-hc --region=$region -q

gcloud compute instance-groups unmanaged delete prod-uig --zone=$zone -q

gcloud compute instances delete producer-service-vm --zone=$zone --project=$projectid -q

gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy  --name=network-producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q

gcloud compute routers delete $region-cr --region=$region -q

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

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

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

gcloud compute networks delete producer-vpc -q

19. 恭喜!

恭喜您完成程式碼研究室!

涵蓋內容

  • 如何設定虛擬私有雲對等互連服務
  • 如何設定 PSC 型服務
  • 使用 Internal-Ranges API,透過虛擬私有雲對等互連執行子網路遷移作業,達成將虛擬私有雲對等互連到 PSC 服務的程序。
  • 瞭解遷移服務需要停機的時間
  • 遷移步驟