두 가지 배포 모델
| 모델 | 제공되는 것 | 참고할 곳 |
|---|---|---|
| Docker Compose | 레퍼런스 앱과 전체 의존성 세트를 몇 분 만에 로컬 머신에서 실행 | 개발자 가이드 — 애플리케이션 실행 |
| Kubernetes (Terraform + Helm) | 오퍼레이터, 데이터베이스, 인증, 시크릿, 관측성 등 모든 것을 갖춘 프로덕션 레퍼런스 배포 | 이 페이지 |
로컬: Docker Compose
프레임워크 저장소에는 애플리케이션, 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.2192.168.49.2 vault.my-domain.com kibana.my-domain.com elasticsearch.my-domain.com agent-lab.my-domain.com litellm.my-domain.comDocker Desktop (Mac / Windows) — 기본 제공되는 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 오퍼레이터 — 관계형, 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}}')"Keycloak 인증에 따라 OIDC 연결을 구성하거나, 아래의
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/readinessAgent-Lab 배포
세 개의 모듈이 모든 것을 연결합니다.
| 모듈 | 구성 대상 |
|---|---|
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도 포함되어 있습니다. 이 차트는 웹 에이전트용
Headless Chrome(CDP), HPA, 인그레스, 구성, 서비스 계정 등의 사이드카와 함께 애플리케이션
배포를 패키징합니다. 의존성을 이미 직접 운영하고 있으며 앱만 설치하려는 경우에 사용하세요.
체크리스트
완료하기 전에 다음을 확인하세요.
-
GET /status/liveness와GET /status/readiness가 200을 반환함 -
GET /docs가 렌더링되고GET /agents/list가 응답함(인증이 켜져 있으면 토큰 사용) - 트레이스가 OTLP 엔드포인트에 도착함(관측성 참고)
- Vault에 모든 페이로드 키가 담긴
secret/app_secrets가 있음 - Keycloak 렐름에 클라이언트와 서비스 계정이 있음