Что такое 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.