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 ネットワーキングの知識
- Cloud SQL の基礎知識
- Google Cloud プロジェクト
- [割り当て: ネットワーク] を確認し、必要に応じてネットワークを追加リクエストします(下のスクリーンショットをご覧ください)。
目標
- GCP 環境を設定する
- Private Service Connect を使用して MySql 用に Cloud SQL インスタンスを設定する
- PSC エンドポイントを伝播するように Network Connectivity Center ハブを構成する
- VPC をスポークとして使用して Network Connectivity Center を構成する
- データパスを検証する
- NCC の保守性機能を確認する
- リソースのクリーンアップ
始める前に
Google Cloud コンソールと Cloud Shell
このラボでは、GCP を操作するために、Google Cloud コンソールと Cloud Shell の両方を使用します。
NCC Hub プロジェクトの Google Cloud コンソール
Cloud コンソールには、https://console.cloud.google.com からアクセスできます。
Google Cloud で次の項目を設定すると、ネットワーク接続センターを簡単に構成できます。
Google Cloud Console の [プロジェクト セレクタ] ページで、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 ネットワークとファイアウォール ルールを 1 つのプロジェクトにデプロイします。次の論理図は、この手順で設定するネットワーク環境を示しています。
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 が有効になっているインスタンスに関する情報を表示します。インスタンスのサービス アタッチメントを指す URI を表示する pscServiceAttachmentLink フィールドに注意してください。この情報は次のセクションで必要になります。
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 Hub を構成します。NCC ハブは、VPC スポークから Private Service Connect エンドポイントへのデータパスの構築を担当するコントロール プレーンとして機能します。
API Services を有効にする
ネットワーク接続 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 スポーク間のデータパスを検証します。
Cloud Sql インスタンスの PSC エンドポイントへの NCC 構成データパスを確認する
これらの 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 の伝播の Lab はこれで完了です。
学習した内容
- Network Connectivity Center を使用した Private Service Connect エンドポイントの伝播
次のステップ