Стек проекта: VMware, Kubernetes, Docker, Gitlab (CI, gitlab-runners DinD), Helm 3, Prometheus, VictoriaMetrics, Fluent Bit, HAProxy, Velero, EFK, Pacemaker/Corosync.
Проблемы, выявленные после аудита:— Некоторые приложения деплоились без реквестов и лимитов.
— Helm 3 не видел системные сервисы (NGINX Ingress, Fluent Bit, Prometheus), и они стали работать, как обычные deploy/daemonset и т. п., что вызывало кучу неудобств для внесения изменений в конфиги.
— В кластерах использовался GitLab Runner, настроенный на одном из внешних серверов.
— Все логи из кластера писались в один индекс Elasticsearch, и разным группам разработчиков было неудобно искать свои логи в общей массе.
— В кластерах не было системы резервного копирования.
Решение:
— По согласованию с клиентом, разработчики добавили в свои чарты реквесты и лимиты для приложений. На случай если разработчики всё же где-то забудут указать ограничения, мы дополнительно добавили LimitRange в неймспейсы.
— Сделали резервные копии всех текущих манифестов системных приложений (NGINX Ingress, Fluent Bit, Prometheus). Старое ПО вручную удалили и установили новое через Helm 3.
— Перевели раннеры под управление кластеров Kubernetes.
— Установили и настроили алертменеджер, а также по согласованию с заказчиком распределили по группам некоторые алерты.
— Сделали для каждой команды свой индекс и выделили отдельный индекс для логов системных приложений. Так стало гораздо удобнее и разработчикам, администраторам кластера.
— Дополнительно потребовалось решение, которое позволило бы писать логи Fluent Bit в ELK-кластер, состоящий их трёх хостов. Мы решили использовать HAProxy, развёрнутый из Helm-чарта прямо в неймспейс с Fluent Bit.
— Установили Velero — теперь бэкапы сохраняются в S3-облако. Дополнительно был подготовлен disastery-план на случай, если кластер выйдет из строя.
Результат: инженеры Southbridge обеспечили функционирование и масштабирование двух кластеров Kubernetes. Видоизменили системные компоненты кластеров. Обеспечили поддержку поставок изменений (CI/CD) в кластерах Kubernetes. Обеспечили мониторинг кластеров и приложений, работающих в них. Создали дашборды в Grafana. Обеспечили доступность кластеров и работающих в них приложений в режиме 24/7. Сформировали и обеспечили для кластеров поддержку в актуальном состоянии DRP. Совместно со службой 24/7 обеспечили оповещение и помощь в эскалации по всем проблемам кластеров.
Еще больше подробностей в блоге