Skip to content
EN

Как настроить GitOps с ArgoCD

Коротко:

GitOps через ArgoCD: манифесты в Git → agent в Kubernetes автоматически применяет → UI показывает sync status. Setup за 15 мин: install ArgoCD через manifests, create Application CRD pointing Git repo, enable auto-sync. Changes в Git = changes в cluster автоматически. Rollback = git revert.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Проверить свой сайт →

Пошаговая настройка

  1. Install ArgoCD: kubectl create namespace argocd && kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  2. Получите initial password: kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
  3. Port-forward UI: kubectl port-forward svc/argocd-server -n argocd 8080:443 → https://localhost:8080
  4. Create Git repo для manifests (отдельный от app code)
  5. Define Application CRD: source=Git path, destination=cluster namespace
  6. Enable auto-sync: syncPolicy: { automated: { prune: true, selfHeal: true } }
  7. Test: commit изменение в Git → через 3 мин applied в cluster

Рабочие примеры

СценарийКонфиг
First ApplicationapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: default source: repoURL: https://github.com/me/manifests path: apps/my-app targetRevision: main destination: server: https://kubernetes.default.svc namespace: my-app syncPolicy: automated: prune: true selfHeal: true
App of Apps patternapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: root spec: source: repoURL: https://github.com/me/manifests path: root # Directory содержит yaml с дополнительными Application CRDs
Helm chart via ArgoCDsource: repoURL: https://charts.bitnami.com/bitnami chart: postgresql targetRevision: 13.0.0 helm: values: | auth: { postgresPassword: "from-secret" }
Sync wave (order resources)metadata: annotations: argocd.argoproj.io/sync-wave: "1" # Deploy этот first
Notifications на Slack# Install argocd-notifications addon data: service.slack: | token: $slack-token subscriptions: | - recipients: [slack:deployments] triggers: [on-sync-succeeded, on-sync-failed]

Типичные ошибки

  • auto-sync + prune: true на критичный resource → случайное удаление при Git revert
  • SSH keys для private Git — нужен Kubernetes secret + правильный auth
  • App-of-apps без TTL — broken child app держит parent в Degraded state
  • Helm releases managed ArgoCD conflict с manual helm install
  • Multi-cluster: нужны cluster credentials + certificate auth или kube API token

TL;DR

Чтобы настроить GitOps с ArgoCD в 2026 году, установите ArgoCD в ваш кластер Kubernetes, настройте репозиторий Git с манифестами Kubernetes и используйте команду argocd app create для создания приложения. Затем синхронизируйте приложение с помощью argocd app sync. Это позволит вам управлять развертыванием приложений через Git, обеспечивая автоматизацию и контроль версий.

Установка ArgoCD

Первым шагом в настройке GitOps с ArgoCD является его установка в ваш кластер Kubernetes. Для этого выполните следующие шаги:

  1. Скачайте и установите ArgoCD:

    kubectl create namespace argocd
  2. Затем примените манифест для установки ArgoCD:

    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  3. После успешной установки проверьте, что все поды работают:

    kubectl get pods -n argocd

Теперь вам нужно получить пароль для входа в интерфейс ArgoCD. Выполните следующую команду:

kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o jsonpath='{.items[0].metadata.name}'

После этого получите пароль:

kubectl get pod  -n argocd -o jsonpath='{.data.password}' | base64 -d

Теперь вы можете войти в веб-интерфейс ArgoCD, используя имя пользователя admin и полученный пароль.

Настройка репозитория Git и создание приложения

После установки ArgoCD следующим шагом будет настройка репозитория Git, который будет содержать манифесты Kubernetes. Убедитесь, что ваш репозиторий имеет корректную структуру и доступен для ArgoCD. Например, ваш репозиторий может выглядеть следующим образом:

my-app/
  ├── k8s/
  │   ├── deployment.yaml
  │   ├── service.yaml
  └── README.md

Теперь добавим репозиторий в ArgoCD:

argocd repo add  --username  --password 

После этого создайте приложение с помощью следующей команды:

argocd app create my-app --repo  --path k8s --dest-server https://kubernetes.default.svc --dest-namespace default

Теперь ваше приложение настроено для отслеживания изменений в репозитории Git. Чтобы синхронизировать приложение с состоянием в Git, используйте команду:

argocd app sync my-app

Это позволит ArgoCD автоматически развертывать изменения, внесенные в репозиторий, в кластер Kubernetes, что делает процесс управления приложениями более эффективным и предсказуемым.

Как настроить GitOps с ArgoCD — TL;DR

Для настройки GitOps с ArgoCD необходимо установить ArgoCD, создать репозиторий Git с необходимыми манифестами Kubernetes и настроить приложение в ArgoCD, указав путь к этому репозиторию. Используйте команды argocd app create и argocd app sync для создания и синхронизации приложения соответственно.

Практический пример настройки GitOps с ArgoCD

В этой секции мы рассмотрим подробный пример настройки GitOps с использованием ArgoCD, включая создание репозитория и конфигурацию приложения. Для начала, убедитесь, что у вас установлен Git и kubectl, а также доступ к вашему кластеру Kubernetes.

1. Создайте новый репозиторий на GitHub, где будут храниться ваши манифесты Kubernetes. Например, создайте структуру каталогов:

my-gitops-repo/
 ├── apps/
 │   └── my-app/
 │       ├── deployment.yaml
 │       └── service.yaml
 └── kustomization.yaml

2. В файле deployment.yaml добавьте описание вашего приложения:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app-image:latest
        ports:
        - containerPort: 80

3. В файле service.yaml создайте сервис для доступа к вашему приложению:

apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: my-app

4. Создайте файл kustomization.yaml для управления ресурсами:

resources:
  - deployment.yaml
  - service.yaml

5. После подготовки файлов, зафиксируйте изменения и отправьте их в ваш репозиторий:

git add .
git commit -m "Добавлены манифесты приложения"
git push origin main

6. Убедитесь, что ArgoCD установлен и запущен в вашем кластере Kubernetes. Теперь вам нужно создать приложение в ArgoCD, используя команду:

argocd app create my-app \
  --repo https://github.com/your-username/my-gitops-repo \
  --path apps/my-app \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

7. После создания приложения, выполните синхронизацию:

argocd app sync my-app

8. Проверьте статус приложения с помощью команды:

argocd app get my-app

Теперь ваше приложение развернуто в Kubernetes, и вы можете управлять его состоянием с помощью GitOps. Если вы внесете изменения в манифесты, просто обновите репозиторий, и ArgoCD автоматически применит их в кластере.

Больше по теме

Часто задаваемые вопросы

ArgoCD для small cluster — overkill?

Для 1 app — overkill. Для 3+ apps/services в Kubernetes — ArgoCD убирает manual kubectl + provides audit trail + rollback.

Private repos — доступ?

HTTPS: username + personal access token в secret. SSH: deploy key. В UI → Settings → Repositories.

Как secrets?

НЕ plain в Git. Sealed Secrets (bitnami) encrypted в Git, расшифровываются в cluster. Или External Secrets Operator → Vault/AWS SM/SSM.

Multi-env (dev/staging/prod)?

Kustomize overlays + separate Applications per env. Или ApplicationSet для DRY.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.