1. 簡介
Private Service Connect (PSC) 是 Google Cloud 網路功能,可讓消費者從 VPC 網路內部,以私密方式存取代管服務。同樣地,代管服務生產端也能在自己的獨立虛擬私有雲網路中代管這些服務,並為消費者提供私人連線。
Cloud Run 是代管運算平台,能讓您在 Google 可擴充的基礎架構上直接執行容器。
您可以透過兩種不同方式,將 Cloud Run 用於 PSC 服務。
- 透過 Google API 的 PSC,透過 Cloud Run 提供的 run.app 網址呼叫 Cloud Run
- 透過自訂 PSC 生產端服務,其中 Cloud Run 是透過服務連結,經由無伺服器 NEG 的內部應用程式負載平衡器公開。
本程式碼研究室將探討如何為這兩種情境設定 Cloud Run 和 PSC
課程內容
- 在 Cloud Run 上部署基本應用程式
- Cloud Run 輸入和輸出控制項
- 透過內部應用程式負載平衡器和無伺服器 NEG 部署 Cloud Run
- 透過服務連結設定 PSC 生產端服務
- 部署 PSC 端點
軟硬體需求
- 具備「擁有者」權限的 Google Cloud 專案
2. 程式碼研究室拓撲

在本程式碼研究室中,您將部署兩個可透過 PSC 存取的 Cloud Run 服務,第一個是透過 PSC 發布的自訂服務,第二個是 Google API 的 PSC。您將建立兩個虛擬私有雲,分別是 consumer-vpc 和 producer-vpc。您首先要部署 Hello World Cloud Run 服務,並透過 producer-vpc 中的區域性內部應用程式負載平衡器和無伺服器 NEG,讓服務可供存取。設定 Cloud Run 服務,透過服務連結做為 PSC 服務供應商服務存取之前,您會先透過供應商用戶端,驗證服務是否透過負載平衡器運作。
接著前往 consumer-vpc,部署指向 Cloud Run 服務連結的 PSC 端點,該服務連結是在 producer-vpc 中設定。接著,您將確認服務是否可透過 PSC 從消費者 VPC 中的消費者端存取。接下來,您將建立另一個 Cloud Run 服務,呼叫 PSC 端點。最後,您將部署 Google API 的 PSC 端點。您將透過 Cloud Run 提供的網址,從消費者端存取 Cloud Run,該網址會使用 Google API 的 PSC 端點。
3. 設定和需求
自修實驗室環境設定
- 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。



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

佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 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 projectnum=[YOUR-PROJECT-NUM] export region=us-central1 export zone=us-central1-a echo $projectid echo $projectnum echo $region echo $zone
啟用所有必要服務
gcloud services enable compute.googleapis.com gcloud services enable run.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com gcloud services enable cloudbuild.googleapis.com gcloud services enable cloudresourcemanager.googleapis.com
5. 建立供應商虛擬私有雲網路
虛擬私有雲網路
透過 Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
建立子網路
透過 Cloud Shell
gcloud compute networks subnets create producer-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
gcloud compute networks subnets create lb-proxy-subnet \
--network=producer-vpc \
--range=10.100.100.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--region=$region \
--range=10.100.101.0/24 \
--purpose=PRIVATE_SERVICE_CONNECT
PSC 子網路會與 PSC 服務連結建立關聯,以進行網路位址轉譯。在正式版用途中,這個子網路的大小必須適當,才能支援所連線的端點數量。詳情請參閱 PSC NAT 子網路大小調整說明文件。
建立 Producer 網路防火牆政策和防火牆規則
透過 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
6. 建立 Hello World Cloud Run 服務
請按照這裡的指示,以 Python 撰寫範例應用程式。在 Cloud Shell 中執行這些指令。完成「編寫範例應用程式」的步驟 3 後,請返回本程式碼研究室,按照下列指示從來源部署至 Cloud Run。
部署 Cloud Run 服務前,請先執行下列指令,確保預設的 Compute 服務帳戶具備適當權限。
透過 Cloud Shell
gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder
注意:本程式碼研究室假設貴機構未啟用「網域限制共用」機構政策。如果已啟用這項政策,您必須執行額外步驟,才能部署 Cloud Run 服務並啟用驗證功能、設定 OAuth 同意畫面,以及為負載平衡器後端設定 IAP。建議在正式環境中完成所有設定步驟。
透過 Cloud Shell
gcloud beta run deploy helloworld \
--source . \
--platform=managed \
--ingress=internal \
--allow-unauthenticated \
--no-default-url \
--region=$region
使用 --no-default-url 旗標部署 Cloud Run 服務時,系統不會提供 run.app 網址。我們不會使用這項服務的網址。截至本程式碼研究室發布時,這項功能仍為預先發布版。
繼續操作之前,請先切換回 Cloud Shell 的主目錄。
透過 Cloud Shell
cd ..
7. 透過內部應用程式負載平衡器公開 Hello World Cloud Run
為負載平衡器轉送規則保留靜態內部 IP 位址。
在 Cloud Shell 中
gcloud compute addresses create cloudrun-ip \ --region=$region \ --subnet=producer-subnet gcloud compute addresses describe cloudrun-ip --region=$region
輸出內容範例
address: 10.0.1.31 addressType: INTERNAL creationTimestamp: '2025-03-17T09:04:06.620-07:00' description: '' id: 'xxxx' kind: compute#address labelFingerprint: xxxx name: cloudrun-ip networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/addresses/cloudrun-ip status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/producer-subnet
記下您剛建立的 IP 位址。
建立區域性內部應用程式負載平衡器
在 Cloud Shell 中
gcloud compute network-endpoint-groups create cloudrun-producer-neg \
--region=$region \
--network-endpoint-type=serverless \
--cloud-run-service=helloworld
gcloud compute backend-services create cloudrun-producer-bes \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--region=$region
gcloud compute backend-services add-backend cloudrun-producer-bes \
--region=$region \
--network-endpoint-group=cloudrun-producer-neg \
--network-endpoint-group-region=$region
gcloud compute url-maps create producer-urlmap \
--default-service=cloudrun-producer-bes \
--region=$region
gcloud compute target-http-proxies create producer-http-proxy \
--url-map=producer-urlmap \
--region=$region
在 Cloud Shell 中
gcloud compute forwarding-rules create cloudrun-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=producer-subnet \
--address=cloudrun-ip \
--target-http-proxy=producer-http-proxy \
--target-http-proxy-region=$region \
--region=$region \
--ports=80 \
--allow-global-access
8. 測試透過負載平衡器公開的 Hello World Cloud Run
建立測試 VM
透過 Cloud Shell
gcloud compute instances create producer-client \
--zone=$zone \
--subnet=producer-subnet \
--no-address \
--scopes=cloud-platform
在 Cloud Shell 中
gcloud compute ssh \
--zone "$zone" "producer-client" \
--tunnel-through-iap \
--project $projectid
將 <loadbalancer-ip> 替換為您先前建立的 IP 位址 (例如 10.0.0.2)。
測試 Hello World
在 producer-vm 中
curl <loadbalancer-ip>
預期輸出
Hello World!
退出 VM。
在 producer-vm 中
exit
9. 建立服務連結
透過 Cloud Shell
gcloud compute service-attachments create cloudrun-attachment \
--region=$region \
--producer-forwarding-rule=cloudrun-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$projectid=5 \
--nat-subnets=psc-nat-subnet
接著,請擷取並記下服務連結 URI,以便在消費者環境中設定 PSC 端點。
在 Cloud Shell 中
gcloud compute service-attachments describe cloudrun-attachment --region=$region
預期的輸出內容範例
connectionPreference: ACCEPT_MANUAL consumerAcceptLists: - connectionLimit: 5 projectIdOrNum: $projectid creationTimestamp: '2025-03-10T08:49:08.134-07:00' description: '' enableProxyProtocol: false fingerprint: -F0Kpe3Fi8o= id: '2679595584727463707' kind: compute#serviceAttachment name: cloudrun-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxxxx' low: 'xxxx' 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/cloudrun-attachment targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$projectid/forwardingRules/cloudrun-fr
10. 建立消費者虛擬私有雲網路
虛擬私有雲網路
透過 Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
建立子網路
透過 Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--range=10.0.0.0/24 \
--region=$region \
--enable-private-ip-google-access
gcloud compute networks subnets create cloudrun-egress \
--network=consumer-vpc \
--range=10.0.1.0/24 \
--region=$region \
--enable-private-ip-google-access
建立 Cloud NAT
透過 Cloud Shell
gcloud compute routers create central-cr \
--network=consumer-vpc \
--region=$region
gcloud compute routers nats create central-nat \
--router=central-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
建立消費者網路防火牆政策和防火牆規則
我們會為 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
11. 為 Hello World Cloud Run 服務建立 PSC 端點
此時,我們會建立 PSC 端點,並將其連線至您透過服務連結公開的 Cloud Run 服務。您將使用本節稍早記下的服務連結 URI。請確認 gcloud 指令中的 URI 格式與您的 URI 相符。
建立 PSC 端點
透過 Cloud Shell
gcloud compute addresses create cloudrun-service-ip --region=$region --subnet=consumer-subnet --ip-version=IPV4 gcloud compute forwarding-rules create cloudrun-ep --region=$region --network=consumer-vpc --address=cloudrun-service-ip --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/cloudrun-attachment
取得您剛建立的 PSC 端點 IP 位址。您會在下一個步驟中使用這個 IP 位址測試端點。
透過 Cloud Shell
gcloud compute addresses list --filter="name=cloudrun-service-ip"
預期的輸出內容範例
NAME: cloudrun-service-ip ADDRESS/RANGE: 10.0.0.2 TYPE: INTERNAL PURPOSE: GCE_ENDPOINT NETWORK: REGION: us-central1 SUBNET: consumer-subnet STATUS: IN_USE
12. 建立取用者用戶端 VM,並測試端點連線
建立消費者端 VM
透過 Cloud Shell
gcloud compute instances create consumer-client \
--zone=$zone \
--subnet=consumer-subnet \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install dnsutils -y'
測試連線
透過 Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
將 <cloudrun-service-ip> 替換為實際 IP 位址。
從消費者用戶端 VM
curl <cloudrun-service-ip>
預期輸出
Hello World!
從消費者用戶端 VM
exit
13. 建立 Cloud Run 迴圈服務
接著,我們會建立 Cloud Run 服務,透過 PSC 呼叫先前公開的 Cloud Run HelloWorld 服務,以私密方式回呼至 consumer-vpc。
請按照這裡的「編寫範例應用程式」指示,以 PHP 編寫迴圈應用程式。請將目錄命名為 cloudrun-loop,而非 helloworld-php。在 Cloud Shell 中執行這些指令。在步驟二中,請在 index.php 檔案中使用下列 PHP 程式碼。準備好部署至 Cloud Run 時,請返回本程式碼研究室。請勿按照說明文件中的指示操作。
請使用這個程式碼建立 index.php 檔案。將 <cloudrun-service-ip> 替換為您在上一個步驟中測試的 PSC 端點 IP 位址。
透過 Cloud Shell
<?php
if(!function_exists('curl_init')) {
die('cURL not available!');
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://<cloudrun-service-ip>/');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
if ($output === FALSE) {
echo 'An error has occurred: ' . curl_error($curl) . PHP_EOL;
}
else {
echo $output;
}
?>
我們會在 Cloud Run 部署作業中指定網路和子網路,因為 Cloud Run 流量需要傳回虛擬私有雲,才能存取 PSC 端點。我們將引導 Cloud Run 使用 cloudrun-egress 子網路進行直接虛擬私有雲輸出。我們將所有流量導向至輸出,透過直接虛擬私有雲輸出子網路回到虛擬私有雲。
透過 Cloud Shell
gcloud run deploy cloudrun-loop \
--source . \
--platform=managed \
--ingress=internal \
--allow-unauthenticated \
--vpc-egress=all-traffic \
--network=consumer-vpc \
--subnet=cloudrun-egress \
--region=$region
Cloud Run 服務完成部署後,會提供服務網址,格式為 https://cloudrun-loop-<projectnum>.<region>.run.app。請記下這個網址,我們會在下一個步驟中測試。
14. 測試與 Cloud Run 的連線 - 透過 Cloud Run 網址迴圈
透過 Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
將 <Cloud-Run-ServiceURL> 換成您在上一步記下的服務網址。
從消費者用戶端 VM
curl <Cloud-Run-ServiceURL>
預期輸出
Hello World!
這項結果顯示 CloudRun-Loop 服務成功回呼至 consumer-vpc,呼叫連線至 Hello World Cloud Run 服務的 PSC 端點。不過,此時我們的消費者端 VM 會透過 Cloud NAT 連出至網際網路,呼叫公開 Cloud Run 網址。我們可以對網址執行 dig,顯示該網址會解析為公開 IP 位址。
從消費者用戶端 VM
dig <Cloud-Run-ServiceURL>
輸出內容範例
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1938 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;https://cloudrun-loop-<projectnum>.<region>.run.app. IN A ;; ANSWER SECTION: https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.38.53 https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.36.53 https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.32.53 https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 216.239.34.53 ;; Query time: 4 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Tue Mar 11 19:05:36 UTC 2025 ;; MSG SIZE rcvd: 147
我們可以建立 Google API 的 PSC 端點,將這項解析作業變更為私有,確保流量不會流向公用網際網路。
從消費者用戶端 VM
exit
15. 建立 Google API 端點的 PSC
這個 PSC 端點與我們先前建立的端點不同。Google API 的 PSC 會指向一組 Google API (所有 API 或與 VPC-SC 相容的 API)。IP 位址並非來自區域子網路,而是建立為全域的單一 /32 IP 位址,不會與任何現有虛擬私有雲子網路、對等互連虛擬私有雲子網路或混合式路徑重疊。
透過 Cloud Shell
export pscgoogip=100.100.100.100
echo $pscgoogip
gcloud compute addresses create psc-goog-ep-ip \
--global \
--purpose=PRIVATE_SERVICE_CONNECT \
--addresses=$pscgoogip \
--network=consumer-vpc
透過 Cloud Shell
gcloud compute forwarding-rules create psc4googapi \
--global \
--network=consumer-vpc \
--address=psc-goog-ep-ip \
--target-google-apis-bundle=all-apis
16. 為 run.app 建立 Cloud DNS 私人區域
建立 Google API 的 PSC 端點時,系統會為 googleapis.com 網域下的所有 API 建立 Cloud Run 私人 DNS 區域。由於 Cloud Run 使用 run.app,我們需要建立另一個私人區域,將 run.app 對應至 Google API 端點的 PSC。
透過 Cloud Shell
gcloud dns managed-zones create "cloudrun" \
--dns-name=run.app \
--description="run.app psc resolution" \
--visibility=private \
--networks=consumer-vpc
gcloud dns record-sets transaction start \
--zone="cloudrun"
gcloud dns record-sets transaction add $pscgoogip \
--name=*.run.app \
--ttl=300 \
--type=A \
--zone="cloudrun"
gcloud dns record-sets transaction execute \
--zone="cloudrun"
17. 測試私人 DNS 解析
我們會重新登入消費者端 VM,再次執行 dig,現在應該會看到 Cloud Run 網址會解析為 Google API 的 PSC 端點。
透過 Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
首先,我們要清除 DNS 快取。將 <Cloud-Run-ServiceURL> 替換成您先前記下的服務網址。
從消費者用戶端 VM
sudo resolvectl flush-caches curl <CloudRun-Loop-ServiceURL>
curl 應仍會照常運作。
從消費者用戶端 VM
curl <CloudRun-Loop-ServiceURL>
預期輸出
Hello World!
從消費者用戶端 VM
dig <CloudRun-Loop-ServiceURL>
dig 應會顯示 Cloud Run Loop 服務現在會解析為 Google API 的 PSC 端點。
輸出內容範例
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> https://cloudrun-loop-<projectnum>.<region>.run.app ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30179 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;https://cloudrun-loop-<projectnum>.<region>.run.app. IN A ;; ANSWER SECTION: https://cloudrun-loop-<projectnum>.<region>.run.app. 300 IN A 100.100.100.100 ;; Query time: 8 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Tue Mar 11 20:04:05 UTC 2025 ;; MSG SIZE rcvd: 99
成功!
18. 清除步驟
退出 VM 執行個體
exit
透過 Cloud Shell
gcloud dns record-sets delete *.run.app --zone="cloudrun" --type=A -q gcloud dns managed-zones delete "cloudrun" -q gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q gcloud compute forwarding-rules delete psc4googapi --global -q gcloud compute addresses delete psc-goog-ep-ip --global -q gcloud run services delete cloudrun-loop --region=$region -q gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/cloudrun-loop -q gcloud compute forwarding-rules delete cloudrun-ep --region=$region -q gcloud compute addresses delete cloudrun-service-ip --region=$region -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 routers nats delete central-nat --router=central-cr --region=$region -q gcloud compute routers delete central-cr --region=$region -q gcloud compute networks subnets delete consumer-subnet --region $region -q
執行接下來的兩個指令時,可能會因「資源正在使用中」而失敗。Cloud Run 文件指出,刪除 Cloud Run 服務後,Cloud Run 有時需要 1 到 2 小時才能釋出子網路資源。如果刪除失敗,請略過這兩個指令並繼續下一個章節,然後過一段時間再返回這個章節刪除。
透過 Cloud Shell
gcloud compute networks subnets delete cloudrun-egress --region $region -q gcloud compute networks delete consumer-vpc -q
透過 Cloud Shell
gcloud compute service-attachments delete cloudrun-attachment --region=$region -q gcloud compute instances delete producer-client --zone=$zone --project=$projectid -q gcloud compute forwarding-rules delete cloudrun-fr --region=$region -q gcloud compute target-http-proxies delete producer-http-proxy --region=$region -q gcloud compute url-maps delete producer-urlmap --region=$region -q gcloud compute backend-services delete cloudrun-producer-bes --region=$region -q gcloud compute network-endpoint-groups delete cloudrun-producer-neg --region=$region -q gcloud compute addresses delete cloudrun-ip --region=$region -q gcloud run services delete helloworld --region=$region -q gcloud artifacts docker images delete $region-docker.pkg.dev/$projectid/cloud-run-source-deploy/helloworld -q gcloud artifacts repositories delete cloud-run-source-deploy --location=$region -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 networks subnets delete lb-proxy-subnet --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-subnet --region $region -q gcloud compute networks delete producer-vpc -q
19. 恭喜!
恭喜您完成本程式碼研究室。
涵蓋內容
- 在 Cloud Run 上部署基本應用程式
- Cloud Run 輸入和輸出控制項
- 透過內部應用程式負載平衡器和無伺服器 NEG 部署 Cloud Run
- 透過服務連結設定 PSC 生產端服務
- 部署 PSC 端點