Как запустить отказоустойчивый гитлаб на 1000 пользователей и не свихнуться

Базовые инженерные практики

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

люди, администрирующие ci/cd инфраструктуру

Тезисы

Наша компания занимается разработкой и эксплуатацией беспилотного транспорта.
Есть система управления флотом, построенная на микросервисной архитектуре в Kubernetes.
Автопилот работает на автомобилях, написан на C++, его сборка крайне ресурсоёмкая и требует сотни CPU во время релизов.

Для нас важна оптимизация использования ресурсов через автоскейлинг раннеров, поскольку большую часть времени сотни CPU простаивают.
Особая задача — доставка обновлений автопилота на удалённые машины с ограниченной или отсутствующей связью, что сильно отличается от классических DevOps-сценариев.

Что было до перехода на кластерный GitLab

Использовался однодовый GitLab с большими ресурсами (60 CPU, 150 ГБ памяти), но узким местом оставался диск.
Обновления сопровождались простоем.
Под большой нагрузкой возникали фризы и задержки, особенно в Sidekiq.
Применялась классическая конфигурация статических раннеров: они всегда избыток в обычное время и острая нехватка во время релизов.
Бэкап был реализован через снепшоты ВМ без проверки восстановления и работоспособности.

Применённые решения и результаты

Перешли на кластерный GitLab с обширной ролей развертывания и полной автоматизацией.
Обновления проходят без простоя в 11 из 12 релизов в году (ежегодный мажорный релиз всё ещё требует перерыва).
Работа без фризов и задержек при высокой нагрузке.
Внедрён автоскейлинг раннеров, которые автоматически добавляются и убираются в зависимости от нагрузки.
Ежедневно снимается и разворачивается бэкап на резервном кластере, который также служит площадкой для экспериментов.
Подробно проработаны healthcheck-ы различных компонентов GitLab, миграции базы данных.
Мы включили в доклад опыт авторов драйвера для интеграции автоскейл-раннеров.

Девопс-инженер в компании Эвокарго

Сейчас работаю в команде, которая отвечает за доставку обновлений на автомобили, а так же за поддержку всех инструментов CI/CD и сопутствующих сервисов.

Мои ключевые достижения в нынешней команде:
- Запуск системы доставки обновлений на автомобили;
- Внедрение правильных практик работы с IAC и хранения секретов;
- Внедрение отказоустойчивого кластерного гитлаба с автоскейл раннерами

В айти 15 лет. До этого занимался поддержкой CI/CD инфраструктуры в компаниях Тинькоф и ВТБ.

Видео