Qual è considerata una buona pratica con K8S per la gestione di più ambienti (QA, Staging, Produzione, Sviluppo, ecc.)?
Ad esempio, supponiamo che un team stia lavorando a un prodotto che richiede la distribuzione di alcune API, insieme a un'applicazione front-end. Di solito, questo richiederà almeno 2 ambienti:
- Messa in scena: per iterazioni / test e convalida prima del rilascio al client
- Produzione: questo è l'ambiente a cui il cliente ha accesso. Dovrebbe contenere funzionalità stabili e ben testate.
Quindi, supponendo che il team utilizzi Kubernetes, quale sarebbe una buona pratica per ospitare questi ambienti? Finora abbiamo considerato due opzioni:
- Usa un cluster K8s per ogni ambiente
- Utilizza un solo cluster K8 e conservali in spazi dei nomi diversi.
(1) Sembra l'opzione più sicura poiché riduce al minimo i rischi di potenziali errori umani e guasti della macchina, che potrebbero mettere in pericolo l'ambiente di produzione. Tuttavia, ciò comporta il costo di più macchine master e anche il costo di una maggiore gestione dell'infrastruttura.
(2) Sembra che semplifichi la gestione dell'infrastruttura e della distribuzione perché c'è un singolo cluster, ma solleva alcune domande come:
- Come ci si assicura che un errore umano possa avere un impatto sull'ambiente di produzione?
- Come ci si assicura che un carico elevato nell'ambiente di staging non provochi una perdita di prestazioni nell'ambiente di produzione?
Potrebbero esserci altre preoccupazioni, quindi mi rivolgo alla comunità K8s su StackOverflow per avere una migliore comprensione di come le persone affrontano questo tipo di sfide.
