Что такое GitOps и чем он отличается от деплоя скриптом из CI?
- Push против pull модели деплоя
- Зачем нужны Argo CD и Flux?
GitOps: желаемое состояние инфраструктуры и приложений описано в Git, а агент в кластере (Argo CD, Flux) постоянно сравнивает его с фактическим и приводит к нему (pull-модель). В push-модели CI сам выполняет kubectl apply — ему нужны права на кластер, а ручные изменения никто не замечает. GitOps даёт аудит через историю, откат через revert и обнаружение дрейфа.
- CI собирает образ и меняет тег в репозитории конфигурации; CD-агент выкатывает
- Учётные данные кластера не покидают кластер
- Ручное kubectl edit будет откачено агентом (или подсвечено как дрейф)
А ещё Секреты в GitOps — только зашифрованные или через внешнее хранилище
Подробно
Поток:
разработчик → PR в код → CI: тесты, образ orders:sha
→ бот обновляет values.yaml в репозитории конфигурации
→ Argo CD видит изменение → синхронизирует кластер
Плюсы:
- единственный источник правды, всё через ревью;
- аудит: кто, что и когда изменил — история Git;
- откат —
git revert; - восстановление кластера с нуля из репозитория;
- меньше доступов наружу.
Минусы и сложности: отдельный репозиторий или каталог конфигурации, шаблонизация (Helm, Kustomize), порядок применения зависимостей, секреты, ощущение «двойной» работы для маленьких проектов.
Что хотят услышать
- Pull-модель и агент согласования.
- Отличия от push из CI: права, дрейф, аудит.
- Практическая схема потока изменений.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗GitOps требует давать CI полные права на кластер
- ✗В GitOps ручные изменения в кластере остаются незамеченными
- ✓Состояние описано в Git, агент в кластере сам подтягивает его и устраняет расхождения
- ✗GitOps — это запуск kubectl apply из CI после каждого мержа в main
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.