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

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

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

目標

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

費用

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

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

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

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

始める前に

  1. このシリーズの前の 2 つのチュートリアルを完了します。
  2. サービス ユーザー リソースに使用するプロジェクトを作成または選択します。このプロジェクトは CONSUMER_PROJECT と呼ばれます。
    1. コンソールで、プロジェクトの選択ページに移動します。 Google Cloud

      プロジェクト セレクタに移動

    2. プロジェクトの選択または作成 Google Cloud

      プロジェクトを選択または作成するために必要なロール

      • プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
      • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
  3. Compute Engine API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    API の有効化

  4. プロジェクトに次のロールがあることを確認します: Compute Engine > Compute ネットワーク管理者、Compute Engine > Compute インスタンス管理者

    ロールを確認する

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

      IAM に移動
    2. プロジェクトを選択します。
    3. [Principal] 列で、自分または自分が所属するグループを識別するすべての行を見つけます。自分が所属しているグループを確認するには、管理者にお問い合わせください。

    4. 自分を指定または含んでいるすべての行について、[ロール] 列で、 ロールのリストに必要なロールが含まれているかどうかを確認します。

    ロールを付与する

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

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

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

ネットワークを構成する

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

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

サービス ユーザーのネットワークとサブネットを作成する手順は次のとおりです。

コンソール

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

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

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

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

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

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

    1. [名前] に consumer-subnet と入力します。
    2. For [Region], select the same region as the published service that you created.
    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 から allow-ssh ネットワーク タグを持つ VM に SSH トラフィックが到達できるようにします。

コンソール

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

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

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

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

gcloud

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

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

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

コンソール

  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 を作成する

エンドポイントと同じリージョンにクライアント 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)の両方を削除します。

    プロジェクトを削除する: Google Cloud

    gcloud projects delete PROJECT_ID

次のステップ