1. はじめに
Private Service Connect(PSC)は、コンシューマーが VPC ネットワーク内からマネージド サービスにプライベート接続でアクセスできるようにする Google Cloud ネットワーキング機能です。同様に、マネージド サービス プロデューサーがこれらのサービスを個別の VPC ネットワークにホストし、コンシューマーとのプライベート接続を提供できるようにします。
Cloud Run は、Google のスケーラブルなインフラストラクチャ上でコンテナを直接実行できるマネージド コンピューティング プラットフォームです。
Cloud Run は、2 つの異なる方法で PSC サービスとして使用できます。
- Google APIs の PSC を介して、Cloud Run が提供する run.app URL から Cloud Run を呼び出す
- カスタム PSC プロデューサー サービス。Cloud Run は、サーバーレス NEG を使用する内部アプリケーション ロードバランサを介して Service Attachment で公開されます。
この Codelab では、これらのシナリオの両方で PSC を使用して Cloud Run を設定する方法について説明します。
学習内容
- Cloud Run に基本的なアプリをデプロイする
- Cloud Run の上り(内向き)と下り(外向き)の制御
- サーバーレス NEG を使用して内部アプリケーション ロードバランサ経由で Cloud Run をデプロイする
- サービス アタッチメントを介して PSC プロデューサー サービスを設定する
- PSC エンドポイントのデプロイ
必要なもの
- オーナー権限を持つ Google Cloud プロジェクト
2. Codelab トポロジ
この Codelab では、PSC 経由でアクセスできる 2 つの Cloud Run サービスをデプロイします。1 つは PSC を使用したカスタム公開サービスとして、もう 1 つは Google API の PSC としてデプロイします。2 つの VPC(consumer-vpc と producer-vpc)を作成します。まず、Hello World Cloud Run サービスをデプロイし、プロデューサー VPC 内のリージョン内部アプリケーション ロードバランサとサーバーレス NEG からアクセスできるようにします。サービス アタッチメントを介して PSC プロデューサー サービスとしてアクセスできるように Cloud Run サービスを設定する前に、プロデューサー クライアントを介してロードバランサを介してサービスが機能していることを確認します。
consumer-vpc に移動し、プロデューサー VPC で設定した Cloud Run サービス アタッチメントを指す PSC エンドポイントをデプロイします。次に、コンシューマ VPC のコンシューマ クライアントから PSC 経由でサービスにアクセスできることを確認します。次に、PSC エンドポイントを呼び出す別の Cloud Run サービスを作成します。最後に、Google API 用の PSC エンドポイントをデプロイします。コンシューマ クライアントから、Cloud Run から提供された URL を介して Cloud Run にアクセスします。この URL では、Google APIs エンドポイントの PSC が使用されます。
3. 設定と要件
セルフペース型の環境設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_ID
と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell を起動する
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある 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 サブネットのサイズ設定に関するドキュメントをご覧ください。
プロデューサー ネットワーク ファイアウォール ポリシーとファイアウォール ルールを作成する
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 が完了したら、この 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
フラグを使用すると、指定された run.app URL なしで Cloud Run サービスをデプロイします。このサービスでは URL は使用されません。この 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 をテストする
テスト用 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. コンシューマ 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. コンシューマ クライアント 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 ループ サービスを作成する
次に、コンシューマ VPC にプライベート コールバックを行い、PSC を介して公開した以前の Cloud Run HelloWorld サービスを呼び出す Cloud Run サービスを作成します。
こちらの「サンプル アプリケーションを作成する」の手順に沿って、PHP でループ アプリケーションを作成します。helloworld-php ではなく、ディレクトリに cloudrun-loop という名前を付けます。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 トラフィックが PSC エンドポイントにアクセスするために VPC に戻る必要があるため、ネットワークとサブネットを指定しています。ダイレクト VPC 下り(外向き)に cloudrun-egress サブネットを使用するように Cloud Run に指示します。すべてのトラフィックをダイレクト 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 という形式のサービス URL が提供されます。この URL も、次の手順でテストします。
14. Cloud Run URL を介して CloudRun-Loop への接続をテストする
Cloud Shell から
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
<Cloud-Run-ServiceURL> は、前の手順でメモした Service URL に置き換えます。
コンシューマ クライアント VM から
curl <Cloud-Run-ServiceURL>
想定される出力
Hello World!
この結果は、CloudRun-Loop サービスが consumer-vpc に正常にコールバックし、Hello World Cloud Run サービスに接続されている PSC エンドポイントを呼び出していることを示しています。ただし、この時点で、コンシューマ クライアント VM は Cloud NAT を介してインターネットに下り(外向き)接続し、パブリック Cloud Run URL を呼び出します。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 アドレスはリージョン サブネットから取得されず、既存の 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 APIs エンドポイントの 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 URL が Google APIs エンドポイントの PSC に解決されます。
Cloud Shell から
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
まず、DNS キャッシュを消去します。<Cloud-Run-ServiceURL> は、前にメモしたサービス URL に置き換えます。
コンシューマ クライアント 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 ループ サービスが Google APIs の 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
SUCCESS!
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
次の 2 つのコマンドを実行すると、「リソースが使用中です」というエラーで失敗する可能性があります。Cloud Run のドキュメントによると、Cloud Run サービスが削除された後、Cloud Run がサブネット リソースを解放するまでに 1 ~ 2 時間かかることがあります。削除に失敗した場合は、これらの 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 エンドポイントのデプロイ