Что считается хорошей практикой в K8S для управления несколькими средами (QA, Staging, Production, Dev и т.д.)?
В качестве примера, скажем, что команда работает над продуктом, который требует развертывания нескольких API вместе с интерфейсным приложением. Обычно для этого требуется как минимум 2 среды:
- Подготовка: для итераций/тестирования и проверки перед выпуском клиенту
- Производство: это среда, к которой клиент имеет доступ. Должен содержать стабильные и хорошо проверенные функции.
Итак, если команда использует Kubernetes, что будет хорошей практикой для размещения этих сред? На данный момент мы рассмотрели два варианта:
- Используйте кластер K8s для каждой среды
- Используйте только один кластер K8s и храните их в разных пространствах имен.
(1) Кажется, что самые безопасные варианты, поскольку он сводит к минимуму риски возможных ошибок человека и отказов оборудования, которые могут поставить под угрозу производственную среду. Однако это связано со стоимостью большего количества мастер-машин, а также с затратами на управление инфраструктурой.
(2) Похоже, это упрощает управление инфраструктурой и развертыванием, потому что существует один кластер, но возникает несколько вопросов, таких как:
- Как убедиться, что человеческая ошибка может повлиять на производственную среду?
- Как убедиться, что высокая нагрузка в промежуточной среде не приведет к потере производительности в производственной среде?
Могут быть и другие проблемы, поэтому я обращаюсь к сообществу K8s по StackOverflow, чтобы лучше понять, как люди справляются с такими проблемами.