オンプレミス ホストは、公共のインターネット経由、または 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 に詳しければ助けになりますが、必須ではありません。
目標
- 上の図に示すように、2 つの VPC ネットワークを作成します。
- 一つ(
onprem-vpc
)は、オンプレミス ネットワークを表します。 - もう一つ(
vertex-networking-vpc
)は、Vertex AI での生成 AI 用 REST API にアクセスするためのものです。
- 一つ(
- HA VPN ゲートウェイ、Cloud VPN トンネル、Cloud Router をデプロイして、
vertex-networking-vpc
とonprem-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 の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- プロジェクト オーナーでない場合は、プロジェクト オーナーから
roles/resourcemanager.projectIamAdmin
IAM ロールを付与してもらう必要があります。このロールは、自分自身とサービス アカウントに、IAM ロールと権限を付与するために必要です。 - このチュートリアルで説明するコマンドを実行するために、Cloud Shell を開きます。Cloud Shell は Google Cloud のインタラクティブなシェル環境であり、ウェブブラウザからプロジェクトやリソースを管理できます。
- Cloud Shell で現在のプロジェクトを Google Cloud プロジェクト ID に設定してから、同じプロジェクト ID を
projectid
シェル変数に保存します。 PROJECT_ID は、実際のプロジェクト ID に置き換えます。プロジェクト ID は Google Cloud コンソールでも確認できます。詳細については、プロジェクト ID を確認するをご覧ください。projectid="PROJECT_ID" gcloud config set project ${projectid}
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
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_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
-
Enable the DNS, IAM, Compute Engine, Service Usage, and Vertex AI APIs:
gcloud services enable dns.googleapis.com
iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com
2 つの VPC ネットワーク(vertex-networking-vpc
と onprem-vpc
)を作成する
このセクションでは、2 つの VPC ネットワークを作成します。1 つは Vertex AI の生成 AI(別名 GenAI)API にアクセスするためのプライマリ ネットワークで、もう 1 つはオンプレミス ネットワークをシミュレートするためのネットワークです。
VPC ネットワークを作成する
GenAI API にアクセスするための VPC ネットワーク(
vertex-networking-vpc
)を作成します。gcloud compute networks create vertex-networking-vpc --subnet-mode custom
オンプレミス ネットワーク(
onprem-vpc
)をシミュレートするための VPC ネットワークを作成します。gcloud compute networks create onprem-vpc --subnet-mode custom
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
Google Cloud コンソールで、[VPC ネットワーク] ページの [現在のプロジェクトのネットワーク] タブに移動します。
VPC ネットワークのリストで、2 つのネットワーク(
vertex-networking-vpc
とonprem-vpc
)が作成されていることを確認します。[VPC ネットワーク] ページで、[現在のプロジェクトのサブネット] タブをクリックします。
VPC サブネットのリストで、
onprem-vpc
ネットワークにonprem-vpc-subnet1
サブネットが作成されていることを確認します。
ハイブリッド接続の構成
このセクションでは、相互に接続する 2 つの HA VPN ゲートウェイを作成します。1 つは vertex-networking-vpc
VPC ネットワークにあります。もう 1 つは onprem-vpc
VPC ネットワークにあります。各ゲートウェイには、Cloud Router と VPN トンネルのペアが含まれます。
HA VPN ゲートウェイの作成
Cloud Shell で、
vertex-networking-vpc
VPC ネットワークに HA VPN ゲートウェイを作成します。gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
onprem-vpc
VPC ネットワークに HA VPN ゲートウェイを作成します。gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Google Cloud コンソールで、[VPN] ページの [Cloud VPN ゲートウェイ] タブに移動します。
VPN ゲートウェイのリストで、2 つのゲートウェイ(
vertex-networking-vpn-gw1
とonprem-vpn-gw1
)が作成され、それぞれに 2 つの IP アドレスがあることを確認します。
Cloud Router の作成
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
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)インスタンスに送信接続を提供します。
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
Google Cloud コンソールで [Cloud Router] ページに移動します。
Cloud Router のリストで、
vertex-networking-vpc-router1
とonprem-vpc-router1
が作成されていることを確認します。新しい値を表示するには、Google Cloud コンソールのブラウザタブを更新する必要があります。[Cloud Router] リストで
onprem-vpc-router1
をクリックします。[ルーターの詳細] ページで、
us-central-cloudnat-onprem
Cloud NAT ゲートウェイが作成されていることを確認します。
VPN トンネルの作成
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
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
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
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
Google Cloud コンソールで、[VPN] ページに移動します。
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 セッションを確立する
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
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
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
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 セッションを確立する
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
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
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
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 セッションの作成を確認する
Google Cloud コンソールで、[VPN] ページに移動します。
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 からアドバタイズされます。
エンドポイントに割り振るグローバル内部 IP アドレスを予約します。
gcloud compute addresses create psc-googleapi-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.0.1 \ --network=vertex-networking-vpc
エンドポイントと、そのエンドポイントを Google API やサービスに接続する転送ルールを作成します。
gcloud compute forwarding-rules create pscvertex \ --global \ --network=vertex-networking-vpc\ --address=psc-googleapi-ip \ --target-google-apis-bundle=all-apis
構成した PSC エンドポイントを一覧表示し、
pscvertex
エンドポイントが作成されたことを確認します。gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
構成された PSC エンドポイントの詳細を取得し、IP アドレスが
192.168.0.1
であることを確認します。gcloud compute forwarding-rules describe \ pscvertex --global
vertex-networking-vpc
のカスタムルート アドバタイズを作成する
このセクションでは、vertex-networking-vpc-router1
(vertex-networking-vpc
の Cloud Router)用にカスタム アドバタイズ ルートを作成して、PSC エンドポイントの IP アドレスを onprem-vpc
ネットワークにアドバタイズします。
Google Cloud コンソールで [Cloud Router] ページに移動します。
[Cloud Router] リストで
vertex-networking-vpc-router1
をクリックします。[ルーターの詳細] ページで、[
編集] をクリックします。[アドバタイズされたルート] セクションの [ルート] で、[カスタムルートの作成] を選択します。
[Cloud Router に表示されるすべてのサブネットにアドバタイズする] チェックボックスをオンにして、Cloud Router に利用可能なサブネットのアドバタイジングを継続します。このオプションを有効にすると、デフォルトのアドバタイズ モードでの Cloud Router の動作が模倣されます。
[カスタムルートの追加] をクリックします。
[ソース] で [カスタム IP 範囲] を選択します。
[IP アドレス範囲] には、次の IP アドレスを入力します。
192.168.0.1
[説明] には、次のテキストを入力します。
Custom route to advertise Private Service Connect endpoint IP address
[完了] をクリックし、[保存] をクリックします。
onprem-vpc
がアドバタイズされたルートを学習したことを確認する
Google Cloud コンソールで、[ルート] ページに移動します。
[適用されているルート] タブで、次の操作を行います。
- [ネットワーク] には [
onprem-vpc
] を選択します。 - [リージョン] には
us-central1 (Iowa)
を選択します。 - [表示] をクリックします。
ルートのリストで、名前が
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 のベスト プラクティスに従ってユーザー管理のサービス アカウントを作成します。
Cloud Shell で、次のコマンドを実行します。ここで、PROJECT_ID はプロジェクト ID に置き換えます。
projectid=PROJECT_ID gcloud config set project ${projectid}
サービス アカウントを作成します。
gcloud iam service-accounts create user-managed-sa
サービス アカウントに 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 アドレスが含まれています。
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"
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 を含む)へのパブリック接続を確認します。
Cloud Shell(タブ 1)で次のコマンドを実行します。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。
projectid=PROJECT_ID gcloud config set project ${projectid}
IAP を使用して
on-prem-client
VM インスタンスにログインします。gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
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
)にリダイレクトする行を追加します。
on-prem-client
VM インスタンス(タブ 1)で、テキスト エディタ(vim
やnano
など)を使用して/etc/hosts
ファイルを開きます。sudo vim /etc/hosts
次の行をファイルに追加します。
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
次のようにファイルを保存します。
vim
を使用している場合は、Esc
キーを押してから、「:wq
」と入力してファイルを保存し、終了します。nano
を使用している場合は、「Control+O
」と入力してEnter
を押してファイルを保存し、「Control+X
」と入力して終了します。
次のように 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.
「
Control+C
」と入力してping
を終了します。エンドポイントにオンライン予測リクエストを送信する際は、次の
tcpdump
コマンドを実行して DNS の解決と IP データパスを確認します。sudo tcpdump -i any port 53 -n or host 192.168.0.1
プライベート リクエストを作成する
このステップでは、GenAI REST API に送信するサンプル curl
リクエストのペイロードを含む、request.json
という名前のテキスト ファイルを作成します。サンプル リクエストの詳細については、リクエストの例をご覧ください。
タブ 1 で
tcpdump
コマンドを実行したまま、Cloud Shell で [新しいタブを開く] をクリックして、新しい Cloud Shell セッション(タブ 2)を開きます。新しい Cloud Shell セッション(タブ 2)で、次のコマンドを実行します。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。
projectid=PROJECT_ID gcloud config set project ${projectid}
IAP を使用して
on-prem-client
VM インスタンスにログインします。gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
次のコマンドを実行します。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。
projectid=PROJECT_ID gcloud config set project ${projectid}
テキスト エディタ(
vim
やnano
など)を使用して、次のテキストを含む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 } }
次のコマンドを実行して、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 } } } }
タブ 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
次のステップ
- Vertex AI のエンドポイントとサービスにアクセスするためのエンタープライズ ネットワーキング オプションについて学習する。
- エンドポイントを通じて公開サービスにアクセスする方法を確認する。
- Private Service Connect の仕組みと、大きなパフォーマンス上のメリットが得られる理由を確認する。
- エンドポイントを介した Google API へのアクセスについて詳細を確認する。
- 大規模な環境と本番環境で
/etc/hosts
ファイルを更新せずに DNS 転送ゾーンを使用する方法と理由を確認する。 - カスタム アドバタイズ ルートの詳細を確認する。