1. 簡介
Private Service Connect (PSC) 是 Google Cloud 網路的功能,可讓消費者從虛擬私有雲網路內,以私密方式存取代管服務。同樣地,這項功能也允許代管服務供應商在自己的獨立虛擬私有雲網路中代管這些服務,並為消費者提供私人連線。
Cloud Run 是代管運算平台,能讓您直接在 Google 可擴充的基礎架構上執行容器。
Cloud Run 可透過兩種方式做為 PSC 服務使用。
- 透過 Google API 的 PSC,透過 Cloud Run 提供的 run.app 網址呼叫 Cloud Run
- 透過自訂 PSC 供應者服務,在內部應用程式負載平衡器 (含無伺服器 NEG) 中,透過服務連結公開 Cloud Run。
本程式碼研究室將探討如何針對這兩種情況設定 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 中部署 PSC 端點,指向我們在 producer-vpc 中設定的 Cloud Run 服務連結。接著,您將驗證是否能透過 PSC 從消費者 VPC 中的消費者端存取服務。接下來,您將建立另一個會呼叫 PSC 端點的 Cloud Run 服務。最後,您將為 Google API 部署 PSC 端點。您將透過消費者端用戶端存取 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 圖示:
佈建並連線至環境的作業需要一些時間才能完成。完成後,畫面應如下所示:
這個虛擬機器會載入您需要的所有開發工具。提供永久的 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 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 子網路大小的說明文件。
建立製作者網路防火牆政策和防火牆規則
透過 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
標記時,系統會在未提供 run.app 網址的情況下部署 Cloud Run 服務。我們不會使用這項服務的網址。截至本程式碼研究室發布時,這項功能仍處於預先發布版階段。
繼續操作前,請先切換回 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 服務,以便將私人回呼傳送至 consumer-vpc,呼叫我們先前透過 PSC 公開的 Cloud Run HelloWorld 服務。
請按照這裡的「編寫範例應用程式」指示,在 PHP 中編寫迴圈應用程式。請將目錄命名為 cloudrun-loop,而非 helloworld-php。請在 Cloud Shell 中執行下列指令。在步驟 2 中,請在 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 流量需要輸出至 VPC,才能存取 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 URL 測試連線至 CloudRun-Loop
透過 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 URL。我們可以對網址執行 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 位址的形式建立,且為全球性 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
執行下兩個指令時,可能會出現「resource in use」錯誤。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 端點