# Cykl życia Agent Pod #sympozium #architektura #agent-pod ## Anatomia Agent Pod Każdy agent run tworzy pod z następującymi kontenerami: ``` ┌─────────────────────────────────────────────────────┐ │ Agent Pod (Job) │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │ │ Agent │ │ IPC Bridge │ │ Skill Sidecar│ │ │ │ Container │ │ Sidecar │ │ (kubectl, │ │ │ │ │ │ │ │ helm, etc.) │ │ │ │ - LLM loop │ │ - fsnotify │ │ │ │ │ │ - Tool exec │ │ - NATS pub │ │ - /workspace │ │ │ │ - /skills │ │ - /ipc │ │ - RBAC scope │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬───────┘ │ │ │ │ │ │ │ /workspace /ipc (tmpfs) /workspace │ │ /skills (ro) (RAM-backed) │ │ /ipc │ │ /tmp │ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ MCP Bridge │ │ Sandbox │ │ │ │ (opcjonalny) │ │ (opcjonalny) │ │ │ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────┘ ``` ## Woluminy | Wolumin | Typ | Rozmiar | Cel | |---------|-----|---------|-----| | `workspace` | emptyDir | 1Gi | Współdzielone pliki robocze agent ↔ sidecary | | `ipc` | emptyDir (RAM) | 64Mi | JSON IPC: agent → bridge → NATS | | `skills` | Projected ConfigMap | - | Markdown instrukcje ze SkillPacks (read-only) | | `tmp` | emptyDir | 256Mi | Tymczasowe pliki (read-only root FS) | ## [[SecurityContext]] agenta Hardened security context - patrz [[SecurityContext]] dla wyjaśnienia poszczególnych pól: ```go SecurityContext: &corev1.SecurityContext{ ReadOnlyRootFilesystem: &readOnly, // true - root FS read-only AllowPrivilegeEscalation: &noPrivEsc, // false - blokuje setuid Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, // Drop ALL Linux capabilities }, } ``` ## Zasoby | Kontener | CPU Request | CPU Limit | Memory Request | Memory Limit | |----------|-------------|-----------|----------------|--------------| | Agent | 250m | 1 | 512Mi | 1Gi | | IPC Bridge | 50m | 100m | 64Mi | 128Mi | | Sandbox | 100m | 500m | 256Mi | 512Mi | ## Fazy lifecycle ``` Pending → Running → Succeeded → Failed → Serving (tryb server) ``` ### Pending 1. Walidacja polityki 2. Tworzenie ServiceAccount `sympozium-agent` 3. Tworzenie input ConfigMap (task, system prompt, memory) 4. Rozwiązywanie sidecars i RBAC 5. Tworzenie Job/Sandbox CR ### Running - Polling statusu poda co 10 sekund - Monitorowanie completion/failure ### Succeeded/Failed 1. Zbieranie logów poda (wynik agenta) 2. Ekstrakcja memory markers z outputu 3. Aktualizacja memory ConfigMap 4. Usuwanie efemerycznego RBAC 5. Pruning historii (domyślnie 50 runów per instancja) 6. Usuwanie finalizera ### Serving (tryb server) - Deployment zamiast Job - Service dla routowania - Używany dla web-endpoint - Długo żyjący, nie jest garbage-collectowany po zakończeniu ## Zmienne środowiskowe agenta | Zmienna | Wartość | |---------|---------| | `AGENT_RUN_ID` | Nazwa AgentRun CR | | `AGENT_ID` | ID konfiguracji agenta | | `SESSION_KEY` | Klucz sesji | | `INSTANCE_NAME` | Nazwa SympoziumInstance | | `MODEL_PROVIDER` | openai/anthropic/azure/ollama | | `MODEL_NAME` | Identyfikator modelu | | `THINKING_MODE` | off/low/medium/high | | `SPAWN_DEPTH` | Głębokość zagnieżdżenia sub-agenta | | `TRACEPARENT` | W3C traceparent (OTel) | --- Powiązane: [[Control Plane]] | [[Orchestrator - PodBuilder i Spawner]] | [[Skill Sidecars i auto-RBAC]]