initial commit
This commit is contained in:
114
02-Architektura/Cykl życia Agent Pod.md
Normal file
114
02-Architektura/Cykl życia Agent Pod.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# 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]]
|
||||
Reference in New Issue
Block a user