Private Service Connect 可变性 Codelab

1. 简介

Private Service Connect 是 Google Cloud 网络的一项功能,允许使用方从其 VPC 网络内部以私密方式访问托管式服务。同样,它允许托管式服务提供方在其各自的 VPC 网络中托管这些服务,并为其使用方提供专用连接。

在此之前,一旦通过服务连接公开 PSC 服务,就无法更改服务负载平衡器,除非移除服务连接并中断使用方 PSC 端点连接。随着 PSC 可变性的引入,生产者可以在保留 PSC 端点连接的同时更新其负载平衡器。在更改负载平衡器的同时保持与服务附件的 PSC 端点连接,这样做的优势在于无需在使用方一侧执行任何操作。

目前,PSC 可变性将支持

  • 迁移到相同类型的负载平衡器转发规则(例如,网络直通到网络直通)
  • 迁移到其他类型的负载平衡器转发规则(例如,网络直通式负载平衡器到应用负载平衡器)

PSC 可变性不支持就地修改转发规则。

在此实验中,您将创建一个通过内部直通式网络负载平衡器公开的提供方 Web 服务,确保该服务通过 PSC 端点建立连接,然后将服务连接关联更新为指向内部应用负载平衡器的新转发规则。

学习内容

  • 创建简单的 Apache Web 服务,并将其公开为 PSC 提供方服务。
  • 创建 PSC 端点。
  • 为使用方服务调用创建 Cloud DNS 专用区域。
  • 使用 PSC 可变性更新与服务连接关联的转发规则。

所需条件

  • 具有所有者权限的 Google Cloud 项目
  • 对 Google Cloud 网络有基本的了解

2. 测试环境

传统上,提供方和使用方在不同的项目中工作。为简单起见,我们将在同一项目中执行所有操作,但每个步骤都会标记为 Producer 项目或 Consumer 项目,以便用户选择在不同的项目中工作。

在本实验中,我们将首先创建具有三个子网的 producer-vpc;一个用于托管提供方服务和测试虚拟机,一个用于负载平衡器转发规则,还有一个用于 PSC NAT 子网。我们需要 Cloud Router 和 Cloud NAT 才能实现互联网可达性,以便下载 Linux 软件包。我们将通过非代管式实例组公开配置的 Apache 服务,通过内部区域级网络直通式负载平衡器公开该服务,并将转发规则与服务连接相关联。

在消费方一侧,我们将创建一个包含单个子网的 consumer-vpc,以托管 PSC 端点和测试客户端虚拟机。我们将配置 Cloud DNS 专用可用区,以便通过主机名访问服务。

为了展示 PSC 可变性功能,我们将在提供方一侧添加两个额外的子网;一个用于托管新的服务虚拟机,另一个用于负载平衡器代理专用子网。我们将创建一个托管 Apache Web 服务器的新虚拟机,该虚拟机仍通过非托管式实例组进行配置,并通过新的内部区域级应用负载平衡器公开。我们将更新服务连接以指向新的转发规则,并测试使用方侧的连接是否保持不变。

683e2b440a0cc07f.png

3. 设置和要求

自定进度的环境设置

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

启动 Cloud Shell

虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。

Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

激活 Cloud Shell

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

Google Cloud Shell 终端的屏幕截图,显示环境已连接

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。

4. 准备工作

启用 API

在 Cloud Shell 中,确保项目 ID 已设置

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export project=[YOUR-PROJECT-NAME]
export region=us-central1
export zone=$region-a
echo $project
echo $region
echo $zone

启用所有必要的服务

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

5. 构建提供方网络 [提供方项目]

创建 VPC 网络

从 Cloud Shell

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

创建子网

我们先在 producer-vpc 中部署 3 个子网。一个用于部署提供方服务,一个用于负载平衡器转发规则,还有一个将与 PSC NAT 子网的 PSC 服务连接相关联。

从 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

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

创建 Cloud NAT

需要 Cloud NAT 才能为我们的 Producer 服务安装合适的软件包。

从 Cloud Shell

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

从 Cloud Shell

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 连接到您的虚拟机实例,请创建一个防火墙规则,该规则应:

  • 适用于您希望使用 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

我们先从三条防火墙规则开始。其中一个允许负载平衡器健康检查访问虚拟机 (2000),一个允许从 PSC NAT 范围访问虚拟机 (3000),还有一个允许服务子网中的虚拟机之间进行连接以用于测试 (4000)。我们将为端口 80 制定所有规则,因为我们将使用此端口来提供服务。

从 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 PSC NAT subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.0.0/28 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

 gcloud compute network-firewall-policies rules create 4000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access between producer service VMs and testing client for testing purposes" \
    --direction INGRESS \
    --src-ip-ranges 10.0.0.0/28 \
    --layer4-configs tcp:80 \
    --global-firewall-policy

6. 创建提供方服务 [提供方项目]

我们将使用非代管实例组创建一个简单的 Apache Web 服务,该服务会显示“I am a Producer Service.”。

创建实例

从 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 producer-uig \
  --zone=$zone

将 producer-service-vm 添加到我们刚刚创建的非托管式实例组。

从 Cloud Shell

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

创建负载平衡器组件

对于提供方服务的版本 1,我们将使用端口 80 上的直通式网络负载平衡器公开该服务。

为端口 80 部署健康检查。

从 Cloud Shell

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

部署后端服务并将后端添加到后端服务。

从 Cloud Shell

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=producer-uig \
  --instance-group-zone=$zone

创建将用于负载平衡器转发规则的静态 IP 地址。

从 Cloud Shell

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

使用我们之前创建的后端服务和 IP 地址,创建公开端口 80 的负载平衡器转发规则。

从 Cloud Shell

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. 测试提供方服务 [提供方项目]

在 producer-service-subnet 中创建测试虚拟机,登录该虚拟机并测试对 Apache 服务的调用。

从 Cloud Shell

 gcloud compute instances create producer-test-vm \
    --zone=$zone \
    --subnet=producer-service-subnet \
    --no-address

从 Cloud Shell

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.2/index.html"

预期输出

I am a Producer Service.

8. 通过服务连接公开提供方服务 [提供方项目]

创建服务连接。将其与我们使用 psc-nat-subnet 创建的转发规则相关联。

从 Cloud Shell

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

您应记下服务连接 URI (selfLink),因为您将在后续步骤中配置 PSC 端点时需要用到它。您可以在 Cloud Shell 中执行以下命令来获取该值。

从 Cloud Shell

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

示例输出

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2026-02-10T07:50:04.250-08:00'
description: ''
enableProxyProtocol: false
fingerprint: xxx
id: 'xxx'
kind: compute#serviceAttachment
name: producer-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet
pscServiceAttachmentId:
  high: 'xxx'
  low: 'xxx'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/producer-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

复制以 projects 开头的 URI

示例:projects/$project/regions/$region/serviceAttachments/producer-attachment

9. 构建使用方网络 [使用方项目]

创建 VPC 网络

从 Cloud Shell

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

创建子网

系统将部署一个子网,我们将在其中部署 PSC 端点和测试客户端虚拟机。

从 Cloud Shell

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

创建网络防火墙政策和规则

从 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

我们还将配置 consumer-vpc 以使用 IAP 进行 SSH。

从 Cloud Shell

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

10. 创建 Private Service Connect 端点 [使用方项目]

预留将用于 PSC 端点的静态 IP 地址。

从 Cloud Shell

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

使用预留的静态 IP 地址和我们之前记下的服务连接 URI 创建 PSC 端点。

从 Cloud Shell

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

11. 为 PSC 端点配置专用 DNS 区域 [使用方项目]

我们将使用 Cloud DNS 配置一个 DNS 名称为 myservice.com 的专用 DNS 区域,以用于我们的 PSC 端点。

从 Cloud Shell

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

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

myservice.com 创建 A 记录,并将其指向 PSC 端点 IP 地址。

从 Cloud Shell

gcloud dns record-sets transaction add 10.0.0.2 \
   --name=myservice.com \
   --ttl=300 \
   --type=A \
   --zone="consumer-service"

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

12. 测试 PSC 端点 [使用方项目]

创建客户端虚拟机

从 Cloud Shell

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

测试 PSC 端点连接

从 Cloud Shell

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

预期输出

I am a Producer Service.

在此 Codelab 的下一部分中,我们将创建新的生产者服务并迁移到该服务,展示 PSC 可变性功能,该功能可实现无缝更新,而无需更新消费者端配置。

13. 创建更新后的提供方服务 [提供方项目]

为了更新提供方服务,我们将部署一个运行类似 Apache Web 服务器的新虚拟机,并显示消息“I am a NEW Producer service.”。我们将该虚拟机添加到新的非代管式实例组,并将该非代管式实例组用作新负载平衡器的后端。我们将把负载平衡器更新为区域级内部应用负载平衡器,而不是使用网络直通式负载平衡器。

更新网络

创建一个新子网,用于应用负载平衡器的代理专用子网。

从 Cloud Shell

gcloud compute networks subnets create lb-proxy-subnet \
    --network=producer-vpc \
    --range=10.200.0.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

创建将用于托管新服务的子网。

从 Cloud Shell

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

创建一条新的防火墙规则,以允许从代理专用子网连接到新的提供方服务。

从 Cloud Shell

 gcloud compute network-firewall-policies rules create 3001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow access from proxy only subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.200.0.0/24 \
    --layer4-configs tcp:80  \
    --global-firewall-policy

创建实例

从 Cloud Shell

gcloud compute instances create new-producer-service-vm \
    --network producer-vpc \
    --subnet producer-service-new-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 NEW Producer Service." | \
    tee /var/www/html/index.html
    systemctl restart apache2'

创建非代管式实例组

从 Cloud Shell

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

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

gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
    --named-ports=http:80 \
    --zone=$zone

创建新的负载平衡器组件

创建后端服务。请注意,我们使用的是负载均衡方案 INTERNAL_MANAGED,因为我们要更新为内部应用负载平衡器。

从 Cloud Shell

gcloud compute backend-services create producer-new-bes \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=http \
  --region=$region \
  --health-checks=producer-hc \
  --health-checks-region=$region

将非托管实例组作为后端添加到后端服务。

从 Cloud Shell

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

创建网址映射和目标 HTTP 代理。

从 Cloud Shell

gcloud compute url-maps create producer-url-map \
  --default-service=producer-new-bes \
  --region=$region

gcloud compute target-http-proxies create http-proxy \
  --url-map=producer-url-map \
  --region=$region

创建将用于转发规则的静态 IP 地址。该 IP 地址将来自我们用于原始转发规则的同一子网。

从 Cloud Shell

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

创建转发规则。

从 Cloud Shell

gcloud compute forwarding-rules create new-producer-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=producer-fr-subnet \
  --address=producer-fr-new-ip \
  --ports=80 \
  --region=$region \
  --target-http-proxy=http-proxy \
  --target-http-proxy-region=$region

14. 测试更新后的提供方服务 [提供方项目]

我们将使用之前创建的同一测试虚拟机来测试最初部署的服务。

从 Cloud Shell

gcloud compute ssh producer-test-vm \
    --zone=$zone \
    --command="curl -s 192.168.0.3/index.html"

请注意,我们正在调用更新后的 IP 地址!192.168.0.3 是区域级内部应用负载平衡器的 IP 地址。

预期输出

I am a NEW Producer Service.

15. 更新服务连接 [提供方项目]

为了更好地直观了解对服务附件转发规则的更新,我们可以在更改前后对服务附件运行 describe 命令。

从 Cloud Shell

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

预期输出

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr

更新服务连接。

从 Cloud Shell

gcloud compute service-attachments update producer-attachment \
  --region=$region \
  --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr

现在,再次运行 describe,查看新的转发规则。

从 Cloud Shell

gcloud compute service-attachments describe producer-attachment \
    --region=$region \
    --format="value(targetService)"

预期输出

https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr

16. 重新测试使用方 PSC 连接 [使用方项目]

登录到同一使用方客户端。

从 Cloud Shell

gcloud compute ssh consumer-client-vm \
    --zone=$zone \
    --command="curl -s myservice.com/index.html"

预期输出

 I am a NEW Producer Service.

恭喜!您已成功更新 PSC 生产者服务负载平衡器,且无需在消费者端进行任何配置更改!

17. 清理步骤 [使用方项目]

从单个 Cloud Shell 终端删除实验组件

gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q

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

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-vm --zone=$zone --project $project -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-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

18. 清理步骤 [提供方项目]

从单个 Cloud Shell 终端删除实验组件

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

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

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

gcloud compute addresses delete producer-fr-new-ip --region $region -q

gcloud compute target-http-proxies delete http-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

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

gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q

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

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

gcloud compute networks subnets delete lb-proxy-subnet --region $region -q

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

gcloud compute addresses delete producer-fr-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 producer-uig --zone $zone -q

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

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

gcloud compute network-firewall-policies rules delete 3001 --firewall-policy producer-vpc-policy --global-firewall-policy -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 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-fr-subnet --region=$region -q

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

gcloud compute networks delete producer-vpc -q

19. 恭喜!

恭喜您完成此 Codelab。

所学内容

  • 创建简单的 Apache Web 服务,并将其公开为 PSC 提供方服务。
  • 创建 PSC 端点。
  • 为使用方服务调用创建 Cloud DNS 专用区域。
  • 使用 PSC 可变性更新与服务连接关联的转发规则。