initial commit
This commit is contained in:
119
03-CRD/SympoziumInstance.md
Normal file
119
03-CRD/SympoziumInstance.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# SympoziumInstance
|
||||
|
||||
#sympozium #crd #instance
|
||||
|
||||
## Definicja
|
||||
|
||||
`SympoziumInstance` to centralny CRD reprezentujący **jednego tenanta/użytkownika**. Deklaruje konfigurację kanałów, agentów, skillów, polityk i memory.
|
||||
|
||||
**Plik:** `api/v1alpha1/sympoziuminstance_types.go`
|
||||
|
||||
## Spec
|
||||
|
||||
```yaml
|
||||
apiVersion: sympozium.ai/v1alpha1
|
||||
kind: SympoziumInstance
|
||||
metadata:
|
||||
name: my-agent
|
||||
spec:
|
||||
channels: # Podłączone kanały
|
||||
- type: telegram
|
||||
configRef:
|
||||
secret: telegram-creds
|
||||
accessControl:
|
||||
allowedSenders: ["123456"]
|
||||
|
||||
agents:
|
||||
default:
|
||||
model: gpt-4.1
|
||||
baseURL: "" # Override dla OpenAI-compat
|
||||
thinking: "medium" # off/low/medium/high
|
||||
sandbox:
|
||||
enabled: false
|
||||
agentSandbox: # Kernel-level isolation
|
||||
enabled: true
|
||||
runtimeClass: gvisor
|
||||
warmPool:
|
||||
size: 3
|
||||
subagents:
|
||||
maxDepth: 2
|
||||
maxConcurrent: 5
|
||||
maxChildrenPerAgent: 3
|
||||
nodeSelector: # Pinning do GPU node'ów
|
||||
gpu-type: "a100"
|
||||
|
||||
skills: # SkillPacks do montowania
|
||||
- skillPackRef: k8s-ops
|
||||
params:
|
||||
CLUSTER: production
|
||||
- skillPackRef: memory
|
||||
|
||||
policyRef: restrictive # Polityka bezpieczeństwa
|
||||
|
||||
authRefs: # Klucze API
|
||||
- provider: openai
|
||||
secret: openai-key
|
||||
|
||||
memory: # Legacy ConfigMap memory
|
||||
enabled: true
|
||||
maxSizeKB: 256
|
||||
|
||||
observability: # OpenTelemetry
|
||||
enabled: true
|
||||
otlpEndpoint: "otel-collector.observability.svc:4317"
|
||||
|
||||
mcpServers: # External tool providers
|
||||
- name: github
|
||||
toolsPrefix: gh
|
||||
timeout: 30
|
||||
```
|
||||
|
||||
## Status
|
||||
|
||||
```yaml
|
||||
status:
|
||||
phase: Running|Serving|Pending|Error
|
||||
channels:
|
||||
- type: telegram
|
||||
status: Connected|Disconnected|Error
|
||||
activeAgentPods: 2
|
||||
totalAgentRuns: 150
|
||||
webEndpoint:
|
||||
status: Ready
|
||||
url: "alice.sympozium.example.com"
|
||||
```
|
||||
|
||||
## Kluczowe koncepty
|
||||
|
||||
### Multi-tenancy
|
||||
Każda SympoziumInstance to osobny tenant z:
|
||||
- Własnymi kanałami
|
||||
- Własnymi credentials (AuthRefs)
|
||||
- Własną polityką
|
||||
- Własną memory
|
||||
- Własnymi MCP serverami
|
||||
|
||||
### Reconciliation
|
||||
`SympoziumInstanceReconciler` zarządza:
|
||||
1. **Channel Deployments** - tworzy/aktualizuje Deployment per kanał
|
||||
2. **Memory ConfigMap** - legacy `<name>-memory` ConfigMap
|
||||
3. **Memory PVC** - SQLite DB dla memory SkillPack
|
||||
4. **Memory Deployment** - memory-server Deployment + Service
|
||||
5. **Web Endpoints** - server-mode AgentRun dla web-endpoint skill
|
||||
|
||||
### Finalizery
|
||||
Przy usunięciu instancji controller:
|
||||
- Czyści channel deployments
|
||||
- Czyści memory ConfigMap
|
||||
- Czyści memory deployment
|
||||
|
||||
### Channel Access Control
|
||||
Kanały mogą ograniczać kto może komunikować się z agentem:
|
||||
- `allowedSenders` - whitelist ID nadawców
|
||||
- `deniedSenders` - blacklist (nadpisuje whitelist)
|
||||
- `allowedChats` - whitelist ID czatów/grup
|
||||
- `denyMessage` - wiadomość dla odrzuconych
|
||||
|
||||
---
|
||||
|
||||
Powiązane: [[AgentRun]] | [[PersonaPack]] | [[SympoziumPolicy]] | [[Kanały - Telegram Slack Discord WhatsApp]]
|
||||
Reference in New Issue
Block a user