דילוג לתוכן

חיפוש בתיעוד

הקלידו כדי לחפש בכל דפי התיעוד.

תפריט התיעוד
איך עושיםקהל יעד · אנשי תפעול ו-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) — ראו הסוכן הראשון שלך.

סביבת ייצור: Kubernetes עם Terraform

Agent-Lab מספק סקריפטים של Terraform שפורסים את האפליקציה ואת התלויות שלה ב-Kubernetes. ההדרכה הזו משתמשת באשכול Minikube לצורכי הדגמה — לפריסות אמיתיות יש להשתמש באשכול המוכן לסביבת ייצור.

דרישות מוקדמות

הקמת אשכול Kubernetes

Minikube (Linux) — מקצים מספיק משאבים (סביבת הדוגמה כבדה):

minikube start --memory=20g --cpus=4

מאתרים את כתובת ה-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/ בקר ingress של Traefik
02_cert-manager/ cert-manager עבור TLS
03_cert-cluster-issuer/ ClusterIssuer של Let's Encrypt לסביבת ייצור
04_redis-operator/ אופרטור Redis (עדכוני סטטוס ב-pub/sub)
05_postgres-operator/ אופרטור PostgreSQL — שלושה מסדי נתונים: רלציוני, pgvector, checkpoints
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}}')"

מגדירים את חיבור ה-OIDC לפי אימות עם Keycloak, או נותנים למודול 12_agent-lab-auth-realm/ לעשות זאת (בהמשך).

אתחול Vault (לאחר החלת 08_vault-instance/) — מאתחלים ומבצעים unseal:

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 שבהן משתמשות חבילת הסימולציות וה-backends של ה-tracing:

מודול מה הוא מקצה
13_langfuse-instance/ Langfuse — traces של LLM וניסויי סימולציה
14_langwatch-instance/ LangWatch — סימולציות ודשבורדים
07_elastic-operator/ + 10_elastic-instance/ ECK (Elastic) ללוגים ול-APM

שליפת פרטי ההתחברות של 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/) — שער LLM באירוח עצמי ותואם OpenAI, עם מפתחות וירטואליים, מעקב הוצאות וממשק ניהול (/ui):

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/ ה-realm, הלקוח וחשבון השירות של Keycloak עבור האפליקציה
15_agent-lab-dependencies/ חיווט תלויות זמן הריצה (מסדי נתונים, broker, מפתחות 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 chart

המאגר כולל גם Helm chart, charts/agent-lab, שאורז את פריסת האפליקציה יחד עם ה-sidecars שלה: Headless Chrome (CDP) לסוכני רשת, HPA, ingress, תצורה וחשבון שירות. משתמשים בו כשכבר מתפעלים את התלויות בעצמך ורוצים להתקין רק את האפליקציה.

רשימת תיוג

לפני שמסיימים, מוודאים ש:

  • GET /status/liveness ו-GET /status/readiness מחזירים 200
  • GET /docs מוצג ו-GET /agents/list מגיב (עם טוקן כשהאימות מופעל)
  • traces מגיעים לנקודת הקצה של OTLP (ראו ניטור)
  • Vault מכיל את secret/app_secrets עם כל מפתחות המטען
  • ל-realm של Keycloak יש לקוח וחשבון שירות