このチュートリアルでは、サービス ユーザーとして、Private Service Connect エンドポイントを作成して公開サービスにアクセスする方法について説明します。エンドポイントにリクエストを送信すると、Private Service Connect はそのリクエストを公開サービスに転送します。
このチュートリアルは、クラウド アーキテクト、ネットワーク アーキテクト、ネットワーク管理者、IT 管理者を対象としています。
目標
- サービス ユーザー リソースのネットワーキングを構成する
- エンドポイントを作成する
- エンドポイントへのアクセスをテストする
費用
このドキュメントでは、課金対象である次のコンポーネントを使用します。 Google Cloud
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- このシリーズの前の 2 つのチュートリアルを完了します。
- 負荷分散されたサービスを作成する。
- 他の VPC ネットワークからサービスにアクセスできるようにする。このチュートリアルを完了するには、 サービス アタッチメント ID が必要です。
- サービス ユーザー リソースに使用するプロジェクトを作成または選択します。このプロジェクトは
CONSUMER_PROJECTと呼ばれます。 -
コンソールで、プロジェクトの選択ページに移動します。 Google Cloud
-
プロジェクトの選択または作成 Google Cloud
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
Compute Engine API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。-
プロジェクトに次のロールがあることを確認します: Compute Engine > Compute ネットワーク管理者、Compute Engine > Compute インスタンス管理者
ロールを確認する
-
コンソールで、[IAM] ページに移動します。 Google Cloud
IAM に移動 - プロジェクトを選択します。
-
[Principal] 列で、自分または自分が所属するグループを識別するすべての行を見つけます。自分が所属しているグループを確認するには、管理者にお問い合わせください。
- 自分を指定または含んでいるすべての行について、[ロール] 列で、 ロールのリストに必要なロールが含まれているかどうかを確認します。
ロールを付与する
-
コンソールで、[IAM] ページに移動します。 Google Cloud
IAM に移動 - プロジェクトを選択します。
- [Grant access] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [**ロールを選択**] をクリックして、ロールを検索します。
- 追加のロールを付与するには、 [Add another role] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
ネットワークを構成する
以降のセクションでは、エンドポイントをホストするネットワークとサブネットを作成する方法と、エンドポイントのテストに使用するクライアント VM への SSH アクセスを許可するファイアウォール ルールを作成する方法について説明します。
ネットワークとサブネットを作成する
サービス ユーザーのネットワークとサブネットを作成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
consumer-network」と入力します。[**サブネット作成モード**] で [**カスタム**] を選択します。
[新しいサブネット] セクションに、次の情報を入力します。
- [名前] に
consumer-subnetと入力します。 - For [Region], select the same region as the published service that you created.
- [IP スタックタイプ] で [IPv4(シングルスタック)] を選択します。
- [IPv4 範囲] に
192.168.10.0/24と入力します。 - [完了] をクリックします。
- [名前] に
[作成] をクリックします。
gcloud
カスタムモードの VPC ネットワークを作成します。
gcloud compute networks create consumer-network --subnet-mode=custom
consumer-networkネットワークにサブネットを作成します。gcloud compute networks subnets create consumer-subnet \ --network=consumer-network \ --range=192.168.10.0/24 \ --region=REGIONREGIONは、作成した公開サービスと同じリージョンに置き換えます。
ファイアウォール ルールを構成する
fw-allow-ssh というファイアウォール ルールを作成して、
0.0.0.0/0 から allow-ssh ネットワーク タグを持つ VM に SSH トラフィックが到達できるようにします。
コンソール
コンソールで、[**ファイアウォール ポリシー**] ページに移動します。 Google Cloud
受信 SSH 接続を許可するには、[ファイアウォール ルールを作成] をクリックして、次の設定を使用します。
- [名前] に
fw-allow-sshと入力します。 - [ネットワーク] で
consumer-networkを選択します。 - [**優先度**] に
1000と入力します。 - [**トラフィックの方向**] で [**上り(内向き)**] をオンにします。
- [一致したときのアクション] で [許可] をオンにします。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] に
allow-sshと入力します。 - [**ソースフィルタ**] で [**IPv4 範囲**] を選択します。
- [送信元 IPv4 範囲] に
0.0.0.0/0と入力します。 - [プロトコルとポート] で [指定したプロトコルとポート] を選択し、
[TCP] チェックボックスをオンにします。[ポート] に
22と入力します。
- [名前] に
[作成] をクリックします。
gcloud
fw-allow-sshファイアウォール ルールを作成して、ネットワーク タグallow-sshを指定し、 VM への SSH 接続を許可します。gcloud compute firewall-rules create fw-allow-ssh \ --network=consumer-network \ --action=allow \ --direction=ingress \ --source-ranges=0.0.0.0/0 \ --target-tags=allow-ssh \ --rules=tcp:22
エンドポイントを作成する
作成した公開サービスを参照するエンドポイントを作成します。
コンソール
Google Cloud コンソールで、[Private Service Connect] ページに移動します。
[接続エンドポイント] タブをクリックします。
[エンドポイントを接続] をクリックします。
[ターゲット] で [公開済みのサービス] を選択します。
[ターゲット サービス] に
projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-serviceと入力します。PRODUCER_PROJECTは、公開サービスのプロジェクト ID に置き換えます。REGIONは、公開サービスのリージョンに置き換えます。[**エンドポイント名**] に
ep-1と入力します。[ネットワーク] で
consumer-networkを選択します。[**サブネットワーク**] で、
consumer-subnetを選択します。[IP アドレス] プルダウン メニューをクリックし、[IP アドレスを作成] を選択します。
- [名前] に
ep-ip-1と入力します。 - [**静的 IP アドレス**] で、[**Let me choose**] を選択します。
- [カスタム IP アドレス] に
192.168.10.5と入力します。 - [予約] をクリックします。
- [名前] に
[エンドポイントを追加] をクリックします。
gcloud
エンドポイントに割り当てる内部 IP アドレスを予約します。
gcloud compute addresses create ep-ip-1 \ --region=REGION \ --subnet=consumer-subnet \ --addresses=192.168.10.5REGIONは、作成した公開サービスと同じリージョンに置き換えます。エンドポイントをサービス プロデューサーのサービス アタッチメントに接続する転送ルールを作成します。
gcloud compute forwarding-rules create ep-1 \ --region=REGION \ --network=consumer-network \ --address=ep-ip-1 \ --target-service-attachment=projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service次のように置き換えます。
PRODUCER_PROJECT: サービス プロデューサー プロジェクトのプロジェクト ID。REGION: サービス アタッチメントのリージョン。
エンドポイントへのアクセスをテストする
エンドポイントと公開サービスが機能していることをテストするには、テスト VM を作成し、その VM からエンドポイントにリクエストを送信します。
テスト用のクライアント VM を作成する
エンドポイントと同じリージョンにクライアント VM を作成します。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] に
consumer-testと入力します。[**リージョン**] で、バックエンド VM と同じリージョンを選択します。
[**ゾーン**] で、そのリージョンのゾーンを選択します。
[ネットワーキング] をクリックして次のフィールドを構成します。
- [ネットワーク タグ] に「
allow-ssh」と入力します。 - [**ネットワーク インターフェース**] で、次のように選択します。
- [ネットワーク] で、
consumer-networkを選択します。 - [サブネット] で、
consumer-subnetを選択します。
- [ネットワーク] で、
- [ネットワーク タグ] に「
[作成] をクリックします。
gcloud
gcloud compute instances create consumer-test \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=consumer-subnet
ZONE は、バックエンド VM と同じリージョンにあるゾーンに置き換えます。
接続をテストする
このテストでは、クライアント VM からエンドポイントに接続します。想定される動作は、トラフィックがロードバランサのバックエンド VM に分散されることです。
- クライアント VM インスタンスに接続します。
gcloud compute ssh consumer-test --zone=ZONE
ZONEはクライアント VM のゾーンに置き換えます。 curlを使用して IP アドレスに接続するエンドポイントへのウェブ リクエストを作成します。レスポンスが異なるバックエンド VM から返ってくることを確認するために、このリクエストを繰り返します。レスポンスを生成する VM の名前が、各バックエンド VM 上で、/var/www/html/index.htmlのコンテンツによる HTML レスポンスのテキストとして表示されます。たとえば、想定される レスポンスはPage served from: vm-1やPage served from: vm-2のようになります。curl -s http://192.168.10.5
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトを削除する
プロデューサー プロジェクト(PRODUCER_PROJECT)とコンシューマー プロジェクト(CONSUMER_PROJECT)の両方を削除します。
プロジェクトを削除する: Google Cloud
gcloud projects delete PROJECT_ID
次のステップ
- Private Service Connect 公開サービスの詳細を確認する
- エンドポイントを介した公開サービスへのアクセスについて確認する
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。 Cloud アーキテクチャ センターをご覧ください。