適用於 Google API 的 Private Service Connect

1. 簡介

透過 Private Service Connect,您可以在虛擬私有雲網路中使用全域內部 IP 位址建立私人端點。您可以使用有意義的名稱來為這些內部 IP 位址指派 DNS 名稱,例如 storage-pscendpoint.p.googleapis.com 和 bigtable-adsteam.p.googleapis.com。您可以將要求傳送至 Private Service Connect 端點,這個端點是私人且內部於虛擬私有雲網路內部,而非 storage.googleapis.com 等公開服務端點傳送 API 要求。

這些名稱和 IP 位址屬於您的虛擬私有雲網路內部,以及透過 Cloud VPN 通道或 Cloud Interconnect 連結 (VLAN) 連線的任何地端部署網路。

您可以控管哪些流量要傳送至哪個端點,並能展示該流量可保留在 Google Cloud 中。

課程內容

  • Private Service Connect 用途
  • 網路需求
  • 支援的 API
  • 建立 Private Service Connect 端點
  • 建立 Cloud Storage 值區
  • 建立及更新 Cloud DNS 私人區域
  • 建立 NAT GW 來存取公開 googleapis
  • 建立及更新 BOTO 設定檔
  • 在已解析 PSC 服務端點的 VM1 上執行 gsutil 清單
  • 在針對 public googleapis.com 解析的 VM2 上執行 gsutil 清單
  • 透過 Tcpdump 驗證 DNS 解析

軟硬體需求

  • 瞭解 DNS、nano 或 vi 編輯器

2. Private Service Connect 用途

您可以在同一個虛擬私有雲網路中建立多個 Private Service Connect 端點。特定端點沒有頻寬限制。由於 Private Service Connect 端點使用全域內部 IP 位址,因此虛擬私有雲網路中的任何資源均可使用這些位址。

設定多個端點時,您可以使用 Cloud Router 和防火牆規則來指定不同的網路路徑。

  • 您可以建立防火牆規則,防止部分 VM 透過 Private Service Connect 端點存取 Google API,同時允許其他 VM 存取 Google API。
  • 您可以為 VM 執行個體設定防火牆規則,禁止所有流量傳送至網際網路。傳送至 Private Service Connect 端點的流量仍會傳送至 Google。
  • 如果您的地端部署主機使用 Cloud VPN 通道或 Cloud Interconnect 連結 (VLAN) 連線至虛擬私有雲,在透過公開網際網路傳送其他要求時,可以透過通道或 VLAN 傳送某些要求。對於 Google 圖書這類不支援私人 Google 存取權的服務,這項設定可讓您略過通道或 VLAN。如要建立這項設定,請先建立 Private Service Connect 端點,並使用 Cloud Router 自訂路徑通告通告 Private Service Connect 端點 IP 位址,然後啟用 Cloud DNS 傳入轉送政策。應用程式可以使用 Private Service Connect 端點的名稱,透過 Cloud VPN 通道或 Cloud Interconnect 連結 (VLAN) 傳送某些要求。使用預設的 DNS 名稱,就能透過網際網路傳送其他要求。
  • 如果您使用多個 Cloud Interconnect 連結 (VLAN) 將地端部署網路連線至虛擬私有雲網路,則可以透過一個 VLAN 和其他 VLAN 從地端部署系統傳送部分流量,如圖 2 所示。這樣一來,您就能使用自己的廣域網路 (而非 Google 的),並配合地理需求控管資料遷移。如要建立這項設定,請建立兩個 Private Service Connect 端點。在用於管理第一個 VLAN 的 Cloud Router BGP 工作階段上,建立第一個端點的自訂路徑通告,並在用於管理第二個 VLAN 的 Cloud Router 的 BGP 工作階段,為第二個端點建立不同的自訂路徑通告。設為使用 Private Service Connect 端點名稱的地端部署主機,會透過對應的 Cloud Interconnect 連結 (VLAN) 傳送流量。
  • 您也可以在啟用/主動拓撲中使用多個 Cloud Interconnect 連結 (VLAN)。如果您在管理 VLAN 的 Cloud Router 路由器上使用自訂路徑通告,來通告相同的 Private Service Connect 端點 IP 位址,從內部部署系統傳送至端點的封包會使用 ECMP 轉送。

5e142c2fbf6f010e.png

圖 1. 設定 Private Service Connect、Cloud Router 和地端部署主機,即可控管要使用哪些 Cloud Interconnect 連結 (VLAN) 將流量傳送至 Google API。

3. 網路需求

如要使用 Private Service Connect,沒有外部 IP 位址的虛擬機器 (VM) 執行個體在已啟用私人 Google 存取權的子網路中必須具有主要介面。

無論是否為子網路啟用私人 Google 存取權,具備外部 IP 位址的 VM 皆可透過 Private Service Connect 端點存取 Google API 和服務。Private Service Connect 端點之間的連線會保留在 Google 的網路中。

您無法從對等互連的虛擬私有雲網路存取 Private Service Connect 端點。

支援的 API

建立 Private Service Connect 端點時,請選擇您要存取的 API 組合:all-apis 或 vpc-sc。

API 套裝組合可讓您使用與私人 Google 存取權 VIP 相同的 API。

  • all-apis 套裝組合提供與 private.googleapis.com 相同的 API 存取權。
  • vpc-sc 套件可讓您存取與 restricted.googleapis.com 相同的 API。

4. 程式碼研究室拓撲與用途

2ac275eb86f26338.png

圖 1 - 程式碼研究室拓撲

程式碼研究室用途:

客戶需要混合使用私人 (互連網路) 和公開 googleapis 存取,才能移轉 Cloud Storage 資料移轉。為滿足客戶需求,我們會部署 Private Service Connect,其中包含專屬 /32 位址、BOTO 設定和 DNS 記錄更新。虛擬機器 1 會使用 PSC 存取 Cloud Storage 值區;相較之下,VM2 會透過 NAT GW 使用公開 googleapis.com IP 範圍。

研究室的所有層面都部署在 Google Cloud Platform 中,但同一個用途則適用於需要區隔流量的混合式雲端部署。

5. 設定和需求

自修環境設定

  1. 登入 Cloud 控制台建立新專案,或是重複使用現有專案。(如果您還沒有 Gmail 或 G Suite 帳戶,請先建立帳戶)。

MrEseyJH4tg9PuS3GzJa72onCqawwQiRm04c0YjnpR6WD3IciP1ICDh5e5RoxrG3tc5y44_Ynn9GB0Igjo3sTE0BlsAnCxJdhXn7egP3tX4rkzkub7ZCjOKc70kJvl07REnmPb3TGg

HgKQ1sLCGDGbz0e3RCc-FNa3fQliCtq67H-Oj9jzzYn_upkmNN1lOMQrQm8Jdvo6EEYAvSwDEjpH37bIG9ouBJcmS_xFYV1IHJoyAhsasS1SfYtZkO-RBwWPXRrr3Zt4r31ETcjJeQ

KHAY2ncSMFGZ2vGxcMEcNoIy_cuWGCaWAsrH0KsOVwkV5e93Ypfcq3sQ_HPIrV-NSocegQN2PnRUku_CVi1MM89O6qHIU6E32ZypJPxojkbRTJXET5JvtskIXgzFMk18-4NnNjzCJA

提醒您,專案 ID 是所有 Google Cloud 專案的專屬名稱 (已經有人使用上述名稱,很抱歉對您不符!)。稍後在本程式碼研究室中會稱為 PROJECT_ID

  1. 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Google Cloud 資源。

執行這個程式碼研究室並不會產生任何費用,如果有的話。請務必依照「清除所用資源」一節指示本節將說明如何關閉資源,這樣您就不會產生本教學課程結束後產生的費用。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。

啟動 Cloud Shell

雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。

在 GCP 控制台的右上方,按一下「Cloud Shell」圖示:

yEqEFRN4OGfeGJEfJplSt5sGY95BluU78i3Lk0Opo9caOYfrWUPBi_RglIfo9x078tH5Z_Obgq1wOhrEPV8k5OvMgI5e3aam1a7teXuimwTy-evcupc34_UEMmfAFkV-hnXwl559rg

佈建並連線至環境的作業只需幾分鐘的時間。完成後,您應該會看到類似下方的內容:

BxRCLVCDNXX4OxwHppzaY9ghvuFTsgsozreyEHvRK9GPfsh3sW-kdwev6_gZdkX5FWPvb7M_Vp4FoyjFWwZxBMK6CLXiPwJgFbhz8Tgec-tyQR7GEdNjGMBca052yM8ga0UqzdHAmw

這部虛擬機器都裝載了您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。這個研究室中的所有工作都可以透過瀏覽器完成。

6. 事前準備

啟用 API

在 Cloud Shell 中,確認您已設定專案 ID

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

啟用所有必要服務

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

7. 建立虛擬私有雲網路

虛擬私有雲網路

透過 Cloud Shell

gcloud compute networks create psc-lab --subnet-mode custom

輸出

Created
NAME     SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
psc-lab  CUSTOM       REGIONAL

建立子網路

透過 Cloud Shell

gcloud compute networks subnets create psclab-subnet \
        --network psc-lab --range 10.0.0.0/24 --region us-central1 

–enable-private-ip-google-access

輸出

Created
NAME             REGION       NETWORK  RANGE
psclab-subnet  us-central1  psc-lab  10.0.0.0/24

建立防火牆規則

透過 Cloud Shell

gcloud compute firewall-rules create psclab-ssh \
        --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

輸出

NAME        NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
psclab-ssh  psc-lab  INGRESS    1000      tcp:22        False

建立 Cloud NAT 執行個體

建立 Cloud Router

透過 Cloud Shell

gcloud compute routers create crnat \
    --network psc-lab \
    --asn 65000 \
    --region us-central1

建立 Cloud NAT

透過 Cloud Shell

gcloud compute routers nats create cloudnat \
    --router=crnat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging \
    --region us-central1

8. 建立 Private Service Connect 端點

設定 Private Service Connect 端點 IP <pscendpointip> 時,您必須提供虛擬私有雲中未定義的專屬 IP 位址。

透過 Cloud Shell

gcloud beta compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=<pscendpointip> \
    --network=psc-lab

儲存「pscendpointip」持續學習

(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")
echo $pscendpointip

建立轉送規則,將端點連線至 Google API 和服務。

透過 Cloud Shell

gcloud beta compute forwarding-rules create pscendpoint \
    --global \
    --network=psc-lab \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

列出已設定的 Private Service Connect 端點

透過 Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

說明已設定的 Private Service Connect 端點

透過 Cloud Shell

gcloud compute forwarding-rules describe \
    pscendpoint --global

9. 建立值區

建立 Cloud Storage 值區,並將 BUCKET_NAME 替換為您偏好的全域不重複名稱。

透過 Cloud Shell

gsutil mb  -l us-central1 -b on gs://BUCKET_NAME

儲存「BUCKET_NAME」持續學習

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. DNS 設定

假設您有一個應用程式使用 Google Cloud Storage,如果沒有 Private Service Connect,您的應用程式可能會連線至「storage.googleapis.com」,根據預設會解析為某個公開位址。您可以透過 Private Service Connect 建立及使用「storage-psclab.p.googleapis.com」等名稱。名稱和位址僅供您的虛擬私有雲網路和任何連結的地端部署網路使用。

DNS 的 Private Service Connect 遵循命名慣例:SERVICE-ENDPOINT.p.googleapis.com。在上述範例中,「storage」是 SERVICE &「psclab」就是端點請務必在每個參數中加上「-」介於 SERVICE 和 ENDPOINT 之間。

如要使用 Private Service Connect 端點存取 Cloud Storage,請建立 DNS (A) 記錄 storage-psclab.p.googleapis.com,並指向 Private Service Connect 端點 IP 位址。

建立 DNS 私人區域

gcloud dns --project=$projectname managed-zones create psc-dns-zone --description="" --dns-name="p.googleapis.com." --visibility="private" --networks="psc-lab"

建立 DNS A 記錄

gcloud dns --project=$projectname record-sets transaction start --zone=psc-dns-zone

gcloud dns --project=$projectname record-sets transaction add $pscendpointip --name=storage-pscendpoint.p.googleapis.com. --ttl=300 --type=A --zone=psc-dns-zone

gcloud dns --project=$projectname record-sets transaction execute --zone=psc-dns-zone

11. 建立虛擬機器

建立用來驗證 Private Service Connect 的虛擬機器 (psc-instance-1)

透過 Cloud Shell

  gcloud compute instances create psc-instance-1 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

登入 VM 執行個體 (psc-instance-1)

透過 Cloud Shell 使用 SSH 登入 VM

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

按一下「+」(下方螢幕截圖) 即可建立其他 Cloud Shell 終端機三次

69ea94e1527912bb.png

建立用來驗證公開 Googleapis 的虛擬機器 (psc-instance-2)

來自分頁 2

  gcloud compute instances create psc-instance-2 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

透過 Cloud Shell 從分頁 2 透過 SSH 連至 VM

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

透過 Cloud Shell,從分頁 3 透過 SSH 連至 psc-instance-1

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

透過 Cloud Shell,從分頁 4 殼層透過 SSH 進入 psc-instance-2

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

12. 驗證現有的 Gsutil 行為

從分頁 4 (psc-instance-2) 啟動 tcpdump 並監控 DNS 流量

sudo tcpdump -vv -i eth0 port 53

從分頁 2 檢查儲存空間值區 DNS 查詢 (psc-instance-2)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
gsutil -D ls gs://$BUCKET_NAME

檢查 gsutil 偵錯,HOST storage.googleapis.com 進行 DNS 解析

<snip>
send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

在分頁 4 (psc-instance-2) 中,驗證在存取儲存空間值區時使用 GoogleAPI.com 公開 DNS A 記錄。

metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128

13. 修改 gsutil 行為

在先前的步驟中,您建立了對應至 PSC 端點 IP 位址的私人 DNS 區域和 A 記錄。在下列步驟中,我們現在會更新 psc-instance-1 上的 VM BOTO 檔案,藉此控制 gsutil 的行為。

前往分頁 1 (psc-instance-1),從 VM 執行個體終端機查看預設的 BOTO 設定

[psc-instance ~]$ more  /etc/boto.cfg

輸出內容 (您的專案 ID 不同)

[GSUtil]
default_project_id  = 234086459238
default_api_version = 2

[GoogleCompute]
service_account = default

使用 nano 或 VI 編輯器更新 BOTO 設定,務必複製並貼上所有項目。

範例:sudo nano /etc/boto.cfg

範例:sudo vi /etc/boto.cfg

從 VM 執行個體終端機分頁 1(psc-instance-1)

[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

驗證設定,[憑證] 的順序對 DNS 查詢至關重要

more /etc/boto.cfg
[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

[GSUtil]
default_project_id  = 234086459238
default_api_version = 2

[GoogleCompute]
service_account = default

14. 確認更新後的 gsutil 查詢行為

從分頁 3 (psc-instance-1) 啟動 tcpdump 並監控 DNS 流量

sudo tcpdump -vv -i eth0 port 53

從分頁 1 檢查儲存空間值區 gsutil 查詢 (psc-instance-1)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

偵錯記錄檔可確認您可以透過 Private Service Connect 端點「pscendpoint」連線至儲存空間值區

輸出:

<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
 'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

在 Tab 3 (psc-instance-1) 中,確認 PSC 端點 IP 是嘗試存取儲存空間值區時使用的 DNS A 記錄。

@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
    metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)

確認 Private Service Connect 端點 IP 現已用於 DNS 解析

來自 Tab1

nslookup storage-pscendpoint.p.googleapis.com

輸出

@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   storage-pscendpoint.p.googleapis.com
Address: <pscip>

15. 清除步驟

結束 VM 執行個體 (所有分頁)

exit

從單一 Cloud Shell 終端機刪除研究室元件

gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet

gcloud compute routers delete crnat --region=us-central1 --quiet

gcloud beta compute forwarding-rules delete pscendpoint --global --quiet

gcloud beta compute addresses delete psc-ip --global --quiet

gsutil rm -r gs://$BUCKET_NAME

gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet

gcloud compute firewall-rules delete psclab-ssh --quiet

gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet

gcloud compute networks delete psc-lab --quiet

在控制台中,確認目前查看的是正確的專案,然後依序選取「Networking Services」(網路服務) →「Cloud DNS」

d0ed4bd585006e45.png

識別並點選「psc-dns-zone」

903532e68a262111.png

選取記錄集「storage-pscendpoint.p.googleapis.com」然後按一下「Delete Record Sets」(刪除記錄集)

e89394b43ddb5ce2.png

按一下「刪除可用區」即可完成研究室清理作業

b2a612d7b3a80030.png

16. 恭喜!

恭喜您完成本程式碼研究室。

涵蓋內容

  • Private Service Connect 用途
  • 網路需求
  • 支援的 API
  • 已建立 Private Service Connect 端點
  • 已建立 Cloud Storage 值區
  • 建立 Cloud DNS 私人區域
  • 已更新 BOTO 設定檔
  • 已建立 NAT GW
  • 在 VM1 上執行 gsutil 清單,以解析您的 PSC 服務端點
  • 在 VM2 上執行 gsutil 清單,以解析 public googleapis.com
  • 透過 Tcpdump 驗證 DNS 解析