2.0 KiB
2.0 KiB
ownerReference
#kubernetes #lifecycle #garbage-collection #słownik
Co to jest?
ownerReference to metadata na zasobie Kubernetes wskazująca na jego "właściciela". Gdy właściciel jest usunięty, Kubernetes automatycznie garbage-collectuje zasoby-dzieci.
Jak działa?
# Child resource (np. Job)
metadata:
ownerReferences:
- apiVersion: sympozium.ai/v1alpha1
kind: AgentRun
name: my-run-001
uid: abc-123
controller: true
blockOwnerDeletion: true
Usunięcie AgentRun → K8s GC → Usunięcie Job → Usunięcie Pod
Cascade deletion
| Typ | Zachowanie |
|---|---|
| Foreground | Owner czeka na usunięcie children |
| Background | Owner usunięty natychmiast, children async |
| Orphan | Children nie są usuwane (osierocone) |
Ograniczenia
- ownerReference działa tylko w tym samym namespace
- Cluster-scoped zasoby (ClusterRole) nie mogą mieć ownerRef na namespace-scoped (AgentRun)
- Dlatego Sympozium używa label-based cleanup dla cluster RBAC
Użycie w Sympozium
Automatyczne (ownerRef)
PersonaPack → owns → SympoziumInstance → owns → Channel Deployment
→ owns → Memory ConfigMap
→ owns → AgentRun → owns → Job
→ owns → Role
→ owns → RoleBinding
Usunięcie PersonaPack = kaskadowe usunięcie CAŁEGO drzewa.
Manualne (label-based, bo cross-namespace)
ClusterRole (cluster-scoped) ← label: sympozium.ai/agentrun: my-run
ClusterRoleBinding ← label: sympozium.ai/agentrun: my-run
Controller czyści po labelach w reconcileCompleted()
Więcej: Finalizer | Efemeryczny RBAC per-run | PersonaPacks - zespoły agentów
Powiązane: Finalizer | Controller i Reconciler | CRD - Custom Resource Definition