Що вважається хорошою практикою роботи K8S для керування кількома середовищами (QA, Staging, Production, Dev тощо)?
Як приклад, скажіть, що команда працює над продуктом, який потребує розгортання декількох API, а також додатка на передній панелі. Зазвичай для цього знадобиться щонайменше 2 середовища:
- Постановка: для ітерацій / тестування та перевірки перед випуском клієнта
- Виробництво: Це середовище, до якого має доступ клієнт. Повинен містити стабільні та добре перевірені функції.
Отже, якщо припустити, що команда використовує Kubernetes, що було б хорошою практикою розміщення цих середовищ? На сьогодні ми розглянули два варіанти:
- Використовуйте кластер K8s для кожного середовища
- Використовуйте лише один кластер K8s і зберігайте їх у різних просторах імен.
(1) Здається найбезпечнішим варіантом, оскільки це мінімізує ризики можливих помилок людини та збоїв на машині, що можуть поставити під загрозу виробниче середовище. Однак це пов'язано з витратами на більшу кількість головних машин, а також з витратами на більше управління інфраструктурою.
(2) Схоже, це спрощує управління інфраструктурою та розгортанням, оскільки є один єдиний кластер, але він викликає кілька питань, таких як:
- Як можна переконатися, що помилка людини може вплинути на виробниче середовище?
- Як можна переконатися, що високе навантаження в умовах постановки не призведе до втрати продуктивності у виробничих умовах?
Можуть бути і інші проблеми, тому я звертаюся до спільноти К8 на StackOverflow, щоб краще зрозуміти, як люди мають справу з подібними проблемами.