本文へスキップ

ドキュメントを検索

入力すると、ドキュメントのすべてのページを検索できます。

ドキュメントメニュー
ハウツー対象読者 · 運用担当者 & DevOps

デプロイ

ローカルの Compose スタックから本番の Kubernetes まで

このページは英語から機械翻訳されました。相違がある場合は原文が優先されます。英語の原文を読む

2 つのデプロイモデル

モデル 得られるもの 参照先
Docker Compose リファレンスアプリと依存関係一式を、手元のマシンで数分で起動 開発者ガイド — アプリケーションの実行
Kubernetes (Terraform + Helm) 本番向けのリファレンスデプロイ:オペレーター、データベース、認証、シークレット、オブザーバビリティなど一式 このページ

ローカル:Docker Compose

フレームワークのリポジトリには、2 つの完全なスタック(アプリケーション、PostgreSQL(pgvector 付き)、 Redis、Vault、オブザーバビリティスタック)が同梱されています。

docker compose -f compose-grafana.yml up --build      # Grafana stack
docker compose -f compose-opensearch.yml up --build   # OpenSearch Dashboards stack

スキャフォールドで生成したプロジェクトには、独自の compose.yml(app + postgres + redis + vault)が含まれます。最初のエージェントを参照してください。

本番:Terraform による Kubernetes

Agent-Lab は、アプリケーションとその依存関係を Kubernetes にデプロイする Terraform スクリプトを提供しています。このウォークスルーでは参考として Minikube クラスターを使用します。実際のデプロイでは本番運用に対応したクラスターを使用してください。

前提条件

Kubernetes クラスターのセットアップ

Minikube (Linux):十分なリソースを割り当ててください(リファレンススタックは重量級です)。

minikube start --memory=20g --cpus=4

クラスターの IP を確認し、サービスのドメインをその IP にマッピングします。

minikube ip
# 192.168.49.2
192.168.49.2 vault.my-domain.com kibana.my-domain.com elasticsearch.my-domain.com agent-lab.my-domain.com litellm.my-domain.com

Docker Desktop (Mac / Windows):同梱の Kubernetes を有効にします。

Kubernetes を有効にする


Docker Desktop では、ドメインは localhost で名前解決されます。

127.0.0.1 vault.my-domain.com kibana.my-domain.com elasticsearch.my-domain.com agent-lab.my-domain.com litellm.my-domain.com

依存関係のプロビジョニング

以下のモジュールはすべて terraform/ にあります。各ディレクトリで terraform init && terraform apply を、次の順序で実行してください。

モジュール プロビジョニングされるもの
01_traefik/ Traefik イングレスコントローラー
02_cert-manager/ TLS 用の cert-manager
03_cert-cluster-issuer/ Let's Encrypt の本番用 ClusterIssuer
04_redis-operator/ Redis オペレーター(Pub/Sub によるステータス更新)
05_postgres-operator/ PostgreSQL オペレーター:3 つのデータベース(リレーショナル、pgvector、チェックポイント)
06_keycloak-operator/ Keycloak オペレーター
08_vault-instance/ シークレット管理用の Vault

Keycloak インスタンス(09_keycloak-instance/)を作成し、管理者パスワードを取得します。

echo "$(kubectl --namespace keycloak get secret/keycloak-initial-admin -o go-template='{{index .data "password" | base64decode}}')"

OIDC 接続は Keycloak による認証に従って設定するか、後述の 12_agent-lab-auth-realm/ モジュールに任せます。

Vault の初期化(08_vault-instance/ の適用後):初期化とアンシールを行います。

kubectl --namespace vault exec vault-0 -- vault operator init \
    -key-shares=1 \
    -key-threshold=1 \
    -format=json > cluster-keys.json

export VAULT_UNSEAL_KEY=$(jq -r ".unseal_keys_b64[]" cluster-keys.json)
kubectl --namespace vault exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEY

オブザーバビリティ(任意ですが推奨):シミュレーションスイートとトレーシングバックエンドで使用する LLM オブザーバビリティプラットフォームです。

モジュール プロビジョニングされるもの
13_langfuse-instance/ Langfuse:LLM のトレースとシミュレーション実験
14_langwatch-instance/ LangWatch:シミュレーションとダッシュボード
07_elastic-operator/ + 10_elastic-instance/ ログと APM 用の ECK (Elastic)

Elastic の認証情報を取得します。

echo "$(kubectl --namespace elastic get secret elasticsearch-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode)"

echo "$(kubectl --namespace elastic get secret/elastic-eck-apm-server-apm-token \
    -o go-template='{{index .data "secret-token" | base64decode}}')"

OpenTelemetry Collector(11_otel-instance/):アプリのエクスポート先となる OTLP エンドポイントです(オブザーバビリティ)。

LiteLLM ゲートウェイ(17_litellm-instance/):仮想キー、利用額の追跡、管理 UI(/ui)を備えた、セルフホスト型の OpenAI 互換 LLM ゲートウェイです。

echo "$(kubectl --namespace litellm get secret/litellm-masterkey -o go-template='{{index .data "masterkey" | base64decode}}')"

curl -s https://<litellm_fqdn>/health/readiness

Agent-Lab のデプロイ

3 つのモジュールですべてを結び付けます。

モジュール 設定されるもの
12_agent-lab-auth-realm/ アプリ用の Keycloak レルム、クライアント、サービスアカウント
15_agent-lab-dependencies/ ランタイムの依存関係の配線(データベース、ブローカー、LANGFUSE_* キーなど)
16_agent-lab-instance/ Agent-Lab アプリケーション本体
cd terraform/12_agent-lab-auth-realm/ && terraform init && terraform apply
cd terraform/15_agent-lab-dependencies/ && terraform init && terraform apply
cd terraform/16_agent-lab-instance/ && terraform init && terraform apply

デプロイの例


シークレットに関する注意: デプロイされたアプリは起動時に Vault(secret/app_secrets)から設定を読み込みます。 ペイロードのキーは設定リファレンスに一覧があります。

Helm チャート

リポジトリには Helm チャート charts/agent-lab も同梱されています。これはアプリケーションのデプロイをサイドカー(Web エージェント用のヘッドレス Chrome(CDP))、HPA、イングレス、設定、サービスアカウントとともにパッケージ化したものです。依存関係をすでに自前で運用しており、アプリだけをインストールしたい場合に使用してください。

チェックリスト

完了とする前に、次の点を確認してください。

  • GET /status/liveness と GET /status/readiness が 200 を返す
  • GET /docs が表示され、GET /agents/list が応答する(認証が有効な場合はトークンを付与)
  • トレースが OTLP エンドポイントに届いている(オブザーバビリティを参照)
  • Vault に、すべてのペイロードキーを含む secret/app_secrets が存在する
  • Keycloak レルムにクライアントとサービスアカウントが存在する