Argo CD — это специализированный инструмент доставки приложений в Kubernetes, созданный на основе GitOps-подхода. Он отслеживает изменения в Git-репозиториях и автоматически синхронизирует их с Kubernetes-кластерами. Вся конфигурация и логика развёртывания описываются декларативно и живут в Git — Argo CD просто следит за тем, чтобы кластер соответствовал этому описанию.
Основная идея: Git хранит текущее «правильное» состояние инфраструктуры, а Argo CD проверяет, совпадает ли оно с реальной ситуацией в кластере. Если возникают отличия — система либо применяет нужные изменения автоматически, либо сигнализирует оператору о несоответствии.
Ключевые возможности Argo CD:
- 📦 Синхронизация с Git — автоматическое применение изменений, как только они попадают в репозиторий;
- 🔄 Автоматическое восстановление — если в кластере кто-то внёс правки вручную, Argo CD может вернуть его в нужное состояние;
- 📊 Визуализация — веб-интерфейс, показывающий дерево ресурсов, их статусы и историю изменений;
- 🧩 Поддержка разных форматов — Helm-чарты, Kustomize, plain YAML, Jsonnet;
- 💾 Откаты — простое восстановление предыдущего состояния через ;
git revert
- 🔐 RBAC и интеграция с SSO — контроль доступа для команд и проектов.
Манифесты подключаются в виде Application-ресурсов (CRD), в которых указывается путь к репозиторию, ветка, стратегия синхронизации и целевой namespace.
Argo CD особенно полезен в командах, где:
- конфигурация и код хранятся в Git;
- есть несколько окружений (dev/stage/prod);
- важны повторяемость, контроль и откат.
Инструмент легко интегрируется с другими компонентами Argo-экосистемы (например, Argo Workflows, Argo Events), а в сочетании с CI-системами вроде GitHub Actions, GitLab CI или Jenkins образует полный GitOps-пайплайн.
В современных DevOps-практиках Argo CD стал стандартом для управления Kubernetes-инфраструктурой — особенно в проектах, где важны прозрачность, отказоустойчивость и автоматизация процессов развертывания.
📄 Пример Application
(Argo CD + Helm)
Application
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: redis-app namespace: argocd spec: project: default source: repoURL: https://charts.bitnami.com/bitnami chart: redis targetRevision: 17.10.1 helm: values: | architecture: standalone auth: enabled: false destination: server: https://kubernetes.default.svc namespace: redis syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
🔧 Что здесь происходит:
- Разворачивается Helm-чарт Redis из внешнего репозитория Bitnami.
- Указана конкретная версия чарта ().
17.10.1
- Настраиваются значения Helm (встроенно через ).
helm.values
- Argo CD автоматически создаёт namespace , если его нет (
redis
).CreateNamespace=true
- Включена автоматическая синхронизация:
- — удаляет ресурсы, которых больше нет в Git;
prune: true
- — восстанавливает состояние, если в кластере что-то изменено вручную.
selfHeal: true
🔁 Памятка: типы синхронизации в Argo CD
Режим | Описание |
---|---|
Manual | Все изменения вносятся вручную через UI/CLI (Sync |
Automated | Argo CD сам применяет все изменения из Git, как только они появляются. |
Prune | Удаляет «лишние» ресурсы — те, что больше не описаны в Git. |
SelfHeal | Восстанавливает состояние, если ресурсы были изменены вручную в кластере. |