콘텐츠로 건너뛰기

문서 검색

입력하면 문서의 모든 페이지를 검색합니다.

문서 메뉴
활용법대상 독자 · 운영자 및 DevOps

배포

로컬 Compose 스택부터 프로덕션 Kubernetes까지

이 페이지는 영어에서 기계 번역되었습니다. 차이가 있는 경우 원문이 우선합니다.영어 원문 읽기

두 가지 배포 모델

모델 제공되는 것 참고할 곳
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.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 오퍼레이터 — 관계형, 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/readiness

Agent-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 렐름에 클라이언트와 서비스 계정이 있음