このチュートリアルでは、サービス コンシューマーが Private Service Connect エンドポイントを作成して、公開されたサービスにアクセスする方法について説明します。エンドポイントにリクエストを送信すると、Private Service Connect はそれらのリクエストを公開サービスに転送します。
このチュートリアルは、クラウド アーキテクト、ネットワーク アーキテクト、ネットワーク管理者、IT 管理者を対象としています。
目標
- サービス コンシューマー リソースのネットワーキングを構成する
- エンドポイントを作成する
- エンドポイントへのアクセスをテストする
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- このシリーズの前の 2 つのチュートリアルを完了する。
- ロードバランス サービスを作成する。
- 他の VPC ネットワークからサービスにアクセスできるようにする。このチュートリアルを完了するには、 サービス アタッチメント ID が必要です。
- サービス ユーザー リソースに使用するプロジェクトを作成または選択します。このプロジェクトは
CONSUMER_PROJECTと呼ばれます。 -
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Compute Engine > Compute Network Admin, Compute Engine > Compute Instance Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] をクリックし、ロールを検索します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
ネットワークを構成する
以降のセクションでは、エンドポイントをホストするネットワークとサブネットを作成する方法と、エンドポイントのテストに使用するクライアント VM への SSH アクセスを許可するファイアウォール ルールを作成する方法について説明します。
ネットワークとサブネットを作成する
サービス コンシューマーのネットワークとサブネットを作成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
[VPC ネットワークを作成] をクリックします。
[名前] に「
consumer-network」と入力します。[サブネット作成モード] で [カスタム] を選択します。
[新しいサブネット] セクションに、次の情報を入力します。
- [名前] に「
consumer-subnet」と入力します。 - [リージョン] で、作成した公開サービスと同じリージョンを選択します。
- [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 からの SSH トラフィックが allow-ssh ネットワーク タグを持つ VM に到達できるようにします。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
受信 SSH 接続を許可するには、[ファイアウォール ルールを作成] をクリックして、次の設定を使用します。
- [名前] に「
fw-allow-ssh」と入力します。 - [ネットワーク] で
consumer-networkを選択します。 - [優先度] に「
1000」と入力します。 - [トラフィックの方向] で [上り(内向き)] をオンにします。
- [一致したときのアクション] で [許可] をオンにします。
- [ターゲット] で [指定されたターゲットタグ] を選択します。
- [ターゲットタグ] に「
allow-ssh」と入力します。 - [ソースフィルタ] で [IPv4 範囲] を選択します。
- [送信元 IPv4 範囲] に「
0.0.0.0/0」と入力します。 - [プロトコルとポート] で [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにします。[ポート] に「
22」と入力します。
- [名前] に「
[Create] をクリックします。
gcloud
ネットワーク タグ
allow-sshを使用して、VM との SSH 接続を許可するfw-allow-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 を作成します。
コンソール
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)の両方を削除します。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- Private Service Connect の公開サービスの詳細を確認する
- エンドポイントを介した公開サービスへのアクセスについて確認する
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。