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. Google Cloud コンソールでプロジェクトの選択ページに移動します。

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

  2. Google Cloud プロジェクトを選択または作成します。

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  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. Google アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。 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

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • PROJECT_ID は、実際のプロジェクト ID に置き換えます。
    • EMAIL_ADDRESS は実際のメールアドレスに置き換えます。
    • ROLE は、個々のロールに置き換えます。
  8. DNS、IAM、Compute Engine、Service Usage、Vertex AI API を有効にします。

    gcloud services enable dns.googleapis.comiam.googleapis.comcompute.googleapis.comserviceusage.googleapis.comaiplatform.googleapis.com

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=http://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 \
       "http://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

次のステップ