Obsah článku / Contents
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."

yaml
# 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: 3m

Sync 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é)

bash
# 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únd

Preč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

bash
# 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 4

Možnosť 3: Pin na konkrétny Git SHA

bash
# Ak potrebujete ísť na úplne konkrétnu verziu
argocd app set payment-service --revision x9y8z7w
argocd app sync payment-service

Porovnanie rollback metód

MetódaRýchlosťAudit trailKomplexnosť
Git revert~60sPlný (v Gite)Nízka
ArgoCD CLI rollback~30sČiastočnýStredná
Pin na SHA~30sČiastočnýStredná
kubectl rollout undo~10sŽiadnyNebezpeč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é.

yaml
# 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: true
argocd/applications/
├── payment-service.yaml
├── order-service.yaml
├── user-service.yaml
├── notification-service.yaml
├── inventory-service.yaml
└── gateway.yaml

Pridanie 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:

bash
# ❌ Manuálne — pre každú novú service
kubectl apply -f argocd/applications/new-service.yaml

S 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ť.

Všetky články