1. 简介
Private Service Connect (PSC) 是 Google Cloud 网络的一项功能,允许使用方从其 VPC 网络内部以私密方式访问托管式服务。同样,它允许托管式服务提供方在其各自的 VPC 网络中托管这些服务,并为其使用方提供专用连接。
Cloud Run 是一个代管式计算平台,可让您直接在 Google 可伸缩的基础架构之上运行容器。
Cloud Run 可以通过两种不同的方式作为 PSC 服务使用。
- 通过 PSC for Google APIs 调用 Cloud Run(通过 Cloud Run 提供的 run.app 网址)
- 通过自定义 PSC 提供方服务,其中 Cloud Run 通过服务附件经由具有无服务器 NEG 的内部应用负载平衡器公开。
此 Codelab 将探讨如何针对这两种场景设置使用 PSC 的 Cloud Run
学习内容
- 在 Cloud Run 上部署基本应用
- Cloud Run 入站流量和出站流量控制
- 通过使用无服务器 NEG 的内部应用负载平衡器部署 Cloud Run
- 通过服务连接设置 PSC 提供方服务
- 部署 PSC 端点
所需条件
- 具有“所有者”权限的 Google Cloud 项目
2. Codelab 拓扑

在此 Codelab 中,您将部署两个可通过 PSC 访问的 Cloud Run 服务 - 第一个作为具有 PSC 的自定义已发布服务,第二个作为 Google API 的 PSC。您将创建两个 VPC,即 consumer-vpc 和 producer-vpc。您将首先部署 Hello World Cloud Run 服务,并使其可通过 producer-vpc 中的区域级内部应用负载平衡器和无服务器 NEG 进行访问。在设置 Cloud Run 服务以通过服务连接作为 PSC 提供方服务进行访问之前,您将通过提供方-客户端验证该服务是否通过负载平衡器正常运行。
接下来,在 consumer-vpc 中,您将部署一个指向我们在 producer-vpc 中设置的 Cloud Run 服务连接的 PSC 端点。然后,您将验证是否可以从使用方 VPC 中的使用方客户端通过 PSC 访问该服务。接下来,您将创建另一个调用 PSC 端点的 Cloud Run 服务。最后,您将为 Google API 部署 PSC 端点。从使用方客户端,您将通过 Cloud Run 提供的网址访问 Cloud Run,该网址将使用 Google API 的 PSC 端点。
3. 设置和要求
自定进度的环境设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。



- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用
PROJECT_ID标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。 - 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用计划的条件。
启动 Cloud Shell
虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。
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. 创建提供方 VPC 网络
VPC 网络
从 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 连接到您的虚拟机实例,请创建一个防火墙规则,该规则应:
- 适用于您希望使用 IAP 可访问的所有虚拟机实例。
- 允许来自 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 步后,返回此 Codelab,然后按照以下说明从源代码部署到 Cloud Run。
在部署 Cloud Run 服务之前,请运行以下命令,确保默认的计算服务账号具有适当的权限。
从 Cloud Shell
gcloud projects add-iam-policy-binding $projectid --member=serviceAccount:$projectnum-compute@developer.gserviceaccount.com --role=roles/run.builder
注意:此 Codelab 假定您的组织未启用“网域受限的共享”组织政策。如果您已启用此政策,则必须执行额外的步骤才能部署具有身份验证功能的 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 网址。我们将不会使用此服务的网址。在此 Codelab 发布时,此功能仍处于预览版阶段。
在继续操作之前,请切换回 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
创建测试虚拟机
从 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!
退出虚拟机。
在 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. 创建使用方 VPC 网络
VPC 网络
从 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. 创建使用方客户端虚拟机并测试与端点的连接
创建消费类客户端虚拟机
从 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 地址。
从消费类客户端虚拟机
curl <cloudrun-service-ip>
预期输出
Hello World!
从消费类客户端虚拟机
exit
13. 创建 Cloud Run Loop 服务
接下来,我们将创建一个 Cloud Run 服务,该服务将私密回调用到使用方 VPC,以调用我们通过 PSC 公开的之前的 Cloud Run HelloWorld 服务。
按照此处的“编写示例应用”说明,使用 PHP 编写一个循环应用。将目录命名为 cloudrun-loop,而不是 helloworld-php。在 Cloud Shell 中运行以下命令。在第 2 步中,请在 index.php 文件中使用以下 PHP 代码。准备好部署到 Cloud Run 时,请返回到此 Codelab。请勿按照文档中的说明执行此步骤。
将此代码用于您的 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 子网进行直接 VPC 出站流量。我们将所有流量都定向为通过直接 VPC 出站流量子网出站,然后返回到 VPC。
从 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 网址测试与 CloudRun-Loop 的连接
从 Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
将 <Cloud-Run-Service网址> 替换为您在上一步中记下的服务网址。
从消费类客户端虚拟机
curl <Cloud-Run-ServiceURL>
预期输出
Hello World!
此结果表明,我们的 CloudRun-Loop 服务正在成功回调到 consumer-vpc,以调用连接到 Hello World Cloud Run 服务的 PSC 端点。不过,此时,我们的消费者客户端虚拟机正在通过 Cloud NAT 出站到互联网,以调用我们的公共 Cloud Run 网址。我们可以对该网址运行 dig 命令,以表明它将解析为公共 IP 地址。
从消费类客户端虚拟机
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,将此解析更改为专用,以使流量不通过公共互联网。
从消费类客户端虚拟机
exit
15. 为 Google API 端点创建 PSC
此 PSC 端点与我们之前创建的端点不同。适用于 Google API 的 PSC 指向一组 Google API(所有 API 或与 VPC-SC 兼容的 API)。IP 地址不是源自区域性子网,而是创建为无法与任何现有 VPC 子网、对等互连的 VPC 子网或混合路由重叠的单个 /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 解析
我们将重新登录到我们的消费客户端虚拟机,再次运行 dig,现在应该会看到我们的 Cloud Run 网址解析为 Google API 的 PSC 端点。
从 Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
首先,我们将清除 DNS 缓存。将 <Cloud-Run-Service网址> 替换为您之前记下的服务网址。
从消费类客户端虚拟机
sudo resolvectl flush-caches curl <CloudRun-Loop-ServiceURL>
curl 应该仍然可以正常运行。
从消费类客户端虚拟机
curl <CloudRun-Loop-ServiceURL>
预期输出
Hello World!
从消费类客户端虚拟机
dig <CloudRun-Loop-ServiceURL>
dig 应显示我们的 Cloud Run Loop 服务现在解析为我们的 PSC for Google APIs 端点。
输出示例
; <<>> 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. 清理步骤
退出虚拟机实例
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. 恭喜!
恭喜您完成此 Codelab。
所学内容
- 在 Cloud Run 上部署基本应用
- Cloud Run 入站流量和出站流量控制
- 通过使用无服务器 NEG 的内部应用负载平衡器部署 Cloud Run
- 通过服务连接设置 PSC 提供方服务
- 部署 PSC 端点