Qu'est-ce qui est considéré comme une bonne pratique avec K8S pour la gestion de plusieurs environnements (QA, Staging, Production, Dev, etc.)?
À titre d'exemple, disons qu'une équipe travaille sur un produit qui nécessite le déploiement de quelques API, ainsi qu'une application frontale. Habituellement, cela nécessitera au moins 2 environnements:
- Staging: pour les itérations / tests et la validation avant la publication au client
- Production: il s'agit de l'environnement auquel le client a accès. Doit contenir des fonctionnalités stables et bien testées.
Donc, en supposant que l'équipe utilise Kubernetes, quelle serait une bonne pratique pour héberger ces environnements? Jusqu'à présent, nous avons envisagé deux options:
- Utilisez un cluster K8s pour chaque environnement
- Utilisez un seul cluster K8 et conservez-les dans différents espaces de noms.
(1) Semble les options les plus sûres car elle minimise les risques d'erreur humaine potentielle et de pannes de machines, qui pourraient mettre l'environnement de production en danger. Cependant, cela s'accompagne du coût d'un plus grand nombre de machines maîtres et également du coût d'une plus grande gestion de l'infrastructure.
(2) On dirait que cela simplifie la gestion de l'infrastructure et du déploiement car il n'y a qu'un seul cluster, mais cela soulève quelques questions telles que:
- Comment s'assurer qu'une erreur humaine peut avoir un impact sur l'environnement de production?
- Comment s'assurer qu'une charge élevée dans l'environnement intermédiaire ne causera pas de perte de performances dans l'environnement de production?
Il peut y avoir d'autres préoccupations, alors je contacte la communauté K8 sur StackOverflow pour mieux comprendre comment les gens font face à ce genre de défis.