GitOps: git как источник правды
Pull-деплой из git, агент в кластере, drift detection и чем GitOps отличается от обычного push-CI.
Push против pull
В обычном CI/CD пайплайн сам ходит в кластер и применяет изменения:
kubectl apply, helm upgrade. Это push-модель — снаружи толкают
состояние внутрь. У неё есть слабые места: пайплайну нужен доступ в
кластер (а это широкие права наружу), и никто не следит, что в кластере
осталось ровно то, что задеплоили.
GitOps переворачивает это в pull-модель. Внутри кластера живёт агент (Argo CD, Flux), который сам следит за git-репозиторием с манифестами и подтягивает изменения. Снаружи в кластер никто не ходит.
Git — единственный источник правды
Главный принцип: желаемое состояние кластера целиком описано в git. Хочешь выкатить новую версию — делаешь коммит (или merge в нужную ветку), который меняет манифест. Агент видит изменение и применяет его.
Отсюда следствия:
- Выкат — это git-коммит, у него есть автор, ревью и история.
- Откат — это
git revert: вернул манифест, агент откатил кластер. - Доступ в кластер снаружи не нужен, права у агента внутри.
Drift detection
Агент не просто применяет изменения по событию, он постоянно сверяет желаемое (git) с фактическим (кластер). Если кто-то залез руками и поменял что-то мимо git, это дрейф — и агент его видит.
Дальше два режима. В режиме оповещения агент помечает приложение как
OutOfSync и показывает разницу. В режиме автосинхронизации он сам
возвращает кластер к состоянию из git, затирая ручную правку. Так
ручные изменения в обход git не выживают — это и держит «git = правда».
Что GitOps не делает
GitOps отвечает за доставку (continuous delivery), а не за сборку. Образ
по-прежнему собирает обычный CI: тесты, docker build, push в registry.
GitOps включается дальше — когда новый образ нужно выкатить в кластер.
Типичная связка: CI собирает образ и обновляет тег в git-репозитории с манифестами, а GitOps-агент подхватывает это и катит в кластер.
Что важно запомнить
GitOps — это pull-доставка: агент в кластере (Argo CD, Flux) сам тянет манифесты из git, наружу доступ не нужен.
Git — единственный источник правды о состоянии кластера. Выкат и откат — обычные git-операции с историей и ревью.
Агент постоянно сверяет git с кластером и лечит дрейф; ручные правки в обход git не выживают. Сборку образа по-прежнему делает обычный CI.
В следующих треках это соединяется с Kubernetes: манифесты из git, которые катит агент, — это те же Deployment и Service.
Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс