Zwei Deployment-Modelle
| Modell | Was Sie erhalten | Wo es weitergeht |
|---|---|---|
| Docker Compose | Die Referenzanwendung + alle Abhängigkeiten, auf Ihrem Rechner, in wenigen Minuten | Entwicklerhandbuch – Die Anwendung ausführen |
| Kubernetes (Terraform + Helm) | Ein produktives Referenz-Deployment: Operatoren, Datenbanken, Authentifizierung, Secrets, Observability – das volle Programm | Diese Seite |
Lokal: Docker Compose
Das Framework-Repository enthält zwei vollständige Stacks – Anwendung, PostgreSQL (mit pgvector), Redis, Vault und einen Observability-Stack:
docker compose -f compose-grafana.yml up --build # Grafana stack
docker compose -f compose-opensearch.yml up --build # OpenSearch Dashboards stackPer Scaffolding erzeugte Projekte erhalten ihre eigene compose.yml (App + postgres + redis + vault) –
siehe Ihr erster Agent.
Produktion: Kubernetes mit Terraform
Agent-Lab stellt Terraform-Skripte bereit, die die Anwendung und ihre Abhängigkeiten auf Kubernetes deployen. Diese Anleitung verwendet zu Referenzzwecken einen Minikube-Cluster – verwenden Sie für echte Deployments einen produktionsreifen Cluster.
Voraussetzungen
Einen Kubernetes-Cluster einrichten
Minikube (Linux) – weisen Sie ausreichend Ressourcen zu (der Referenz-Stack ist ressourcenintensiv):
minikube start --memory=20g --cpus=4Ermitteln Sie die Cluster-IP und ordnen Sie ihr die Service-Domains zu:
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) – aktivieren Sie das mitgelieferte Kubernetes:

Mit Docker Desktop werden die Domains über localhost aufgelöst:
127.0.0.1 vault.my-domain.com kibana.my-domain.com elasticsearch.my-domain.com agent-lab.my-domain.com litellm.my-domain.comAbhängigkeiten bereitstellen
Alle folgenden Module befinden sich in terraform/ – wenden Sie sie mit terraform init && terraform apply im jeweiligen Verzeichnis an, und zwar in dieser Reihenfolge:
| Modul | Was es bereitstellt |
|---|---|
01_traefik/ |
Traefik-Ingress-Controller |
02_cert-manager/ |
cert-manager für TLS |
03_cert-cluster-issuer/ |
Produktiver Let's-Encrypt-ClusterIssuer |
04_redis-operator/ |
Redis-Operator (Pub/Sub-Statusupdates) |
05_postgres-operator/ |
PostgreSQL-Operator – drei Datenbanken: relational, pgvector, Checkpoints |
06_keycloak-operator/ |
Keycloak-Operator |
08_vault-instance/ |
Vault für Secrets |
Keycloak-Instanz (09_keycloak-instance/), anschließend das Admin-Passwort auslesen:
echo "$(kubectl --namespace keycloak get secret/keycloak-initial-admin -o go-template='{{index .data "password" | base64decode}}')"Konfigurieren Sie die OIDC-Verbindung gemäß Authentifizierung mit Keycloak oder überlassen Sie dies dem
Modul 12_agent-lab-auth-realm/ (siehe unten).
Vault-Initialisierung (nachdem 08_vault-instance/ angewendet wurde) – initialisieren und entsiegeln:
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_KEYObservability (optional, aber empfohlen) – die LLM-Observability-Plattformen, die von der Simulations-Suite und den Tracing-Backends verwendet werden:
| Modul | Was es bereitstellt |
|---|---|
13_langfuse-instance/ |
Langfuse – LLM-Traces & Simulationsexperimente |
14_langwatch-instance/ |
LangWatch – Simulationen & Dashboards |
07_elastic-operator/ + 10_elastic-instance/ |
ECK (Elastic) für Logs & APM |
Rufen Sie die Elastic-Zugangsdaten ab:
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/) – der OTLP-Endpoint, an den die Anwendung exportiert
(Observability).
LiteLLM-Gateway (17_litellm-instance/) – ein selbst gehostetes, OpenAI-kompatibles LLM-Gateway
mit virtuellen Schlüsseln, Kostenverfolgung und einer Admin-UI (/ui):
echo "$(kubectl --namespace litellm get secret/litellm-masterkey -o go-template='{{index .data "masterkey" | base64decode}}')"
curl -s https://<litellm_fqdn>/health/readinessAgent-Lab deployen
Drei Module verbinden alles miteinander:
| Modul | Was es konfiguriert |
|---|---|
12_agent-lab-auth-realm/ |
Keycloak-Realm, Client und Service-Account für die Anwendung |
15_agent-lab-dependencies/ |
Verdrahtung der Laufzeitabhängigkeiten (Datenbanken, Broker, LANGFUSE_*-Schlüssel, …) |
16_agent-lab-instance/ |
Die Agent-Lab-Anwendung selbst |
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
Hinweis zu Secrets: Das Deployment liest seine Konfiguration beim Start aus Vault (
secret/app_secrets) – die Payload-Schlüssel sind in der Konfigurationsreferenz aufgeführt.
Helm-Chart
Das Repository enthält außerdem ein Helm-Chart, charts/agent-lab, das das Deployment der Anwendung
mit ihren Sidecars paketiert: Headless Chrome (CDP) für Web-Agenten, einen HPA, Ingress,
Konfiguration und Service-Account. Verwenden Sie es, wenn Sie Ihre Abhängigkeiten bereits selbst betreiben und
nur die Anwendung installieren möchten.
Checkliste
Prüfen Sie vor dem Abschluss:
-
GET /status/livenessundGET /status/readinessliefern 200 -
GET /docswird gerendert undGET /agents/listantwortet (mit Token, wenn die Authentifizierung aktiv ist) - Traces kommen an Ihrem OTLP-Endpoint an (siehe Observability)
- Vault enthält
secret/app_secretsmit allen Payload-Schlüsseln - Der Keycloak-Realm hat einen Client und einen Service-Account