Przejdź do treści

Szukaj w dokumentacji

Wpisz, aby przeszukać każdą stronę dokumentacji.

Menu dokumentacji
InstrukcjaOdbiorcy · Operatorzy i DevOps

Wdrażanie

Od lokalnego stosu Compose do produkcyjnego Kubernetes

Ta strona została przetłumaczona automatycznie z języka angielskiego. W razie rozbieżności pierwszeństwo ma oryginał.Przeczytaj oryginał w języku angielskim

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 stack

Wygenerowane 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=4

Ustal adres IP klastra i zmapuj na niego domeny usług:

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) — włącz wbudowany Kubernetes:

Włączanie 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.com

Przygotuj 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_KEY

Obserwowalność (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/readiness

Wdróż 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

Przykład wdrożenia


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/liveness i GET /status/readiness zwracają 200
  • GET /docs się renderuje, a GET /agents/list odpowiada (z tokenem, gdy uwierzytelnianie jest włączone)
  • Ślady docierają do twojego endpointu OTLP (zobacz Obserwowalność)
  • Vault zawiera secret/app_secrets ze wszystkimi kluczami ładunku
  • Realm Keycloak ma klienta i konto usługi