3.0 KiB
3.0 KiB
Orchestrator - PodBuilder i Spawner
#sympozium #architektura #orchestrator
Lokalizacja
internal/orchestrator/ - pakiet odpowiedzialny za budowanie specyfikacji podów i spawning Job'ów.
PodBuilder
PodBuilder to struct odpowiedzialny za konstruowanie pod spec'ów. Konfigurowany jest tagiem obrazów:
type PodBuilder struct {
DefaultAgentImage string // agent-runner
DefaultIPCBridgeImage string // ipc-bridge
DefaultSandboxImage string // sandbox
DefaultMCPBridgeImage string // mcp-bridge
EventBusURL string // nats://nats.sympozium-system.svc:4222
ImageTag string // np. "v0.0.25"
}
Registry: ghcr.io/sympozium-ai/sympozium
Budowanie kontenerów
BuildAgentContainer
Główny kontener agenta z:
- Read-only root filesystem
- Drop ALL capabilities
- No privilege escalation
- Woluminy: workspace, skills (ro), ipc, tmp
- EnvFrom: secret z kluczem API
BuildIPCBridgeContainer
Sidecar IPC bridge z:
- Wolumin ipc (shared z agentem)
- Env: AGENT_RUN_ID, INSTANCE_NAME, EVENT_BUS_URL
- Opcjonalnie: TRACEPARENT, OTEL_* (observability)
BuildSandboxContainer
Opcjonalny sidecar sandbox z:
- Read-only root filesystem
- Drop ALL capabilities
- Command:
sleep infinity(czeka na komendy z agenta) - Woluminy: workspace, tmp
BuildVolumes
4 woluminy:
workspace- emptyDir 1Giipc- emptyDir (Memory medium) 64Mi - RAM-backed dla szybkościtmp- emptyDir 256Miskills- Projected volume z ConfigMapów SkillPacks
AgentPodConfig
Konfiguracja przekazywana do buildera:
type AgentPodConfig struct {
RunID string
InstanceName string
AgentID string
SessionKey string
ModelProvider string
ModelName string
ThinkingMode string
AuthSecretRef string
SandboxEnabled bool
SandboxImage string
SpawnDepth int
Skills []SkillMount
Traceparent string // W3C traceparent
OTelEndpoint string // OTLP endpoint
}
Proces tworzenia poda (w AgentRunReconciler)
1. reconcilePending()
├── validatePolicy() - sprawdza SympoziumPolicy
├── ensureAgentServiceAccount() - ServiceAccount w namespace
├── createInputConfigMap() - task + system prompt
├── resolveSkillSidecars() - SkillPack CRDs → sidecar specs
├── ensureMCPConfigMap() - konfiguracja MCP serwerów
├── buildContainers() - PodBuilder buduje spec
├── createEphemeralRBAC() - Role + RoleBinding per sidecar
└── createJob() / createSandboxCR() - finalne tworzenie zasobu K8s
Relacja z AgentRun Controller
AgentRunReconciler (internal/controller/agentrun_controller.go) jest "klientem" PodBuilder'a. Reconciler:
- Obserwuje AgentRun CRDs
- Używa PodBuilder do budowania spec'ów
- Tworzy Job/Sandbox CR w Kubernetes
- Monitoruje lifecycle poda
- Zbiera wyniki i czyści zasoby
Powiązane: Cykl życia Agent Pod | AgentRun | Cykl życia AgentRun