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