Разница между GitOps и традиционным CI/CD

В обычном процессе CI/CD Kubernetes происходит следующий процесс:

  • клонировать код из git
  • создать и отправить образ докера
  • обновить развертывание Kubernetes с обновленным кодом

Согласно определению gitops

GitOps - это новый подход к непрерывному развертыванию, который использует Git как единый источник достоверной информации для декларативной инфраструктуры и приложений, обеспечивая как редактирование, так и контроль изменений. В GitOps система запускается путем отправки запросов на вытягивание (и последующих слияний) для достижения желаемого состояния системы, представленного в репозитории Git.

Каково мое понимание gitops, когда вы обновляете что-либо в git (поскольку это источник истины), желаемое состояние kubernetes меняется на последнее и развертывается последний код.

Конечный результат традиционного CI/CD без gitops: новый код развертывается как развертывание Kubernetes

Конечный результат gitops: новый код развертывается как развертывание кубернетов

Я не могу понять разницу. извините, если вам это покажется странным. Но я новичок и изучаю gitops .

Заранее спасибо за ваш ответ

3 ответа

GitOps — это не что иное, как распространение принципов CI/CD за пределы кода приложения: на инфракод. Простой. Вы можете использовать Git как источник правды, который сочетается с Terraform (предоставление), Ansible (управление конфигурацией) и Kubernetes (оркестровка) в качестве примера ... для достижения цели сохранения Git как 1:1 отражения вашего инфра. В этом нет ничего нового, и не беспокойтесь о таких причудливых терминах...

CICD фокусируется на всей цепочке:

  • Вы проверяете свой код
  • Код пройти тестирование
  • Контейнер создан и загружен
  • Контейнер развернут
  • Контейнер пройти тестирование

Плюс много других промежуточных шагов. Вот почему это непрерывная интеграция и развертывание. Можно также сказать, непрерывный процесс.

GitOps не заботится о вашем коде, сборке докеров или что-то в этом роде. Он полностью сосредоточен на обновлении ваших приложений (часть развертывания) в экстремальной форме с полностью автоматизированной прогрессивной доставкой с переключением трафика и проверками состояния, автоматическим откатом и т. Д.

Помимо этого, у вас есть другие мелкие детали, которые иногда имеют значение, например, push vs pull, автономность кластера, разделение задач.

Краткий ответ - GitOps - это фреймворк, CI/CD - это процесс!

GitOps стремится использовать Git как источник истины и дает разработчикам возможность выполнять ИТ-операции. Он автоматизирует рабочий процесс Git за счет непрерывной интеграции и непрерывной доставки (CI/CD). Позвольте мне привести здесь пример - у меня есть кластер kubernetes, для которого у меня настроены конвейеры CI/CD для автоматизации, но мы привыкли видеть инциденты, когда кто-то вручную вносил изменения в версию приложения непосредственно в кластере (происходит везде!). Мы использовали GitOps для объявления моего кластера, чтобы каждый раз, когда кто-то вносил изменения вручную, он отменял и возвращал его к исходному состоянию, заявленному в Git (выполняется с помощью агента GitOps, такого как Flux).

Другие вопросы по тегам