別の VPC ネットワークからサービスにアクセスする

このチュートリアルでは、サービス コンシューマーが Private Service Connect エンドポイントを作成して、公開されたサービスにアクセスする方法について説明します。エンドポイントにリクエストを送信すると、Private Service Connect はそれらのリクエストを公開サービスに転送します。

このチュートリアルは、クラウド アーキテクト、ネットワーク アーキテクト、ネットワーク管理者、IT 管理者を対象としています。

目標

  • サービス コンシューマー リソースのネットワーキングを構成する
  • エンドポイントを作成する
  • エンドポイントへのアクセスをテストする

費用

このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

新規の Google Cloud ユーザーの方は、無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. このシリーズの前の 2 つのチュートリアルを完了する。
  2. サービス ユーザー リソースに使用するプロジェクトを作成または選択します。このプロジェクトは CONSUMER_PROJECT と呼ばれます。
    1. In the Google Cloud console, go to the project selector page.

      Go to project selector

    2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.
  3. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. 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

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. 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.

    4. 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

    1. In the Google Cloud console, go to the IAM page.

      IAM に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

    5. [ロールを選択] をクリックし、ロールを検索します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。

ネットワークを構成する

以降のセクションでは、エンドポイントをホストするネットワークとサブネットを作成する方法と、エンドポイントのテストに使用するクライアント VM への SSH アクセスを許可するファイアウォール ルールを作成する方法について説明します。

ネットワークとサブネットを作成する

サービス コンシューマーのネットワークとサブネットを作成する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. [VPC ネットワークを作成] をクリックします。

  3. [名前] に「consumer-network」と入力します。

  4. [サブネット作成モード] で [カスタム] を選択します。

  5. [新しいサブネット] セクションに、次の情報を入力します。

    1. [名前] に「consumer-subnet」と入力します。
    2. [リージョン] で、作成した公開サービスと同じリージョンを選択します。
    3. [IP スタックタイプ] で [IPv4(シングルスタック)] を選択します。
    4. [IPv4 範囲] に「192.168.10.0/24」と入力します。
    5. [完了] をクリックします。
  6. [作成] をクリックします。

gcloud

  1. カスタムモードの VPC ネットワークを作成します。

    gcloud compute networks create consumer-network --subnet-mode=custom
    
  2. consumer-network ネットワークにサブネットを作成します。

    gcloud compute networks subnets create consumer-subnet \
        --network=consumer-network \
        --range=192.168.10.0/24 \
        --region=REGION
    

    REGION は、作成した公開済みサービスと同じリージョンに置き換えます。

ファイアウォール ルールを構成する

fw-allow-ssh というファイアウォール ルールを作成して、0.0.0.0/0 からの SSH トラフィックが allow-ssh ネットワーク タグを持つ VM に到達できるようにします。

コンソール

  1. Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. 受信 SSH 接続を許可するには、[ファイアウォール ルールを作成] をクリックして、次の設定を使用します。

    • [名前] に「fw-allow-ssh」と入力します。
    • [ネットワーク] で consumer-network を選択します。
    • [優先度] に「1000」と入力します。
    • [トラフィックの方向] で [上り(内向き)] をオンにします。
    • [一致したときのアクション] で [許可] をオンにします。
    • [ターゲット] で [指定されたターゲットタグ] を選択します。
    • [ターゲットタグ] に「allow-ssh」と入力します。
    • [ソースフィルタ] で [IPv4 範囲] を選択します。
    • [送信元 IPv4 範囲] に「0.0.0.0/0」と入力します。
    • [プロトコルとポート] で [指定したプロトコルとポート] を選択し、[TCP] チェックボックスをオンにします。[ポート] に「22」と入力します。
  3. [Create] をクリックします。

gcloud

  1. ネットワーク タグ 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
    

エンドポイントを作成する

作成した公開サービスを参照するエンドポイントを作成します。

コンソール

  1. Google Cloud コンソールで、[Private Service Connect] ページに移動します。

    [Private Service Connect] に移動

  2. [接続エンドポイント] タブをクリックします。

  3. [エンドポイントを接続] をクリックします。

  4. [ターゲット] で [公開済みのサービス] を選択します。

  5. [ターゲット サービス] に「projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/published-service」と入力します。

    PRODUCER_PROJECT は、公開されたサービスのプロジェクト ID に置き換えます。REGION は、公開されたサービスのリージョンに置き換えます。

  6. [エンドポイント名] に「ep-1」と入力します。

  7. [ネットワーク] で consumer-network を選択します。

  8. [サブネットワーク] で、[consumer-subnet] を選択します。

  9. [IP アドレス] プルダウン メニューをクリックし、[IP アドレスを作成] を選択します。

    1. [名前] に「ep-ip-1」と入力します。
    2. [静的 IP アドレス] で、Let me choose を選択します。
    3. [カスタム IP アドレス] に「192.168.10.5」と入力します。
    4. [予約] をクリックします。
  10. [エンドポイントを追加] をクリックします。

gcloud

  1. エンドポイントに割り当てる内部 IP アドレスを予約します。

    gcloud compute addresses create ep-ip-1 \
        --region=REGION \
        --subnet=consumer-subnet \
        --addresses=192.168.10.5
    

    REGION は、作成した公開済みサービスと同じリージョンに置き換えます。

  2. エンドポイントをサービス プロデューサーのサービス アタッチメントに接続する転送ルールを作成します。

    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 を作成します。

コンソール

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。

  3. [名前] に「consumer-test」と入力します。

  4. [リージョン] で、バックエンド VM と同じリージョンを選択します。

  5. [ゾーン] で、そのリージョンのゾーンを選択します。

  6. [ネットワーキング] をクリックして次のフィールドを構成します。

    1. [ネットワーク タグ] に「allow-ssh」と入力します。
    2. [ネットワーク インターフェース] で、次のように選択します。
      • [ネットワーク] で [consumer-network] を選択します。
      • [サブネット] で、[consumer-subnet] を選択します。
  7. [作成] をクリックします。

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 に分散されることです。

  1. クライアント VM インスタンスに接続します。
    gcloud compute ssh consumer-test --zone=ZONE
    
    ZONE は、クライアント VM のゾーンに置き換えます。
  2. curl を使用して IP アドレスに接続するエンドポイントへのウェブ リクエストを作成します。レスポンスが異なるバックエンド VM から返ってくることを確認するために、このリクエストを繰り返します。レスポンスを生成する VM の名前が、各バックエンド VM 上で、/var/www/html/index.html のコンテンツによる HTML レスポンスのテキストとして表示されます。たとえば、想定されるレスポンスは Page served from: vm-1Page served from: vm-2 のようになります。
    curl -s http://192.168.10.5
    

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトを削除する

プロデューサー プロジェクト(PRODUCER_PROJECT)とコンシューマー プロジェクト(CONSUMER_PROJECT)の両方を削除します。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ