initial commit

This commit is contained in:
2026-03-25 00:05:57 +01:00
commit 25c7d598ca
63 changed files with 5257 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
# Finalizer
#kubernetes #lifecycle #słownik
## Co to jest?
**Finalizer** to mechanizm Kubernetes **blokujący usunięcie zasobu** do czasu wykonania cleanup. Dopóki finalizer istnieje na zasobie, K8s nie usunie go z etcd.
## Jak działa?
```
1. Zasób ma finalizer: ["sympozium.ai/finalizer"]
2. kubectl delete → DeletionTimestamp ustawiony, ale zasób ISTNIEJE
3. Controller widzi DeletionTimestamp → wykonuje cleanup
4. Controller usuwa finalizer z listy
5. K8s widzi brak finalizerów → zasób usunięty z etcd
```
## Bez vs z finalizer
```
Bez finalizer:
kubectl delete agentrun → NATYCHMIAST usunięty
→ Orphaned Jobs, RBAC, ConfigMaps!
Z finalizer:
kubectl delete agentrun → DeletionTimestamp set
→ Controller: cleanup Jobs, RBAC, ConfigMaps
→ Controller: remove finalizer
→ Zasób usunięty
```
## Użycie w Sympozium
### AgentRun finalizer
```go
const agentRunFinalizer = "sympozium.ai/agentrun-finalizer"
```
Cleanup przy usunięciu:
- Delete Job/Sandbox CR
- Delete ephemeral RBAC (ClusterRole, ClusterRoleBinding)
- Delete input ConfigMap
- Delete MCP ConfigMap
### SympoziumInstance finalizer
```go
const sympoziumInstanceFinalizer = "sympozium.ai/finalizer"
```
Cleanup:
- Delete channel Deployments
- Delete memory ConfigMap
- Delete memory Deployment/Service
## Pułapki
- Jeśli controller jest niedostępny → finalizer blokuje usunięcie na zawsze
- "Stuck" zasoby: trzeba ręcznie usunąć finalizer (`kubectl edit`)
- Finalizer dodawany tylko dla non-terminal runs (nie dla Succeeded/Failed)
---
Powiązane: [[Controller i Reconciler]] | [[ownerReference]] | [[Cykl życia AgentRun]]