Private Service Connect を使用して、オンプレミスから Vertex AI での生成 AI にアクセスする


オンプレミス ホストは、公共のインターネット経由、または Cloud VPN や Cloud Interconnect を介した Private Service Connect(PSC)を使用するハイブリッド ネットワーキング アーキテクチャ経由でプライベートに、Vertex AI の生成 AI にアクセスできます。どちらのオプションも SSL / TLS 暗号化に対応しています。ただし、プライベート オプションはパフォーマンスが大幅に向上するため、クリティカルなアプリケーションに適しています。

このチュートリアルでは、高可用性 VPN(HA VPN)を使用して、Vertex AI での生成 AI に、Cloud NAT を介した公開アクセスと、マルチクラウドおよびオンプレミスのプライベート接続を可能にする 2 つの Virtual Private Cloud(VPC)ネットワーク間におけるプライベート アクセスの両方を行います。

このチュートリアルは、Vertex AI、VPC、 Google Cloud コンソール、Cloud Shell に精通している企業のネットワーク管理者、データ サイエンティスト、研究者を対象としています。Vertex AI での生成 AI に詳しければ助けになりますが、必須ではありません。

Private Service Connect を使用して Vertex AI での生成 AI にアクセスするアーキテクチャ図。

目標

  • 上の図に示すように、2 つの VPC ネットワークを作成します。
    • 一つ(onprem-vpc)は、オンプレミス ネットワークを表します。
    • もう一つ(vertex-networking-vpc)は、Vertex AI での生成 AI 用 REST API にアクセスするためのものです。
  • HA VPN ゲートウェイ、Cloud VPN トンネル、Cloud Router をデプロイして、vertex-networking-vpconprem-vpc に接続します。
  • リクエストを GenAI REST API へ転送する Private Service Connect(PSC)エンドポイントを作成します。
  • Private Service Connect エンドポイントのルートを onprem-vpc に通知するために、vertex-networking-vpc に Cloud Router のカスタム アドバタイズ ルートを構成します。
  • onprem-vpc に Compute Engine VM インスタンスを作成します。これは、HA VPN 経由で GenAI REST API にリクエストを送信するクライアント アプリケーションを表します。

費用

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

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

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

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

始める前に

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Verify that billing is enabled for your Google Cloud project.

  4. プロジェクト オーナーでない場合は、プロジェクト オーナーから roles/resourcemanager.projectIamAdmin IAM ロールを付与してもらう必要があります。このロールは、自分自身とサービス アカウントに、IAM ロールと権限を付与するために必要です。
  5. このチュートリアルで説明するコマンドを実行するために、Cloud Shell を開きます。Cloud Shell は Google Cloud のインタラクティブなシェル環境であり、ウェブブラウザからプロジェクトやリソースを管理できます。
  6. Cloud Shell で現在のプロジェクトを Google Cloud プロジェクト ID に設定してから、同じプロジェクト ID を projectid シェル変数に保存します。
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    PROJECT_ID は、実際のプロジェクト ID に置き換えます。プロジェクト ID は Google Cloud コンソールでも確認できます。詳細については、プロジェクト ID を確認するをご覧ください。
  7. Make sure that you have the following role or roles on the project: roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user

    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. [保存] をクリックします。

  8. Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs.

    Enable the APIs

2 つの VPC ネットワーク(vertex-networking-vpconprem-vpc)を作成する

このセクションでは、2 つの VPC ネットワークを作成します。1 つは Vertex AI の生成 AI(別名 GenAI)API にアクセスするためのプライマリ ネットワークで、もう 1 つはオンプレミス ネットワークをシミュレートするためのネットワークです。

VPC ネットワークを作成する

  1. GenAI API にアクセスするための VPC ネットワーク(vertex-networking-vpc)を作成します。

    gcloud compute networks create vertex-networking-vpc --subnet-mode custom
    
  2. オンプレミス ネットワーク(onprem-vpc)をシミュレートするための VPC ネットワークを作成します。

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. onprem-vpc ネットワークで、プライマリ IPv4 範囲が 172.16.10.0/24 のサブネットを onprem-vpc-subnet1 という名前で作成します。

    gcloud compute networks subnets create onprem-vpc-subnet1 \
       --range 172.16.10.0/24 \
       --network onprem-vpc \
       --region us-central1
    
  4. Google Cloud コンソールで、[VPC ネットワーク] ページの [現在のプロジェクトのネットワーク] タブに移動します。

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

  5. VPC ネットワークのリストで、2 つのネットワーク(vertex-networking-vpconprem-vpc)が作成されていることを確認します。

  6. [VPC ネットワーク] ページで、[現在のプロジェクトのサブネット] タブをクリックします。

  7. VPC サブネットのリストで、onprem-vpc ネットワークに onprem-vpc-subnet1 サブネットが作成されていることを確認します。

ハイブリッド接続の構成

このセクションでは、相互に接続する 2 つの HA VPN ゲートウェイを作成します。1 つは vertex-networking-vpc VPC ネットワークにあります。もう 1 つは onprem-vpc VPC ネットワークにあります。各ゲートウェイには、Cloud Router と VPN トンネルのペアが含まれます。

HA VPN ゲートウェイの作成

  1. Cloud Shell で、vertex-networking-vpc VPC ネットワークに HA VPN ゲートウェイを作成します。

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. onprem-vpc VPC ネットワークに HA VPN ゲートウェイを作成します。

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Google Cloud コンソールで、[VPN] ページの [Cloud VPN ゲートウェイ] タブに移動します。

    [VPN] に移動

  4. VPN ゲートウェイのリストで、2 つのゲートウェイ(vertex-networking-vpn-gw1onprem-vpn-gw1)が作成され、それぞれに 2 つの IP アドレスがあることを確認します。

Cloud Router の作成

  1. Cloud Shell で、vertex-networking-vpc VPC ネットワークの Cloud Router を作成します。

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. onprem-vpc VPC ネットワークの Cloud Router を作成します。

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    

onprem-vpc VPC ネットワークに Cloud NAT ゲートウェイを追加する

このステップでは、onprem-vpc VPC ネットワークの Cloud Router に Cloud NAT ゲートウェイを追加します。Cloud NAT ゲートウェイは、外部 IP アドレスを持たない Compute Engine 仮想マシン(VM)インスタンスに送信接続を提供します。

  1. Cloud Shell で、Cloud NAT ゲートウェイを onprem-vpc-router1 Cloud Router に追加します。

    gcloud compute routers nats create us-central-cloudnat-onprem \
       --router=onprem-vpc-router1 \
       --auto-allocate-nat-external-ips \
       --nat-all-subnet-ip-ranges \
       --region us-central1
    
  2. Google Cloud コンソールで、[Cloud Router] ページに移動します。

    [Cloud Router] に移動

  3. Cloud Router のリストで、vertex-networking-vpc-router1onprem-vpc-router1 が作成されていることを確認します。新しい値を表示するには、 Google Cloud コンソールのブラウザタブを更新する必要があります。

  4. [Cloud Router] リストで onprem-vpc-router1 をクリックします。

  5. [ルーターの詳細] ページで、us-central-cloudnat-onprem Cloud NAT ゲートウェイが作成されていることを確認します。

VPN トンネルの作成

  1. vertex-networking-vpc ネットワークに、vertex-networking-vpc-tunnel0 という VPN トンネルを作成します。

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 0
    
  2. vertex-networking-vpc ネットワークに、vertex-networking-vpc-tunnel1 という VPN トンネルを作成します。

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 1
    
  3. onprem-vpc ネットワークに、onprem-vpc-tunnel0 という VPN トンネルを作成します。

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 0
    
  4. onprem-vpc ネットワークに、onprem-vpc-tunnel1 という VPN トンネルを作成します。

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 1
    
  5. Google Cloud コンソールで、[VPN] ページに移動します。

    [VPN] に移動

  6. VPN トンネルのリストで、4 つの VPN トンネルが作成されていることを確認します。

BGP セッションを確立する

Cloud Router は、Border Gateway Protocol(BGP)を使用して、VPC ネットワーク(この場合は vertex-networking-vpc)とオンプレミス ネットワーク(onprem-vpc で表される)間のルートを交換します。Cloud Router で、オンプレミス ルーターのインターフェースと BGP ピアを構成します。インターフェースと BGP ピア構成は、BGP セッションを形成します。このセクションでは、vertex-networking-vpc に 2 つ、onprem-vpc に 2 つの BGP セッションを作成します。

ルーター間のインターフェースと BGP ピアを構成すると、ルートの交換が自動的に開始されます。

vertex-networking-vpc の BGP セッションを確立する

  1. Cloud Shell で、vertex-networking-vpc ネットワークに vertex-networking-vpc-tunnel0 の BGP インターフェースを作成します。

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel0-to-onprem \
       --ip-address 169.254.0.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel0 \
       --region us-central1
    
  2. vertex-networking-vpc ネットワークに、bgp-onprem-tunnel0 の BGP ピアを作成します。

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel0 \
       --interface if-tunnel0-to-onprem \
       --peer-ip-address 169.254.0.2 \
       --peer-asn 65002 \
       --region us-central1
    
  3. vertex-networking-vpc ネットワークに、vertex-networking-vpc-tunnel1 の BGP インターフェースを作成します。

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel1-to-onprem \
       --ip-address 169.254.1.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel1 \
       --region us-central1
    
  4. vertex-networking-vpc ネットワークに、bgp-onprem-tunnel1 の BGP ピアを作成します。

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel1 \
       --interface if-tunnel1-to-onprem \
       --peer-ip-address 169.254.1.2 \
       --peer-asn 65002 \
       --region us-central1
    

onprem-vpc の BGP セッションを確立する

  1. onprem-vpc ネットワークに、onprem-vpc-tunnel0 の BGP インターフェースを作成します。

    gcloud compute routers add-interface onprem-vpc-router1 \
       --interface-name if-tunnel0-to-vertex-networking-vpc \
       --ip-address 169.254.0.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel0 \
       --region us-central1
    
  2. onprem-vpc ネットワークに、bgp-vertex-networking-vpc-tunnel0 の BGP ピアを作成します。

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel0 \
       --interface if-tunnel0-to-vertex-networking-vpc \
       --peer-ip-address 169.254.0.1 \
       --peer-asn 65001 \
       --region us-central1
    
  3. onprem-vpc ネットワークに、onprem-vpc-tunnel1 の BGP インターフェースを作成します。

    gcloud compute routers add-interface onprem-vpc-router1  \
       --interface-name if-tunnel1-to-vertex-networking-vpc \
       --ip-address 169.254.1.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel1 \
       --region us-central1
    
  4. onprem-vpc ネットワークに、bgp-vertex-networking-vpc-tunnel1 の BGP ピアを作成します。

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel1 \
       --interface if-tunnel1-to-vertex-networking-vpc \
       --peer-ip-address 169.254.1.1 \
       --peer-asn 65001 \
       --region us-central1
    

BGP セッションの作成を確認する

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

    [VPN] に移動

  2. VPN トンネルのリストで、各トンネルの [BGP セッションのステータス] 列の値が「BGP セッションを構成」から「BGP が確立されました」に変更されていることを確認します。新しい値を表示するには、 Google Cloud コンソールのブラウザタブを更新する必要があります。

Private Service Connect(PSC)エンドポイントを作成する

このセクションでは、onprem-vpc ネットワーク内の VM インスタンスが onprem-vpc ネットワークから GenAI API にアクセスするために使用する Google API の Private Service Connect(PSC)エンドポイントを作成します。

Private Service Connect(PSC)エンドポイントとは、onprem-vpc ネットワーク内のクライアントが直接アクセスできる内部 IP アドレスのことです。このエンドポイントは、PSC エンドポイントの IP アドレスと一致するネットワーク トラフィックを Google API のバンドル(具体的には all-apis バンドル)に転送する転送ルールをデプロイすることで作成されます。

PSC エンドポイントの IP アドレス(192.168.0.1)は、後のステップで、onprem-vpc ネットワークへのカスタム アドバタイズ ルートとして vertex-networking-vpc-router Cloud Router からアドバタイズされます。

  1. エンドポイントに割り振るグローバル内部 IP アドレスを予約します。

    gcloud compute addresses create psc-googleapi-ip \
       --global \
       --purpose=PRIVATE_SERVICE_CONNECT \
       --addresses=192.168.0.1 \
       --network=vertex-networking-vpc
    
  2. エンドポイントと、そのエンドポイントを Google API やサービスに接続する転送ルールを作成します。

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. 構成した PSC エンドポイントを一覧表示し、pscvertex エンドポイントが作成されたことを確認します。

    gcloud compute forwarding-rules list  \
       --filter target="(all-apis OR vpc-sc)" --global
    
  4. 構成された PSC エンドポイントの詳細を取得し、IP アドレスが 192.168.0.1 であることを確認します。

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

vertex-networking-vpc のカスタムルート アドバタイズを作成する

このセクションでは、vertex-networking-vpc-router1vertex-networking-vpc の Cloud Router)用にカスタム アドバタイズ ルートを作成して、PSC エンドポイントの IP アドレスを onprem-vpc ネットワークにアドバタイズします。

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

    [Cloud Router] に移動

  2. [Cloud Router] リストで vertex-networking-vpc-router1 をクリックします。

  3. [ルーターの詳細] ページで、[ 編集] をクリックします。

  4. [アドバタイズされたルート] セクションの [ルート] で、[カスタムルートの作成] を選択します。

  5. [Cloud Router に表示されるすべてのサブネットにアドバタイズする] チェックボックスをオンにして、Cloud Router に利用可能なサブネットのアドバタイジングを継続します。このオプションを有効にすると、デフォルトのアドバタイズ モードでの Cloud Router の動作が模倣されます。

  6. [カスタムルートの追加] をクリックします。

  7. [ソース] で [カスタム IP 範囲] を選択します。

  8. [IP アドレス範囲] には、次の IP アドレスを入力します。

    192.168.0.1
    
  9. [説明] には、次のテキストを入力します。

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. [完了] をクリックし、[保存] をクリックします。

onprem-vpc がアドバタイズされたルートを学習したことを確認する

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

    [ルート] に移動

  2. [適用されているルート] タブで、次の操作を行います。

    1. [ネットワーク] には [onprem-vpc] を選択します。
    2. [リージョン] には us-central1 (Iowa) を選択します。
    3. [表示] をクリックします。
    4. ルートのリストで、名前が onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 および onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1 で始まるエントリがあり、その両方の [送信先 IP 範囲] が 192.168.0.1/32 であることを確認します(192.168.0.1 は PSC エンドポイントの IP アドレスです)。

      これらのエントリがすぐに表示されない場合は、数分待ってから、 Google Cloud コンソールのブラウザタブを更新してください。

オンプレミス ネットワークで VM インスタンスを構成する

このセクションでは、onprem-vpc VPC ネットワークに Compute Engine VM インスタンスを作成します。この VM インスタンスは、PSC エンドポイントに接続して GenAI AI API にアクセスするオンプレミス クライアントをシミュレートします。

ユーザーが管理するサービス アカウントを作成する

このチュートリアルでは、Compute Engine と IAM のベスト プラクティスに従ってユーザー管理のサービス アカウントを作成します。

  1. Cloud Shell で、次のコマンドを実行します。ここで、PROJECT_ID はプロジェクト ID に置き換えます。

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. サービス アカウントを作成します。

    gcloud iam service-accounts create user-managed-sa
    
  3. サービス アカウントに Vertex AI ユーザー(roles/aiplatform.userの IAM ロールを割り当てます。

    gcloud projects add-iam-policy-binding $projectid \
       --member="serviceAccount:user-managed-sa@$projectid.iam.gserviceaccount.com" \
       --role="roles/aiplatform.user"
    

on-prem-client VM インスタンスを作成する

このステップでは、Private Service Connect IP アドレス(192.168.0.1)を使用して HA VPN 経由で Google API にアクセスする VM インスタンスを作成します。

Identity-Aware Proxy(IAP)に VM インスタンスへの接続を許可するには、次のファイアウォール ルールを作成します。

  • IAP からアクセスできるようにするすべての VM インスタンスに適用されます(この例では on-prem-client のみ)。
  • IP 範囲 35.235.240.0/20 からポート 22 を経由する TCP トラフィックを許可します。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。
  1. on-prem-client VM インスタンスを作成します。次のコマンドでは、tcpdump パッケージと dnsutils パッケージもインストールされます。これらのパッケージには、後で API リクエストを確認するために使用する tcpdump ユーティリティと dig ユーティリティが含まれています。

    gcloud compute instances create on-prem-client \
       --zone=us-central1-a \
       --image-family=debian-11 \
       --image-project=debian-cloud \
       --subnet=onprem-vpc-subnet1 \
       --scopes=https://www.googleapis.com/auth/cloud-platform \
       --no-address \
       --shielded-secure-boot \
       --service-account=user-managed-sa@$projectid.iam.gserviceaccount.com \
       --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install tcpdump dnsutils -y"
    
  2. ssh-iap-on-prem-vpc という名前の IAP ファイアウォール ルールを作成します。

    gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
       --network onprem-vpc \
       --allow tcp:22 \
       --source-ranges=35.235.240.0/20
    

Vertex AI の生成 AI への公共インターネット アクセスを確認する

このセクションでは、Identity-Aware Proxy を使用して on-prem-client VM インスタンスにログインします。次に、パブリック Vertex AI ドメイン(us-central1-aiplatform.googleapis.com)に対して dig コマンドを実行し、Vertex AI API(GenAI を含む)へのパブリック接続を確認します。

  1. Cloud Shell(タブ 1)で次のコマンドを実行します。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. IAP を使用して on-prem-client VM インスタンスにログインします。

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  3. dig コマンドを実行します。

    dig us-central1-aiplatform.googleapis.com
    

    次のような dig の出力が表示されるはずです。ここで、ANSWER SECTION の IP アドレスは、パブリック IP アドレスです。

    ; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;us-central1.aiplatfom.googleapis.com. IN A
    
    ;; ANSWER SECTION:
    us-central1.aiplatfom.googleapis.com. 300 IN A  173.194.192.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.152.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.219.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.146.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.147.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.125.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.136.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.148.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.200.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.234.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.171.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  108.177.112.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.128.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.6.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.212.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  74.125.124.95
    
    ;; Query time: 8 msec
    ;; SERVER: 169.254.169.254#53(169.254.169.254)
    ;; WHEN: Wed Sep 27 04:10:16 UTC 2023
    ;; MSG SIZE  rcvd: 321
    

Vertex AI の生成 AI へのプライベート アクセスを構成して確認する

このセクションでは、Vertex AI の生成 AI へのプライベート アクセスを構成して、パブリック サービス エンドポイント(us-central1-aiplatform.googleapis.com)へリクエストを送信すると、それが PSC エンドポイントにリダイレクトされるようにします。PSC エンドポイントは、リクエストを次のように転送します。

PSC エンドポイントを指すように /etc/hosts ファイルを更新する

このステップでは、/etc/hosts ファイルに、パブリック サービス エンドポイント(us-central1-aiplatform.googleapis.com)に送信されたリクエストを PSC エンドポイント(192.168.0.1)にリダイレクトする行を追加します。

  1. on-prem-client VM インスタンス(タブ 1)で、テキスト エディタ(vimnano など)を使用して /etc/hosts ファイルを開きます。

    sudo vim /etc/hosts
    
  2. 次の行をファイルに追加します。

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    この行では、PSC エンドポイントの IP アドレス(192.168.0.1)を Vertex AI Google API の完全修飾ドメイン名(us-central1-aiplatform.googleapis.com)に割り当てています。

    編集されたファイルは、次のようになります。

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    192.168.0.1 us-central1-aiplatform.googleapis.com  # Added by you
    172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client  # Added by Google
    169.254.169.254 metadata.google.internal  # Added by Google
    
  3. 次のようにファイルを保存します。

    • vim を使用している場合は、Esc キーを押してから、「:wq」と入力してファイルを保存し、終了します。
    • nano を使用している場合は、「Control+O」と入力して Enter を押してファイルを保存し、「Control+X」と入力して終了します。
  4. 次のように Vertex AI エンドポイントに対して ping を実行します。

    ping us-central1-aiplatform.googleapis.com
    

    ping コマンドでは、次の出力が返されます。192.168.0.1 は、PSC エンドポイントの IP アドレスです。

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. Control+C」と入力して ping を終了します。

  6. エンドポイントにオンライン予測リクエストを送信する際は、次の tcpdump コマンドを実行して DNS の解決と IP データパスを確認します。

     sudo tcpdump -i any port 53 -n or host 192.168.0.1
    

プライベート リクエストを作成する

このステップでは、GenAI REST API に送信するサンプル curl リクエストのペイロードを含む、request.json という名前のテキスト ファイルを作成します。サンプル リクエストの詳細については、リクエストの例をご覧ください。

  1. タブ 1 で tcpdump コマンドを実行したまま、Cloud Shell で [新しいタブを開く] をクリックして、新しい Cloud Shell セッション(タブ 2)を開きます。

  2. 新しい Cloud Shell セッション(タブ 2)で、次のコマンドを実行します。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. IAP を使用して on-prem-client VM インスタンスにログインします。

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  4. 次のコマンドを実行します。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. テキスト エディタ(vimnano など)を使用して、次のテキストを含む request.json という名前の新しいファイルを作成します。

    {
       "instances": [
          { "prompt": "Give me ten interview questions for the role of program manager."}
       ],
       "parameters": {
          "temperature": 0.2,
          "maxOutputTokens": 256,
          "topK": 40,
          "topP": 0.95
       }
    }
    
  6. 次のコマンドを実行して、PSC エンドポイントにリクエストを送信します。このエンドポイントは、そのリクエストを GenAI API に転送します。エンドポイントはレスポンスを受信すると、そのレスポンスを on-prem-client VM に戻します。

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d @request.json \
       "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/text-bison:predict"
    

    次の例のようなレスポンスが表示されるはずです。

    {
       "predictions": [
          {
          "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**",
          "citationMetadata": {
             "citations": []
          },
          "safetyAttributes": {
             "categories": [
             "Finance",
             "Health"
             ],
             "blocked": false,
             "scores": [
                0.6,
                0.1
             ]
          }
          }
       ],
       "metadata": {
          "tokenMetadata": {
             "outputTokenCount": {
                "totalBillableCharacters": 505,
                "totalTokens": 153
             },
             "inputTokenCount": {
                "totalBillableCharacters": 54,
                "totalTokens": 12
             }
          }
       }
    }
    
  7. タブ 1 で、PSC エンドポイントの IP アドレス(192.168.0.1)が、on-prem-client VM インスタンス(サブネット 172.16.10.0/28)から Vertex AI API へのアクセスに使用されたことを確認します。

    Cloud Shell のタブ 1 の tcpdump ターミナルから、us-central1-aiplatform.googleapis.com への DNS ルックアップが不要であることが確認できます。/etc/hosts ファイルに追加したラインが優先され、PSC エンドポイントの IP アドレス(192.168.0.1)はデータパスで使用されるからです。

    次のような tcpdump の出力が表示されるはずです。

    23:48:49.938797 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39
    23:48:49.938947 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24
    23:48:49.939839 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0
    23:48:49.940292 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940437 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940442 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0
    23:48:49.941193 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
    

クリーンアップ

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

プロジェクト内の個々のリソースを削除するには、Cloud Shell で次のコマンドを実行します。

   projectid=PROJECT_ID
   gcloud config set project ${projectid}
   gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
   gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
   gcloud iam service-accounts delete user-managed-sa@$projectid.iam.gserviceaccount.com --quiet
   gcloud compute forwarding-rules delete pscvertex --global --quiet
   gcloud compute addresses delete psc-googleapi-ip --global --quiet
   gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
   gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
   gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
   gcloud compute networks delete onprem-vpc --quiet
   gcloud compute networks delete vertex-networking-vpc --quiet

次のステップ