Salta al contenuto principale

Domain Knowledge Base - Docker & Kubernetes

Come funziona il dominio, prima di scrivere una riga di codice? Scegli un documento dall'albero a sinistra: ogni pagina spiega una parte del modello.

Regole di Business - Docker & Kubernetes

Questo documento elenca le regole di business fondamentali del dominio Docker & Kubernetes, identificate con codice univoco BR-NNN. Ogni regola è technology-independent rispetto al cloud sottostante e descrive un vincolo invariante sul comportamento della containerizzazione e dell'orchestrazione.

---

BR-001 - Immagini immutabili e taggate per digest

Codice: BR-001 Nome: Ogni immagine è immutabile e referenziata per digest in produzione Descrizione: Una Image pubblicata nel Registry non viene sovrascritta; una nuova build produce un nuovo digest. In produzione i Pod referenziano l'immagine per digest (non per tag mutabile come latest) per garantire riproducibilità. Motivazione: Riproducibilità dei deployment e prevenzione di sorprese da tag che cambiano sotto i piedi. Priorità: ALTA Attori: Build Engineer, Registry Tracciabilità: OCI image digest; Immagine, Registry (glossary); build-image.md.

---

BR-002 - Lo stato desiderato governa lo stato reale

Codice: BR-002 Nome: Il control plane riconcilia continuamente reale verso desiderato Descrizione: Lo stato desiderato dichiarato (numero di repliche, immagine, risorse) in un Deployment è la fonte di verità. Il Control Plane riconcilia continuamente lo stato reale verso quello desiderato; le modifiche imperative dirette vengono sovrascritte dalla riconciliazione. Motivazione: Self-healing e configurazione dichiarativa, idempotente. Priorità: ALTA Attori: Control Plane, Platform Operator Tracciabilità: Kubernetes reconciliation loop; Configurazione dichiarativa (glossary); reconcile-deployment.md.

---

BR-003 - Ogni container dichiara richieste e limiti di risorse

Codice: BR-003 Nome: Nessun container production gira senza requests e limits Descrizione: Ogni container in un Pod di produzione deve dichiarare requests (per lo scheduling) e limits (per il contenimento) di CPU e memoria. Senza requests lo scheduler non può collocare correttamente; senza limits un container può esaurire le risorse del nodo. Motivazione: Scheduling corretto, isolamento e prevenzione del rumore tra workload. Priorità: ALTA Attori: Platform Operator, kube-scheduler Violazione: policy di admission che rifiuta i Pod senza requests/limits in produzione. Tracciabilità: Richieste e limiti di risorse (glossary); schedule-pod.md.

---

BR-004 - Probe di liveness e readiness obbligatorie

Codice: BR-004 Nome: Ogni container di servizio espone liveness e readiness probe Descrizione: Un container che serve traffico deve definire una readinessProbe (decide se ricevere traffico) e una livenessProbe (decide se riavviare). Il Service instrada traffico solo ai Pod READY; un Pod che fallisce la liveness viene riavviato. Motivazione: Zero-downtime durante gli aggiornamenti e self-healing dei container bloccati. Priorità: ALTA Attori: Platform Operator, kubelet Tracciabilità: Probe di liveness, Probe di readiness (glossary); reconcile-deployment.md.

---

BR-005 - Configurazione e segreti fuori dall'immagine

Codice: BR-005 Nome: Config in ConfigMap, segreti in Secret, mai cotti nell'immagine Descrizione: La configurazione specifica dell'ambiente va in ConfigMap; i segreti in Secret (idealmente cifrati a riposo e iniettati come volumi o variabili). Nessun segreto è incluso nell'immagine o nel codice, così la stessa immagine gira in ogni ambiente. Motivazione: Immagini portabili tra ambienti e prevenzione della disclosure di credenziali. Priorità: CRITICA Attori: Platform Operator, Security Operator Violazione: lo scan blocca l'immagine con segreti cotti dentro. Tracciabilità: ConfigMap, Secret (glossary); best-practices.md.

---

BR-006 - Rolling update a downtime zero con rollback

Codice: BR-006 Nome: Gli aggiornamenti sostituiscono i Pod gradualmente mantenendo la disponibilità Descrizione: Un aggiornamento di un Deployment avviene come rolling update: nuovi Pod vengono creati e resi READY prima di terminare i vecchi, rispettando maxSurge/maxUnavailable. In caso di problema, il Deployment può fare rollback alla revisione precedente. Motivazione: Continuità del servizio durante i rilasci e reversibilità rapida. Priorità: ALTA Attori: Control Plane, Platform Operator Tracciabilità: Zero-Downtime Deployment, Deployment (glossary); reconcile-deployment.md.

---

BR-007 - Privilegio minimo via RBAC e NetworkPolicy

Codice: BR-007 Nome: Identità e traffico seguono il privilegio minimo Descrizione: Ogni ServiceAccount ha permessi RBAC minimi; il traffico tra Pod è governato da NetworkPolicy deny-by-default che permette solo le comunicazioni necessarie. I container non girano come root né con privilegi non necessari. Motivazione: Contenere il blast radius di un container compromesso. Priorità: CRITICA Attori: Security Operator, Control Plane Tracciabilità: RBAC, NetworkPolicy (glossary); best-practices.md.

---

BR-008 - Immagini minimali e scansionate

Codice: BR-008 Nome: Ogni immagine è minimale, costruita multi-stage e scansionata Descrizione: Le Image usano build multi-stage per ridurre dimensione e superficie d'attacco (no toolchain di build nel runtime), partono da basi minimali e sono scansionate per vulnerabilità note prima della pubblicazione. Motivazione: Ridurre dimensione, tempo di pull e superficie d'attacco. Priorità: ALTA Attori: Build Engineer, Security Operator Tracciabilità: Build multi-stage, Layer (glossary); build-image.md.