Открыть сервисСервис

Argo CD — инструмент непрерывной доставки

Argo CD — это декларативный инструмент с открытым исходным кодом для непрерывной доставки (Continuous Delivery, CD) в Kubernetes, реализующий подход GitOps. Argo CD автоматически синхронизирует состояние приложений, развёрнутых в кластерах Kubernetes, с желаемым состоянием, описанным в Git-репозитории. Проект является частью экосистемы Argo и развивается под управлением Cloud Native Computing Foundation (CNCF), где имеет статус инкубационного проекта.

История

Проект Argo CD был создан компанией Intuit в 2018 году как внутренний инструмент для управления развёртыванием микросервисов. В 2020 году проект был передан в CNCF и получил статус инкубационного. К началу 2020-х годов Argo CD стал одним из наиболее распространённых решений для реализации GitOps в индустрии, наряду с Flux CD. В 2022 году проект вошёл в число самых быстрорастущих в экосистеме CNCF.

Архитектура и принцип работы

Argo CD основан на концепции GitOps, согласно которой Git-репозиторий является единственным источником истины (single source of truth) для описания желаемого состояния инфраструктуры и приложений. Основные компоненты архитектуры:

  • API-сервер — принимает запросы от CLI, веб-интерфейса и CI-систем, управляет аутентификацией и авторизацией.
  • Контроллер приложений (Application Controller) — непрерывно сравнивает фактическое состояние ресурсов в кластере с целевым состоянием, описанным в манифестах репозитория.
  • Репозиторий-сервер (Repo Server) — клонирует Git-репозитории, генерирует манифесты (например, через Helm или Kustomize) и кэширует их.
  • Redis — используется для кэширования состояния и управления кластерной информацией.
  • CLI-интерфейс — предоставляет команды для управления приложениями, синхронизации и диагностики.

Рабочий цикл Argo CD выглядит следующим образом: разработчик вносит изменения в манифесты Kubernetes в Git-репозитории; контроллер Argo CD обнаруживает расхождение между желаемым и фактическим состоянием; при включённой автоматической синхронизации инструмент применяет изменения к кластеру; при отключённой — ожидает ручного подтверждения через интерфейс или CLI.

Ключевые возможности

Декларативное управление приложениями

Argo CD оперирует понятием Application — пользовательского ресурса Kubernetes (Custom Resource Definition, CRD), который описывает источник манифестов (путь в Git-репозитории, Helm-чарт или директорию) и целевой кластер. Приложения могут быть сгруппированы в проекты (AppProject) для разграничения доступа и областей развёртывания.

Поддержка форматов манифестов

Инструмент поддерживает несколько способов описания манифестов:

  • нативные YAML/JSON-манифесты Kubernetes;
  • Helm-чарты (включая версии Helm 3);
  • Kustomize;
  • Jsonnet;
  • произвольные конфигурации через плагины конфигурации (Config Management Plugins).

Автоматическая и ручная синхронизация

Argo CD поддерживает три режима синхронизации:

  • ручная — оператор инициирует применение изменений через веб-интерфейс или CLI;
  • автоматическая — при обнаружении расхождения инструмент самостоятельно применяет изменения;
  • автоматическая с прунингом — дополнительно удаляет ресурсы, отсутствующие в манифестах, но присутствующие в кластере.

Откат изменений (Rollback)

Поскольку каждое развёртывание фиксируется как история синхронизаций, Argo CD позволяет откатить приложение к любой предыдущей версии одним действием. Это обеспечивает высокую скорость восстановления при инцидентах.

Multi-cluster управление

Argo CD может управлять несколькими кластерами Kubernetes одновременно. Целевой кластер регистрируется через секрет Kubernetes, после чего приложения могут разворачиваться в любом из зарегистрированных кластеров.

Безопасность и управление доступом

Инструмент поддерживает интеграцию с внешними провайдерами аутентификации (OIDC, LDAP, SAML), а также встроенную модель RBAC. Пользователи могут получать права на уровне проектов и отдельных приложений. Для доступа к частным репозиториям поддерживается хранение SSH-ключей и токенов в секретах Kubernetes.

Веб-интерфейс и CLI

Веб-интерфейс Argo CD предоставляет визуализацию состояния приложений, граф зависимостей ресурсов, журнал синхронизаций и возможность выполнять синхронизацию в один клик. CLI-инструмент argocd позволяет автоматизировать операции в скриптах и CI-конвейерах.

Применение

Argo CD применяется в организациях, использующих Kubernetes в производственной эксплуатации, для:

  • стандартизации процесса доставки приложений;
  • обеспечения воспроизводимости развёртываний;
  • аудита изменений инфраструктуры (все изменения фиксируются в истории Git);
  • быстрого восстановления после сбоев путём отката к стабильной версии;
  • управления конфигурацией в мультикластерных средах.

Инструмент часто используется совместно с CI-системами (например, GitLab CI, Jenkins, GitHub Actions), которые выполняют сборку образов и обновление манифестов в репозитории, после чего Argo CD автоматически разворачивает изменения.

Интеграция с экосистемой Argo

Argo CD является частью более широкой экосистемы Argo, включающей также Argo Workflows (оркестрация контейнерных задач), Argo Rollouts (канареечные развёртывания) и Argo Events (событийно-ориентированная автоматизация). Совместное использование этих инструментов позволяет построить полный конвейер доставки и эксплуатации приложений.

Ограничения

К числу ограничений Argo CD относят:

  • необходимость адаптации процессов разработки под GitOps-подход;
  • сложность первоначальной настройки в крупных организациях с множеством кластеров;
  • потенциальные сложности при работе с приложениями, требующими недетерминированной генерации манифестов;
  • отсутствие встроенных механизмов канареечного развёртывания (решается интеграцией с Argo Rollouts).

Альтернативы

Основными альтернативами Argo CD являются Flux CD (также проект CNCF), Jenkins X, Rancher Fleet и собственные решения облачных провайдеров (например, AWS AppConfig). Выбор между Argo CD и Flux CD часто определяется предпочтениями команды в отношении формата манифестов и модели синхронизации.

Источники

  • Официальная документация проекта Argo CD (argo-cd.readthedocs.io).
  • Репозиторий Argo CD на GitHub (github.com/argoproj/argo-cd).
  • Материалы CNCF по проектам экосистемы Argo.
  • Статья «GitOps and Argo CD» в блоге Intuit Engineering.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru