Agentspace カスタム ドメイン

この Codelab について
schedule45 分
subject最終更新: 2025年5月27日
account_circle作成者: Deepak Michael, Lorin Price, Zach Seils

このドキュメントでは、AgentSpace にアクセスするようにカスタム ドメインを構成するためのリファレンス アーキテクチャについて説明します。ユーザーは、Agentspace アプリの作成時に割り当てられた Google 管理の URL の代わりに、カスタム ドメインを使用できます。この Codelab では、nip.io ドメインを使用して Agentspace のカレンダーとドライブ アプリケーションにアクセスする方法について説明します。nip.io は、任意の IP アドレスにワイルドカード DNS を提供する無料のオープンソース サービスです。基本的に、独自の DNS サーバーをセットアップしたり、/etc/hosts ファイルを変更したりすることなく、特定の IP アドレスに解決するホスト名を作成できます。

独自のドメインを使用することをおすすめしますが、デモ用にチュートリアルでは nip.io を使用します。

次の図(図 1)に示すデプロイ シナリオでは、AgentSpace は、Google が管理する公開 URL 経由でアクセスされるカレンダー アプリケーションを含むデータストアを公開しています。

図 1

27591afa06891dcb.png

データストアとその後のアプリケーションの継続的な増加により、以下のデプロイ シナリオ(図 2)に示すように、Google が管理する公開 URL の管理がさらに必要になり、Agentspace アプリケーションと URL が 1 対 1 でマッピングされます。

図 2.

7e31bfae7ac56b22.png

カスタム ドメインを使用すると、さまざまな AgentSpace アプリケーションをユーザー指定の単一のカスタマー ドメインにマッピングできます。この機能を使用すると、各 Agentspace アプリケーションに特定の URL パスを関連付けることができ、以下のデプロイ シナリオ(図 3)に示すように、より柔軟な構成が可能になります。たとえば、カスタマー マネージド ドメイン agentspace.cosmopup.com は、パスルールに分割され、それぞれが特定の Agentspace アプリケーションにマッピングされます。次に例を示します。

  • agentspace.cosmopup.com/drive-app(Workspace ドライブの Agentspace アプリケーションにマッピング)
  • agentspace.cosmopup.com/calendar-app: Workspace カレンダーの Agentspace アプリケーションにマッピングされます。

URL マップを使用して構成された外部アプリケーション ロードバランサの ホストルールとパスルールは、カスタム ドメインを Google マネージド URL にマッピングするロジックを制御します。サンプルの agentspace.cosmopup.com/drive-app を使用して、次の機能を実行します。

  • カスタム ドメインのホストパス agentspace.cosmopup.com/drive-app がロードバランサによって受信される
  • URL マップが、ホストルールとパスルールの高度な一致用に構成されている
  • ホスト agentspace.cosmopup.com はパスの照合とリライトの対象
  • カスタム ドメインのホストパス agentspace.cosmopup.com/drive-app は UrlRewrite の対象
  • PathPrefixRewrite は Agentspace パス: /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd です。
  • hostRewrite は Agentspace ホスト(vertexaisearch.cloud.google.com)です。
  • バックエンド サービスに転送する前に書き換えオペレーションが実行される
  • バックエンド サービスは、Agentspace URL に基づいてドライブアプリ アプリケーションにトラフィックを転送します。

図 3

f8d84ec5fef9af5a.png

学習内容

  • グローバル外部アプリケーション ロードバランサを作成する
  • カスタム ドメインと書き換えオペレーションを使用してバックエンド サービスの書き換えを作成し、Agentspace アプリケーションに書き換える
  • nip.io と Cloud DNS を統合してカスタム ドメインを作成する方法
  • Agentspace カスタム ドメインへのアクセスを検証する方法

必要なもの

  • オーナー権限を持つ Google Cloud プロジェクト
  • 既存の Agentspace アプリケーションの URL
  • 自己所有のカスタム ドメイン(省略可)
  • 証明書 - 自己署名または Google マネージド

2. 作成するアプリの概要

高度なトラフィック管理機能を備えたグローバル外部アプリケーション ロードバランサを設定し、ホストとパスの書き換えを使用して Agentspace アプリケーションのカスタム ドメイン パス マッチを有効にします。デプロイしたら、次の操作を行い、Agentspace アプリケーションへのアクセスを確認します。

  • ウェブブラウザを開き、カスタム ドメインと指定したパスに移動して、Agentspace アプリケーションにアクセスします。

c62938d91e00ffa7.png

3. ネットワークの要件

ネットワーク要件の内訳は次のとおりです。

コンポーネント

説明

VPC(agentspace-vpc)

カスタムモード VPC

インターネット NEG

Agentspace の Google マネージド FQDN(vertexaisearch.cloud.google.com)を表す FQDN として構成され、ロードバランサの外部バックエンドを定義するために使用されるリソース。インターネット FQDN は、解決のために VPC 内で DNS ルックアップを実行します。

バックエンド サービス

バックエンド サービスは、ロードバランサとバックエンド リソース間のブリッジとして機能します。このチュートリアルでは、バックエンド サービスがインターネット NEG に関連付けられています。

証明書

Google Cloud でアプリケーション ロードバランサの証明書を構成するには、Certificate Manager サービスと、Google マネージド またはセルフマネージド SSL 証明書を使用します。

Cloud DNS

Cloud DNS パブリック ゾーンは、外部アプリケーション ロードバランサの外部 IP を nip.io(agentspace.externalip.nip.io)に解決するために使用されます。または、カスタム ドメインと、ロードバランサの IP アドレスで構成される A レコードを使用します。

4. Codelab トポロジ

c62938d91e00ffa7.png

f712980116d973a3.png

5. 設定と要件

セルフペース型の環境設定

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

Cloud Shell を起動する

Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

55efc1aaa7a4d3ad.png

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

7ffe5cbb04455448.png

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。

6. 始める前に

API を有効にする

Cloud Shell で、プロジェクト ID が設定されていることを確認します。

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region

必要なサービスをすべて有効にします。

gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com

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

VPC ネットワーク

Cloud Shell で次の操作を行います。

gcloud compute networks create agentspace-vpc --subnet-mode custom

8. ロードバランサ コンポーネントを設定する

ロードバランサの外部 IP アドレスを予約する

Cloud Shell で、ロードバランサに外部 IP アドレスを予約します。

gcloud compute addresses create external-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Cloud Shell で、予約済みの IP アドレスを表示します。

gcloud compute addresses describe external-ip \
  --global | grep -i address:

出力例:

user@cloudshell$ gcloud compute addresses describe external-ip \
  --global | grep -i address:
address: 34.54.158.206

インターネット NEG を設定する

インターネット NEG を作成し、–network-endpoint-type を internet-fqdn-port(外部バックエンドに到達可能なホスト名とポート)に設定します。Agentspace を解決するために、FQDN vertexaisearch.cloud.google.com とポート 443 が使用されます。

gcloud compute network-endpoint-groups create agentspace-ineg \
    --network-endpoint-type="internet-fqdn-port" \
    --global
gcloud compute network-endpoint-groups update agentspace-ineg \
    --add-endpoint="fqdn=vertexaisearch.cloud.google.com,port=443" \
    --global

ロードバランサを作成する

Cloud Shell で次の操作を行います。

gcloud compute backend-services create agentspace-ineg-bes \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global
gcloud compute backend-services add-backend agentspace-ineg-bes \
      --network-endpoint-group=agentspace-ineg \
      --global-network-endpoint-group \
      --global  

証明書を作成する

これで、インターネット ネガティブとバックエンド サービスを作成しました。次のセクションでは、HTTPs ターゲット プロキシで使用する証明書リソースを作成する必要があります。SSL 証明書リソースは、Google マネージド SSL 証明書またはセルフマネージド SSL 証明書を使用して作成できます。Google Cloud が自動的に取得、管理、更新するため、Google マネージド証明書の使用をおすすめします。

このチュートリアルで使用するグローバル外部アプリケーション ロードバランサでサポートされている証明書の詳細については、以下をご覧ください。

SSL 証明書の概要 | ロード バランシング | Google Cloud

次のセクションでは、自己署名証明書を作成します(代わりに Google マネージド証明書を使用することもできます)。この証明書では、共通名を完全修飾ドメイン名(agentspace.YOUR-EXTERNAL-IP.nip.io)にマッピングする必要があります。これは、前に生成したロードバランサの外部 IP アドレスに対応しています。例を次に示します。

共通名: agentspace.34.54.158.206.nip.io

Cloud Shell で秘密鍵を作成します。

openssl genrsa -out private-key-file.pem 2048

Cloud Shell で、PEM ファイルの生成に使用する config.txt ファイルを作成します。DNS 1 エントリ agentspace.YOUR-EXTERNAL-IP.nip.io に完全修飾ドメイン名を指定します。たとえば、次の構成の agentspace.34.54.158.206.nip.io などです。

cat <<'EOF' >config.txt
[req]
default_bits              = 2048
req_extensions            = extension_requirements
distinguished_name        = dn_requirements

[extension_requirements]
basicConstraints          = CA:FALSE
keyUsage                  = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName            = @sans_list

[dn_requirements]
countryName               = Country Name (2 letter code)
stateOrProvinceName       = State or Province Name (full name)
localityName              = Locality Name (eg, city)
organizationName          = Organization Name (eg, company)
organizationalUnitName    = Organizational Unit Name (eg, section)
commonName                = Common Name (e.g. server FQDN or YOUR name)
emailAddress              = Email Address

[sans_list]
DNS.1                     = agentspace.YOUR-EXTERNAL-IP.nip.io

EOF

Cloud Shell で、config.txt と private-key-file.pem が生成されていることを確認します。

user@cloudshell:$ ls
config.txt  private-key-file.pem

Cloud Shell で次の操作を行います。

sudo openssl req -new -key private-key-file.pem \
    -out csr.pem \
    -config config.txt

例:

user@cloudshell:$ sudo openssl req -new -key private-key-file.pem \
    -out csr.pem \
    -config config.txt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name)[]:agentspace.34.54.158.206.nip.io
Email Address []:

Cloud Shell で、証明書署名に必要な PEM の作成を確認します。

user@cloudshell:$ ls
config.txt  csr.pem  private-key-file.pem

Cloud Shell で証明書を生成します。

sudo openssl x509 -req \
    -signkey private-key-file.pem \
    -in csr.pem \
    -out cert.cert \
    -extfile config.txt \
    -extensions extension_requirements \
    -days 365

出力例:

user@cloudshell:$ sudo openssl x509 -req \
    -signkey private-key-file.pem \
    -in csr.pem \
    -out cert.cert \
    -extfile config.txt \
    -extensions extension_requirements \
    -days 365
Certificate request self-signature ok
subject=CN = agentspace.34.54.158.206.nip.io

Cloud Shell で、ファイル cert.cert の作成を確認します。

user@cloudshell:$ ls
cert.cert  config.txt  csr.pem  private-key-file.pem

外部ロードバランサに関連付ける証明書リソースを作成します。証明書パラメータと秘密鍵パラメータは、特定のファイル名に置き換えます。

Cloud Shell で次の操作を行います。

gcloud compute ssl-certificates create agentspace-self-signed-cert \
    --certificate=cert.cert \
    --private-key=private-key-file.pem \
    --global

Cloud Shell で次の操作を行います。

gcloud compute url-maps create agentspace-lb \
      --default-service=agentspace-ineg-bes \
      --global  

Cloud Shell で次の操作を行います。

gcloud compute target-https-proxies create https-proxy \
      --ssl-certificates=agentspace-self-signed-cert \
      --url-map=agentspace-lb \
      --global 

Cloud Shell で次の操作を行います。

gcloud compute forwarding-rules create agentspace-fr \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=external-ip \
      --target-https-proxy=https-proxy \
      --global \
      --ports=443

9. パブリック DNS ゾーンを作成する

次のセクションでは、nip.io が外部ロードバランサの IP アドレスを解決するために使用するパブリック DNS ゾーンを作成します。

Cloud Shell で、次の操作を行い、外部ロードバランサの IP アドレスの変数を作成します。

externalip=<YOUR-EXTERNAL-IP>
echo $externalip

Cloud Shell で次の操作を行います。

gcloud dns --project=$project managed-zones create agentspace-dns --description="Agentspace public dns" --dns-name="$externalip.nip.io." --visibility="public"

Cloud Shell で次の操作を行います。

gcloud dns --project=$project record-sets create agentspace.$externalip.nip.io. --zone="agentspace-dns" --type="A" --ttl="300" --rrdatas="$externalip"

10. OAuth 認証情報

次のセクションでは、Google マネージド URL を oauth-redirect にリダイレクトして認証を行うウェブ アプリケーション用の OAuth 認証情報を作成します。生成された認証情報は、チュートリアルでは必要ありません。

Oauth の詳細については、以下をご覧ください。

Google カレンダーと Gmail のアクションを追加する | Google Agentspace

OAuth アプリを作成し、スコープを追加する

  1. [API とサービス] > [OAuth 同意画面] に移動します。OAuth 同意画面に移動する
  2. [内部] を選択し、[作成] をクリックします。
  3. OAuth アプリの名前を入力します。
  4. ユーザー サポートのメールアドレスを入力します。
  5. デベロッパーの連絡先情報を入力します。
  6. [保存して次へ] をクリックします。

OAuth クライアント ID を作成する

この手順では、Google Cloud アクション用の新しい OAuth クライアント ID を作成する方法について説明します。この OAuth クライアント ID とシークレットは、他の Google Cloud アクションにも使用できます。Google Cloud アクション用の Google Cloud OAuth クライアント ID がすでにある場合は、新しいクライアント ID を作成する代わりに、そのクライアント ID とシークレットを Google カレンダー アクションに使用できます。

  1. [認証情報] ページに移動し、[認証情報を作成] > [OAuth クライアント ID] をクリックします。
  2. [ウェブ アプリケーション] を選択します。
  3. クライアント ID の名前を入力します。
  4. [URI を追加] をクリックし、次の URI を入力します。https://vertexaisearch.cloud.google.com/oauth-redirect
  5. [作成] をクリックし、次の情報をコピーします。
  • クライアント ID
  • クライアント シークレット

11. Agentspace アプリケーションの URL を特定する

次の手順では、Google によって生成され、各アプリケーションの Agentspace にマッピングされる Google 管理の Agentspace 公開 URL を特定します。URL の出力は、リファレンス アーキテクチャに基づく例であるため、URL が正確であることを確認する必要があります。

ウェブアプリへのリンクは、アプリごとに保存してください。

カレンダー アプリ

Agentspace ウェブ URL: https://vertexaisearch.cloud.google.com/us/home/cid/bb6b8b27-939b-494d-9227-45903bb8afcf

b90c67aafd825ccd.png

ドライブ アプリケーション

Agentspace ウェブの URL:

https://vertexaisearch.cloud.google.com/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd

f8f850425fd11190.png

12. 詳細なホストとパスのルールを作成する

次のセクションでは、ロードバランサのルーティング ルールを更新して、Cloud コンソールを使用してホストルールとパスルールを定義するオプションを有効にします。次の表に、環境に基づいて更新するカスタム値を示します(上から順に)。

カスタム値

チュートリアルに基づく例

ホスト

agentspace.YOUR-EXTERNAL-IP.nip.io

agentspace.34.54.158.206.nip.io

defaultService

projects/<projectid>/global/backendServices/agentspace-ineg-bes

スクリーンショットを表示

prefixMatch

/<Agentspace アプリ#1 の名前>

/drive-app

backendService

projects/<projectid>/global/backendServices/agentspace-ineg-bes

スクリーンショットを表示

pathPrefixRewrite

/<アプリ#1 の Agentspace URL パス>

/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd

hostRewrite

vertexaisearch.cloud.google.com

vertexaisearch.cloud.google.com

prefixMatch

/<Agentspace アプリ#2 の名前>

/calendar-app

backendService

projects/<projectid>/global/backendServices/agentspace-ineg-bes

スクリーンショットを表示

pathPrefixRewrite

/<アプリ 2 の Agentspace URL パス>

/us/home/cid/bb6b8b27-939b-494d-9227-45903bb8afcf

hostRewrite

vertexaisearch.cloud.google.com

vertexaisearch.cloud.google.com

ホストとパスのルールにアクセスするには、次の場所に移動します。

ロード バランシング → agentspace-lb → 編集を選択

[ルーティング ルール] の [詳細なホストとパスのルール] を選択します。

[ホストとパスのルールを追加] を選択します。

4bc965db43aed21b.png

新しいホストとパスのルールの作成画面が表示されます。[ホスト] セクションに agentspace.YOUR-EXTERNAL-IP.nip.io またはカスタム ドメインを挿入します。

f36e4fa11c950d8d.png

[パスマッチャー] フィールド(一致、アクション、サービス)で、環境の構成に合わせて以下のコンテンツを更新し、[更新] を選択します。

defaultService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
name: matcher1
routeRules:
- matchRules:
 - prefixMatch: /<name of Agentspace app#1>
 priority: 1
 routeAction:
   weightedBackendServices:
   - backendService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
     weight: 100
   urlRewrite:
     pathPrefixRewrite: /<Agentspace URL path of app#1>
     hostRewrite: vertexaisearch.cloud.google.com
- matchRules:
 - prefixMatch: /<name of Agentspace app#2>
 priority: 2
 routeAction:
   weightedBackendServices:
   - backendService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
     weight: 101
   urlRewrite:
     pathPrefixRewrite: /<Agentspace URL path of app#2>
     hostRewrite: vertexaisearch.cloud.google.com

スクリーンショットの例:

22788283124c59ec.png

cef8f571ca17bf42.png

13. 検証

デプロイが完了しました。ウェブブラウザまたはターミナルからカスタム ドメインを使用して Agentspace アプリケーションにアクセスするには、agentspace.YOUR-EXTERNAL-IP.nip.io/path(例: agentspace.34.54.158.206.nip.io)を指定します。例を次に示します。

Agentspace アプリケーション: drive-app

パス: agentspace.34.54.158.206.nip.io/drive-app

Agentspace アプリケーション: drive-app

パス: agentspace.34.54.158.206.nip.io/calendar-app

14. クリーンアップ

OAuth 認証情報を削除するには、次の操作を行います。

[API とサービス] > [認証情報] に移動します。

[OAuth 2.0 クライアント ID] で認証情報を選択し、削除します。

1 つの Cloud Shell ターミナルからラボ コンポーネントを削除します。

gcloud compute forwarding-rules delete agentspace-fr --global -q

gcloud compute target-https-proxies delete https-proxy --global -q

gcloud compute url-maps delete agentspace-lb --global -q

cloud compute ssl-certificates delete agentspace-self-signed-cert --global -q

gcloud compute backend-services delete agentspace-ineg-bes --global -q

gcloud compute network-endpoint-groups delete agentspace-ineg --global -q

gcloud dns --project=$projectid record-sets delete agentspace.$externalip.nip.io --zone="agentspace-dns" --type="A"

gcloud dns --project=$projectid managed-zones delete agentspace-dns

gcloud compute addresses delete external-ip --global -q

gcloud compute networks delete agentspace-vpc -q

15. 完了

これで、高度なトラフィック管理を備えた外部アプリケーション ロードバランサを使用して、カスタム ドメインを使用して Agentspace への接続を正常に構成し、検証できました。

ロードバランサ インフラストラクチャを作成し、インターネット NEG、Cloud DNS、高度なトラフィック管理を作成する方法を学びました。これにより、ホストとパスの書き換えが可能になり、カスタムドメインを使用して Agentspace に接続できるようになりました。

Cosmopup はコードラボが大好きです。

c911c127bffdee57.jpeg

リファレンス ドキュメント