Argo CD: Rollback, Sync Policies a App of Apps (Časť 2)
Argo CD: Rollback ako záchranná brzda
V predchádzajúcej časti sme si pripravili infraštruktúru cez Terraform a Helm šablóny pre microservices. Teraz je čas všetko spojiť a pozrieť sa na to najdôležitejšie — čo robiť, keď sa niečo pokazí.
Argo CD Application: Spojenie všetkého dohromady
Argo CD Application je YAML, ktorý hovorí: "Vezmi tieto Helm šablóny, použi tieto values a nasaď to na tento klaster."
# argocd/applications/payment-service.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: payment-service
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/your-org/k8s-manifests.git
path: helm/microservice
targetRevision: main
helm:
valueFiles:
- ../../environments/production/payment-service.yaml
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true # Zmaže resources vymazané z Gitu
selfHeal: true # Opraví manuálne zmeny na klastri
syncOptions:
- CreateNamespace=true
retry:
limit: 3
backoff:
duration: 5s
factor: 2
maxDuration: 3mSync Policies: Automatická ochrana
selfHeal: true je kľúčový — ak niekto manuálne zmení niečo na klastri (kubectl edit), Argo CD to automaticky vráti do stavu definovaného v Gite. Žiadny configuration drift.
prune: true — ak z Gitu zmažete resource, Argo CD ho zmaže aj z klastra. Žiadne zombie deploymenty.
retry — ak sync zlyhá (napr. kvôli dočasnému network problému), Argo CD to skúsi znova s exponenciálnym backoffom.
Rollback: Tá záchranná brzda
Piatok, 16:30. Payment service nefunguje. Čo teraz?
Možnosť 1: Git revert (odporúčané)
# 1. Pozrieme sa na históriu
git log --oneline -5
# a1b2c3d feat: payment-service 2.4.1
# d4e5f6g feat: user-service 1.8.0
# g7h8i9j fix: order-service healthcheck
# ...
# 2. Revertnem posledný commit
git revert HEAD --no-edit
# 3. Push
git push origin main
# 4. Argo CD automaticky synchronizuje
# payment-service sa vráti na verziu 2.4.0
# Celý proces: ~60 sekúndPrečo je toto najlepšie:
- ✅ Plný audit trail v Gite (kto revertol, kedy, prečo)
- ✅ Argo CD automaticky synchronizuje
- ✅ Žiadna manuálna práca na klastri
- ✅ Revert je tiež commit — môžete ho revertovať
Možnosť 2: Argo CD CLI rollback
# Pozrieme sa na históriu deploymentov
argocd app history payment-service
# ID DATE REVISION
# 5 2026-02-14 16:30:00 a1b2c3d (feat: payment-service 2.4.1)
# 4 2026-02-10 09:00:00 x9y8z7w (feat: payment-service 2.4.0)
# 3 2026-01-28 14:15:00 m3n4o5p (fix: payment-service 2.3.2)
# Rollback na revíziu 4
argocd app rollback payment-service 4Možnosť 3: Pin na konkrétny Git SHA
# Ak potrebujete ísť na úplne konkrétnu verziu
argocd app set payment-service --revision x9y8z7w
argocd app sync payment-servicePorovnanie rollback metód
| Metóda | Rýchlosť | Audit trail | Komplexnosť |
|---|---|---|---|
| Git revert | ~60s | Plný (v Gite) | Nízka |
| ArgoCD CLI rollback | ~30s | Čiastočný | Stredná |
| Pin na SHA | ~30s | Čiastočný | Stredná |
| kubectl rollout undo | ~10s | Žiadny | Nebezpečná |
Celý workflow: Od commitu po rollback
┌──────────────────────────────────────────────────────┐
│ HAPPY PATH │
│ │
│ Dev pushne → CI buildne → CI updatene │
│ kód do repo Docker image image tag v │
│ Helm values │
│ │ │
│ ▼ │
│ Argo CD deteguje zmenu │
│ │ │
│ ▼ │
│ Helm renderuje manifesty │
│ │ │
│ ▼ │
│ Rolling update na klastri │
│ │ │
│ ▼ │
│ Health checks prejdú ✅ │
│ Deployment SYNCED ✅ │
└──────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────┐
│ ROLLBACK PATH │
│ │
│ Niečo je zle → Dev urobí → Push do Gitu │
│ (monitoring, git revert │
│ alerty) │ │
│ ▼ │
│ Argo CD deteguje zmenu │
│ │ │
│ ▼ │
│ Nasadí predošlú verziu │
│ │ │
│ ▼ │
│ Služba funguje ✅ │
│ Postmortem v pondelok 📋 │
└──────────────────────────────────────────────────────┘App of Apps: Keď máte 20+ microservices
Pre väčšie projekty Argo CD podporuje pattern App of Apps — jedna Argo CD aplikácia, ktorá spravuje ostatné.
# argocd/app-of-apps.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: platform
namespace: argocd
spec:
source:
repoURL: https://github.com/your-org/k8s-manifests.git
path: argocd/applications # Adresár so všetkými Application YAML
targetRevision: main
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: trueargocd/applications/
├── payment-service.yaml
├── order-service.yaml
├── user-service.yaml
├── notification-service.yaml
├── inventory-service.yaml
└── gateway.yamlPridanie novej microservice = pridanie jedného YAML súboru. Argo CD sa postará o zvyšok.
Prečo App of Apps?
Bez tohto patternu musíte manuálne vytvárať Argo CD Application pre každú microservice:
# ❌ Manuálne — pre každú novú service
kubectl apply -f argocd/applications/new-service.yamlS App of Apps stačí commitnúť nový YAML do argocd/applications/ a Argo CD ho automaticky nasadí. Meta-GitOps — aj samotné Argo CD aplikácie sú spravované cez Git.
Záver
Nasadzovanie microservices nemusí byť stresujúce. S kombináciou Terraform (infraštruktúra), Helm (šablóny) a Argo CD (GitOps delivery) máte plne auditovateľný, automatizovaný a hlavne reversibilný deployment pipeline.
Rollback nie je panika. Rollback je git revert. A to je presne tak, ako to má byť.