Как запустить отказоустойчивый гитлаб на 1000 пользователей и не свихнуться
Программный комитет ещё не принял решения по этому докладу
Целевая аудитория
Тезисы
Наша компания занимается разработкой и эксплуатацией беспилотного транспорта.
Есть система управления флотом, построенная на микросервисной архитектуре в Kubernetes.
Автопилот работает на автомобилях, написан на C++, его сборка крайне ресурсоёмкая и требует сотни CPU во время релизов.
Для нас важна оптимизация использования ресурсов через автоскейлинг раннеров, поскольку большую часть времени сотни CPU простаивают.
Особая задача — доставка обновлений автопилота на удалённые машины с ограниченной или отсутствующей связью, что сильно отличается от классических DevOps-сценариев.
Что было до перехода на кластерный GitLab
Использовался однодовый GitLab с большими ресурсами (60 CPU, 150 ГБ памяти), но узким местом оставался диск.
Обновления сопровождались простоем.
Под большой нагрузкой возникали фризы и задержки, особенно в Sidekiq.
Применялась классическая конфигурация статических раннеров: они всегда избыток в обычное время и острая нехватка во время релизов.
Бэкап был реализован через снепшоты ВМ без проверки восстановления и работоспособности.
Применённые решения и результаты
Перешли на кластерный GitLab с обширной ролей развертывания и полной автоматизацией.
Обновления проходят без простоя в 11 из 12 релизов в году (ежегодный мажорный релиз всё ещё требует перерыва).
Работа без фризов и задержек при высокой нагрузке.
Внедрён автоскейлинг раннеров, которые автоматически добавляются и убираются в зависимости от нагрузки.
Ежедневно снимается и разворачивается бэкап на резервном кластере, который также служит площадкой для экспериментов.
Подробно проработаны healthcheck-ы различных компонентов GitLab, миграции базы данных.
Мы включили в доклад опыт авторов драйвера для интеграции автоскейл-раннеров.
Девопс-инженер в компании Эвокарго
Сейчас работаю в команде, которая отвечает за доставку обновлений на автомобили, а так же за поддержку всех инструментов CI/CD и сопутствующих сервисов.
Мои ключевые достижения в нынешней команде:
- Запуск системы доставки обновлений на автомобили;
- Внедрение правильных практик работы с IAC и хранения секретов;
- Внедрение отказоустойчивого кластерного гитлаба с автоскейл раннерами
В айти 15 лет. До этого занимался поддержкой CI/CD инфраструктуры в компаниях Тинькоф и ВТБ.
Видео
Другие доклады секции
Базовые инженерные практики