Co jest uważane za dobrą praktykę w K8S do zarządzania wieloma środowiskami (QA, Staging, Production, Dev, itp.)?
Jako przykład załóżmy, że zespół pracuje nad produktem, który wymaga wdrożenia kilku interfejsów API wraz z aplikacją front-end. Zwykle będzie to wymagało co najmniej 2 środowisk:
- Staging: do iteracji / testów i walidacji przed wydaniem klientowi
- Produkcja: to środowisko, do którego klient ma dostęp. Powinien zawierać stabilne i dobrze przetestowane funkcje.
Zakładając, że zespół korzysta z Kubernetes, jaka byłaby dobra praktyka w zakresie hostowania tych środowisk? Do tej pory rozważaliśmy dwie opcje:
- Użyj klastra K8s dla każdego środowiska
- Używaj tylko jednego klastra K8 i przechowuj je w różnych przestrzeniach nazw.
(1) Wydaje się najbezpieczniejszą opcją, ponieważ minimalizuje ryzyko potencjalnych błędów ludzkich i awarii maszyn, które mogłyby zagrozić środowisku produkcyjnemu. Jednak wiąże się to z kosztem większej liczby maszyn głównych, a także kosztem lepszego zarządzania infrastrukturą.
(2) Wygląda na to, że upraszcza zarządzanie infrastrukturą i wdrażaniem, ponieważ istnieje jeden klaster, ale rodzi kilka pytań, takich jak:
- W jaki sposób można się upewnić, że błąd człowieka może wpłynąć na środowisko produkcyjne?
- W jaki sposób można się upewnić, że duże obciążenie środowiska przejściowego nie spowoduje utraty wydajności w środowisku produkcyjnym?
Mogą istnieć inne obawy, więc kontaktuję się ze społecznością K8s na StackOverflow, aby lepiej zrozumieć, jak ludzie radzą sobie z tego rodzaju wyzwaniami.