Пример структуры репозитория:
infra/
├── terraform/ # Инфраструктура кластера
└── k8s/ # Kubernetes-манифесты
├── base/ # Базовые конфиги
└── overlays/ # Окружения (dev/prod)
# Установка через Helm
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd argo/argo-cd \
--namespace argocd \
--create-namespace \
--set server.service.type=LoadBalancer
Параметр | Рекомендуемое значение | Описание |
---|---|---|
syncPolicy | automated | Автоматическая синхронизация |
selfHeal | true | Автовосстановление при дрифте |
# root-app.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: root-application
spec:
destination:
server: https://kubernetes.default.svc
source:
repoURL: https://github.com/your-org/gitops-repo
path: apps
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
# argocd-cm.yaml
data:
url: https://argocd.your-domain.com
dex.config: |
connectors:
- type: github
id: github
name: GitHub
config:
clientID: $GITHUB_CLIENT_ID
clientSecret: $GITHUB_CLIENT_SECRET
orgs:
- name: your-org
Метрика | Инструмент | Целевое значение |
---|---|---|
Sync Status | ArgoCD Dashboard | Synced = 100% |
Drift Detection | ArgoCD + Prometheus | Drift = 0 |
# prometheus-rules.yaml
- alert: ArgoCDSyncFailed
expr: argocd_app_info{sync_status="OutOfSync"} == 1
for: 15m
labels:
severity: critical
annotations:
summary: "Приложение {{ $labels.name }} не синхронизировано"