1. はじめに
概要
このラボでは、Network Connectivity Center のハブが Private Service Connect エンドポイントを VPC スポークに伝播する方法について説明します。
ハブリソースは、VPC スポーク トラフィックを PSC エンドポイントに相互接続するための一元化された接続管理モデルを提供します。
作成するアプリの概要
この Codelab では、Private Service Connect エンドポイントを Cloud SQL インスタンスに伝播する NCC ネットワークを構築します。

学習内容
- Private Service Connect を使用して Cloud SQL インスタンスに接続する
- NCC ハブを使用して PSC サブネットをすべての VPC スポークに伝播し、複数の VPC ネットワークからのネットワーク接続を許可する
必要なもの
- GCP Cloud Networking の知識
- Cloud SQL の基礎知識
- Google Cloud プロジェクト
- [割り当て: ネットワーク] を確認し、[追加のネットワークをリクエスト] します(以下のスクリーンショットを参照)。

目標
- GCP 環境を設定する
- Private Service Sonnect を使用して MySql 用の Cloud SQL インスタンスを設定する
- PSC エンドポイントを伝播するように Network Connectivity Center ハブを構成する
- VPC をスポークとして使用して Network Connectivity Center を構成する
- データパスを検証する
- NCC のサービス機能を確認する
- リソースをクリーンアップする
始める前に
Google Cloud コンソールと Cloud Shell
GCP を操作するには、このラボ全体で Google Cloud コンソールと Cloud Shell の両方を使用します。
NCC ハブ プロジェクトの Google Cloud コンソール
Cloud Console には、 https://console.cloud.google.com からアクセスできます。
Google Cloud で次の項目を設定すると、Network Connectivity Center を簡単に構成できます。
Google Cloud コンソール の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
Cloud Shell を起動します。この Codelab では、$variables を使用して、Cloud Shell で gcloud 構成の実装を支援します。
gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project
IAM ロール
NCC では、特定の API にアクセスするために IAM ロールが必要です。必要に応じて、NCC IAM ロールを使用してユーザーを構成してください。
ロール/説明 | 権限 |
networkconnectivity.networkAdmin - ネットワーク管理者は、ハブとスポークを管理できます。 | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager - ハブにスポークを追加して管理できます。ホスト プロジェクトがハブを所有している共有 VPC で使用されますが、他のプロジェクトの他の管理者は、アタッチメントのスポークをハブに追加できます。 | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer - ネットワーク ユーザーは、ハブとスポークのさまざまな属性を表示できます。 | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. ネットワーク環境を設定する
概要
このセクションでは、2 つの VPC ネットワークとファイアウォール ルールを単一のプロジェクトにデプロイします。論理図は、このステップで設定するネットワーク環境を示しています。

VPC1 とサブネットを作成する
VPC ネットワークには、データパスの検証用に GCE VM をインストールするサブネットが含まれています。
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
VPC に PSC サブネットを作成する
次のコマンドを使用して、PSC-EP に割り振られる VPC スポークにサブネットを作成します。
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
vpc_spoke_subnet_ip_range="192.168.0.0/24"
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
VPC3 とサブネットを作成する
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
vpc_spoke_subnet_ip_range="10.0.3.0/24"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
VPC1 のファイアウォール ルールを構成する
これらのルールにより、RFC1918 と Identity Access Proxy の範囲からのネットワーク接続が可能になります。
vpc_spoke_network_name="vpc1-spoke"
gcloud compute firewall-rules create vpc1-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
gcloud compute firewall-rules create vpc1-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20
ルーティング VPC と VPC ファイアウォール ルールを構成する
vpc_spoke_network_name="vpc3-spoke"
gcloud compute firewall-rules create vpc3-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
gcloud compute firewall-rules create vpc3-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20
VPC1 で GCE VM を構成する
パッケージをインストールするには一時的なインターネット アクセスが必要になるため、外部 IP アドレスを使用するようにインスタンスを構成します。
vm_vpc1_spoke_name="csql-vpc1-vm"
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
region="us-central1"
zone="us-central1-a"
gcloud compute instances create "${vm_vpc1_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'
VPC3 で GCE VM を構成する
パッケージをインストールするには一時的なインターネット アクセスが必要になるため、外部 IP アドレスを使用するようにインスタンスを構成します。
vm_vpc_spoke_name="csql-vpc3-vm"
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
region="us-central1"
zone="us-central1-a"
gcloud compute instances create "${vm_vpc_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'
3. Cloud SQL インスタンスを作成する
次のコマンドを使用して、インスタンスを作成し、Private Service Connect を有効にします。
この処理には数分かかります。
gcloud config set project ${project}
gcloud sql instances create mysql-instance \
--project="${project}" \
--region=us-central1 \
--enable-private-service-connect \
--allowed-psc-projects="${project}" \
--availability-type=zonal \
--no-assign-ip \
--tier=db-f1-micro \
--database-version=MYSQL_8_0 \
--enable-bin-log
Cloud SQL インスタンスのサービス アタッチメント URI を確認する
gcloud sql instances describe コマンドを使用して、Private Service Connect が有効になっているインスタンスに関する情報を表示します。pscServiceAttachmentLink フィールドに、インスタンスのサービス アタッチメントを指し示す URI が表示されます。これは次のセクションで必要になります。
gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'
4. PSC エンドポイントから Cloud SQL へ
PSC エンドポイントの内部 IP アドレスを予約する
次のコマンドを使用して、Private Service Connect エンドポイントの内部 IP アドレスを予約します。
region="us-central1"
vpc_spoke_subnet_name="csql-psc-subnet"
gcloud compute addresses create csql-psc-ip \
--subnet="${vpc_spoke_subnet_name}" \
--region="${region}" \
--addresses=192.168.0.253
予約済みの IP アドレスに関連付けられている NAME を確認します。 これは転送ルール構成で使用されます。
gcloud compute addresses list \
--filter="name=csql-psc-ip"
VPC1 に Private Service Connect 転送ルールを作成する
次のコマンドを使用して Private Service Connect エンドポイントを作成し、Cloud SQL サービス アタッチメントを指し示すように設定します。
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
csql_psc_ep_name="csql-psc-ep"
sa_uri=$(gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)')
echo "$sa_uri"
gcloud compute forwarding-rules create "${csql_psc_ep_name}" \
--address=csql-psc-ip \
--region="${region}" \
--network="${vpc_spoke_network_name}" \
--target-service-attachment="${sa_uri}" \
--allow-psc-global-access
次のコマンドを使用して、cSQL サービス アタッチメントがエンドポイントを受け入れることを確認します。
gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'
VPC1 から MySQL へのデータパスを確認する
新しい Cloud SQL インスタンスを作成する場合は、インスタンスに接続する前に、デフォルトのユーザー アカウントのパスワードを設定する必要があります。
gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password
次のコマンドを使用して、Cloud SQL のサービス アタッチメントに関連付けられている PSC エンドポイントの IP アドレスを確認します。
gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'
VPC1 の VM から Cloud SQL インスタンスに接続する
csql-vpc1-vm への SSH セッションを開きます。
gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap
次のコマンドを使用して、Cloud SQL インスタンスに接続します。プロンプトが表示されたら、上記の手順で作成したパスワードを入力します。
mysql -h 192.168.0.253 -u root -p
ログインに成功すると、次の出力が表示されます。
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8350
Server version: 8.0.31-google (Google)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
show databases; コマンドを使用して、MySql でデフォルトで作成されるデータベースを確認します。
MySQL [(none)]> show databases;
VPC3 の VM から Cloud SQL インスタンスに接続する
csql-vpc3-vm への SSH セッションを開きます。
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
次のコマンドを使用して、Cloud SQL インスタンスに接続します。プロンプトが表示されたら、上記の手順で作成したパスワードを入力します。
mysql -h 192.168.0.253 -u root -p
VPC3 から Private Service Connect エンドポイントへのデータパスがないため、VPC3 に存在する VM からのセッションは失敗します。キー操作を使用してセッションを終了します。
Ctrl + C
5. Network Connectivity Center ハブ
概要
このセクションでは、gcloud コマンドを使用して NCC ハブを構成します。NCC ハブは、VPC スポークから Private Service Connect エンドポイントへのデータパスの構築を担当するコントロール プレーンとして機能します。

API サービスを有効にする
Network Connectivity API がまだ有効になっていない場合は、有効にします。
gcloud services enable networkconnectivity.googleapis.com
NCC ハブを作成する
次の gcloud コマンドを使用して、NCC ハブを作成します。「--export-psc」フラグは、既知の PSC エンドポイントをすべての VPC スポークに伝播するように NCC ハブに指示します。
hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc
新しく作成した NCC ハブについて説明します。名前と関連するパスをメモします。
gcloud network-connectivity hubs describe ncc-hub
VPC1 を NCC スポークとして構成する
hub_name="ncc-hub"
vpc_spoke_name="sql-vpc1-spoke"
vpc_spoke_network_name="vpc1-spoke"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
VPC3 を NCC スポークとして構成する
hub_name="ncc-hub"
vpc_spoke_name="sql-vpc3-spoke"
vpc_spoke_network_name="vpc3-spoke"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
次のコマンドを使用して、NCC ハブのルートテーブルで PSC サブネットへのルートを確認します。
gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub
6. NCC データパスを確認する
このステップでは、NCC ハイブリッドと VPC スポーク間のデータパスを検証します。
NCC で構成されたデータパスから Cloud SQL インスタンスの PSC エンドポイントへのデータパスを確認する
これらの gcloud コマンドの出力を利用して、オンプレミス VM にログオンします。
gcloud compute instances list --filter="name=csql-vpc3-vm"
オンプレミス ネットワークに存在する VM インスタンスにログオンします。
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
次の mysql コマンドを使用して、Cloud SQL インスタンスに接続します。プロンプトが表示されたら、上記の手順で作成したパスワードを入力します。
mysql -h 192.168.0.253 -u root -p
ログインに成功すると、次の出力が表示されます。
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8501
Server version: 8.0.31-google (Google)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.005 sec)
show databases; コマンドを使用して、MySql でデフォルトで作成されるデータベースを確認します。
MySQL [(none)]> show databases;
7. クリーンアップ
Cloud Shell にログインして、GCP リソースを削除します。
Cloud SQL PSC エンドポイントを削除する
gcloud compute forwarding-rules delete csql-psc-ep \
--region=us-central1 \
--quiet
gcloud compute addresses delete csql-psc-ip \
--region=us-central1 \
--quiet
gcloud compute networks subnets delete csql-psc-subnet \
--region=us-central1 \
--quiet
Cloud SQL インスタンスを削除する
gcloud sql instances delete mysql-instance --quiet
ファイアウォール ルールを削除する
vpc_spoke_network_name="vpc3-spoke"
gcloud compute firewall-rules delete vpc3-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc3-allow-iap \ --network="${vpc_spoke_network_name}"
vpc_spoke_network_name="vpc1-spoke"
gcloud compute firewall-rules delete vpc1-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc1-allow-iap \ --network="${vpc_spoke_network_name}"
VPC1 と VPC3 の GCE インスタンスを削除する
vm_vpc1_spoke_name="csql-vpc1-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc1_spoke_name}" \
--zone="${zone}" \
--quiet
vm_vpc_spoke_name="csql-vpc3-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc_spoke_name}" \
--zone="${zone}" --quiet
NCC スポークを削除する
vpc_spoke_name="sql-vpc1-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \
--quiet
vpc_spoke_name="sql-vpc3-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \
--quiet
NCC ハブを削除する
hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
--project=${project}
すべての VPC のサブネットを削除する
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet1"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet3"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
VPC1 と VPC3 を削除する
gcloud compute networks delete vpc1-spoke vpc3-spoke
8. 完了
Network Connectivity Center ラボでの Private Service Connect の伝播が完了しました。
学習した内容
- Network Connectivity Center を使用した Private Service Connect エンドポイントの伝播
次のステップ