Что такое ArgoCD?
ArgoCD — это декларативный GitOps инструмент непрерывной доставки для Kubernetes. Он автоматически синхронизирует состояние приложений в кластере с конфигурациями, хранящимися в Git репозиториях, обеспечивая принцип "Git как единственный источник истины".
Основные возможности ArgoCD
- GitOps workflow — автоматическая синхронизация с Git репозиториями
- Declarative setup — декларативное описание приложений
- Multi-cluster support — управление множественными кластерами
- Web UI — удобный веб-интерфейс для мониторинга
- CLI tool — командная строка для автоматизации
- RBAC — детальное управление доступом
- Hooks — pre/post sync hooks для дополнительных действий
Архитектура ArgoCD
- API Server — REST/gRPC API и веб-интерфейс
- Repository Server — взаимодействие с Git репозиториями
- Application Controller — мониторинг приложений и синхронизация
- Redis — кеширование и временное хранение
- Dex — аутентификация и SSO интеграция
Установка ArgoCD
1# Создание namespace
2kubectl create namespace argocd
3
4# Установка ArgoCD
5kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
6
7# Получение пароля admin пользователя
8kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
9
10# Port forwarding для доступа к UI
11kubectl port-forward svc/argocd-server -n argocd 8080:443
12
13# Установка CLI
14curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
15sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
Создание Application
1# application.yaml
2apiVersion: argoproj.io/v1alpha1
3kind: Application
4metadata:
5 name: guestbook
6 namespace: argocd
7spec:
8 project: default
9 source:
10 repoURL: https://github.com/argoproj/argocd-example-apps.git
11 targetRevision: HEAD
12 path: guestbook
13 destination:
14 server: https://kubernetes.default.svc
15 namespace: guestbook
16 syncPolicy:
17 automated:
18 prune: true
19 selfHeal: true
20 syncOptions:
21 - CreateNamespace=true
Основные команды ArgoCD CLI
1# Логин в ArgoCD
2argocd login localhost:8080
3
4# Список приложений
5argocd app list
6
7# Создание приложения
8argocd app create guestbook \
9 --repo https://github.com/argoproj/argocd-example-apps.git \
10 --path guestbook \
11 --dest-server https://kubernetes.default.svc \
12 --dest-namespace guestbook
13
14# Синхронизация приложения
15argocd app sync guestbook
16
17# Статус приложения
18argocd app get guestbook
19
20# Удаление приложения
21argocd app delete guestbook
Когда использовать ArgoCD
- GitOps подход к развертыванию приложений
- Необходимость в декларативном управлении инфраструктурой
- Multi-cluster и multi-environment развертывания
- Команды, работающие с множественными приложениями
- Необходимость в audit trail и истории изменений
- Автоматизация CD процессов без написания скриптов
- Rollback и управление версиями приложений
Преимущества ArgoCD
- GitOps принципы — Git как единственный источник истины
- Визуализация — наглядное отображение состояния приложений
- Автоматизация — автоматическая синхронизация и самовосстановление
- Безопасность — RBAC и интеграция с SSO системами
- Масштабируемость — поддержка тысяч приложений
- Extensibility — поддержка различных инструментов (Helm, Kustomize)
Интеграция с инструментами
1# Поддержка Helm
2source:
3 repoURL: https://helm-repo.example.com
4 chart: my-chart
5 targetRevision: 1.2.3
6 helm:
7 parameters:
8 - name: image.tag
9 value: v1.0.0
10
11# Поддержка Kustomize
12source:
13 repoURL: https://github.com/example/app
14 path: overlays/production
15 targetRevision: HEAD
Мониторинг и алерты
- Интеграция с Prometheus для метрик
- Webhooks для уведомлений
- Slack/Teams интеграция
- Custom health checks
- Application events и логирование
Best Practices
- Используй отдельные репозитории для кода и конфигураций
- Структурируй репозитории по окружениям
- Настрой RBAC для команд и проектов
- Используй App of Apps паттерн для управления множественными приложениями
- Настрой мониторинг и алерты
- Регулярно обновляй ArgoCD до последних версий
Альтернативы ArgoCD
- Flux — другой популярный GitOps инструмент
- Jenkins X — cloud-native CI/CD платформа
- Tekton — Kubernetes-native CI/CD framework
- GitLab CI/CD — встроенные возможности GitLab
- Spinnaker — multi-cloud continuous delivery platform
- Harness — коммерческая CD платформа
FAQ
Подходит ли ArgoCD для продакшена?
Да, ArgoCD широко используется в production средах крупными компаниями, включая Red Hat, Adobe, и многими другими. Это зрелый и стабильный проект CNCF.
Какие требования к инфраструктуре?
ArgoCD требует Kubernetes кластер и может работать как в небольших, так и в крупных инфраструктурах. Минимальные требования: 2 CPU cores и 4GB RAM для небольших развертываний.
Можно ли использовать ArgoCD с private Git репозиториями?
Да, ArgoCD поддерживает различные методы аутентификации для private репозиториев: SSH keys, HTTPS credentials, GitHub App tokens.