Dwa modele wdrażania
| Model | Co otrzymujesz | Gdzie szukać |
|---|---|---|
| Docker Compose | Aplikacja referencyjna + pełny zestaw zależności na twojej maszynie, w kilka minut | Przewodnik programisty — Uruchamianie aplikacji |
| Kubernetes (Terraform + Helm) | Referencyjne wdrożenie produkcyjne: operatory, bazy danych, uwierzytelnianie, sekrety, obserwowalność — wszystko w komplecie | Ta strona |
Lokalnie: Docker Compose
Repozytorium frameworka zawiera dwa kompletne stosy — aplikację, PostgreSQL (z pgvector), Redis, Vault oraz stos obserwowalności:
docker compose -f compose-grafana.yml up --build # Grafana stack
docker compose -f compose-opensearch.yml up --build # OpenSearch Dashboards stackWygenerowane projekty otrzymują własny compose.yml (app + postgres + redis + vault) —
zobacz Twój pierwszy agent.
Produkcja: Kubernetes z Terraform
Agent-Lab dostarcza skrypty Terraform, które wdrażają aplikację wraz z jej zależnościami w Kubernetes. Ten przewodnik używa klastra Minikube w celach poglądowych — do rzeczywistych wdrożeń używaj klastra gotowego do produkcji.
Wymagania wstępne
Przygotuj klaster Kubernetes
Minikube (Linux) — przydziel wystarczające zasoby (stos referencyjny jest wymagający):
minikube start --memory=20g --cpus=4Ustal adres IP klastra i zmapuj na niego domeny usług:
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) — włącz wbudowany Kubernetes:

W Docker Desktop domeny są rozwiązywane przez 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.comPrzygotuj zależności
Każdy z poniższych modułów znajduje się w terraform/ — zastosuj go poleceniem terraform init && terraform apply w każdym katalogu, w tej kolejności:
| Moduł | Co udostępnia |
|---|---|
01_traefik/ |
Kontroler ingress Traefik |
02_cert-manager/ |
cert-manager do obsługi TLS |
03_cert-cluster-issuer/ |
Produkcyjny ClusterIssuer Let's Encrypt |
04_redis-operator/ |
Operator Redis (aktualizacje statusu przez pub/sub) |
05_postgres-operator/ |
Operator PostgreSQL — trzy bazy danych: relacyjna, pgvector, checkpointy |
06_keycloak-operator/ |
Operator Keycloak |
08_vault-instance/ |
Vault do przechowywania sekretów |
Instancja Keycloak (09_keycloak-instance/), a następnie pobierz hasło administratora:
echo "$(kubectl --namespace keycloak get secret/keycloak-initial-admin -o go-template='{{index .data "password" | base64decode}}')"Skonfiguruj połączenie OIDC zgodnie z Uwierzytelnianiem z Keycloak lub
pozwól, aby zrobił to moduł 12_agent-lab-auth-realm/ (poniżej).
Inicjalizacja Vault (po zastosowaniu 08_vault-instance/) — zainicjalizuj i odpieczętuj:
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_KEYObserwowalność (opcjonalna, ale zalecana) — platformy obserwowalności LLM używane przez zestaw symulacji i backendy śledzenia:
| Moduł | Co udostępnia |
|---|---|
13_langfuse-instance/ |
Langfuse — ślady LLM i eksperymenty symulacyjne |
14_langwatch-instance/ |
LangWatch — symulacje i dashboardy |
07_elastic-operator/ + 10_elastic-instance/ |
ECK (Elastic) dla logów i APM |
Pobierz poświadczenia 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/) — endpoint OTLP, do którego aplikacja
eksportuje dane (Obserwowalność).
Brama LiteLLM (17_litellm-instance/) — samodzielnie hostowana brama LLM zgodna
z OpenAI, z wirtualnymi kluczami, śledzeniem wydatków i interfejsem administracyjnym (/ui):
echo "$(kubectl --namespace litellm get secret/litellm-masterkey -o go-template='{{index .data "masterkey" | base64decode}}')"
curl -s https://<litellm_fqdn>/health/readinessWdróż Agent-Lab
Trzy moduły łączą wszystko w całość:
| Moduł | Co konfiguruje |
|---|---|
12_agent-lab-auth-realm/ |
Realm Keycloak, klienta i konto usługi dla aplikacji |
15_agent-lab-dependencies/ |
Podłączenie zależności środowiska uruchomieniowego (bazy danych, broker, klucze LANGFUSE_*, …) |
16_agent-lab-instance/ |
Samą aplikację 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
Uwaga dotycząca sekretów: wdrożenie odczytuje konfigurację z Vault podczas uruchamiania (
secret/app_secrets) — klucze ładunku są wymienione w Dokumentacji konfiguracji.
Chart Helm
Repozytorium zawiera także chart Helm, charts/agent-lab, który pakuje wdrożenie
aplikacji wraz z jej sidecarami: headless Chrome (CDP) dla agentów webowych, HPA,
ingress, konfiguracją i kontem usługi. Używaj go, gdy samodzielnie utrzymujesz
zależności i chcesz zainstalować tylko aplikację.
Lista kontrolna
Zanim uznasz wdrożenie za zakończone, sprawdź, czy:
-
GET /status/livenessiGET /status/readinesszwracają 200 -
GET /docssię renderuje, aGET /agents/listodpowiada (z tokenem, gdy uwierzytelnianie jest włączone) - Ślady docierają do twojego endpointu OTLP (zobacz Obserwowalność)
- Vault zawiera
secret/app_secretsze wszystkimi kluczami ładunku - Realm Keycloak ma klienta i konto usługi