🟡 Intermediate

GitOps — Deklaratívne deploymenty z Gitu

GitOps je operačný model, kde Git repozitár slúži ako jediný zdroj pravdy pre infraštruktúru a aplikácie. Zmeny sa nerobia priamo na klastri — všetko ide cez Git, a automatizované nástroje zabezpečia, že skutočný stav zodpovedá tomu, čo je v repozitári.


Čo je GitOps?

GitOps rozširuje princípy Infrastructure as Code o automatickú synchronizáciu. Namiesto manuálneho kubectl apply alebo CI/CD pipeline, ktorá pushuje zmeny, GitOps agent beží v klastri a neustále porovnáva želaný stav (Git) so skutočným stavom.

  • Git ako source of truth — čo je v Gite, to beží v klastri
  • Pull-based model — klaster si sťahuje zmeny, nie CI ich pushuje
  • Automatická synchronizácia — drift sa opraví automaticky
  • Audit trail — kompletná história zmien v Git log

Ako GitOps funguje

  1. Vývojár pushne zmenu do Git repozitára (nový image tag, zmena konfigurácie)
  2. GitOps agent detekuje zmenu v repozitári
  3. Porovnanie — agent porovná želaný stav s aktuálnym stavom klastra
  4. Synchronizácia — agent aplikuje rozdiely na klaster
  5. Monitoring — agent reportuje stav synchronizácie

Hlavné nástroje

ArgoCD

Najpopulárnejší GitOps nástroj s webovým UI. Vizualizuje stav aplikácií, podporuje Helm, Kustomize a plain YAML. Ponúka SSO, RBAC a multi-cluster správu.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/team/k8s-manifests
    targetRevision: main
    path: apps/my-app
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Flux

CNCF graduated projekt, modulárny a lightweight. Skladá sa z kontrolérov — Source, Kustomize, Helm, Notification. Silná integrácia s Helm a image automation.

Push vs Pull model

  • Push (tradičné CI/CD) — pipeline pushuje zmeny na klaster, vyžaduje cluster credentials v CI
  • Pull (GitOps) — agent v klastri si sťahuje zmeny, credentials zostávajú v klastri

Pull model je bezpečnejší — CI systém nepotrebuje prístup do klastra.

Praktické použitie

  • Multi-environment deploymenty (dev/staging/prod) cez Git branches alebo adresáre
  • Automatické rollbacky — stačí revert commit v Gite
  • Compliance a audit — každá zmena má autora a review v pull requeste
  • Multi-cluster správa z jedného repozitára

Best Practices

  • Oddeľte app repozitár od config repozitára
  • Používajte sealed secrets alebo external secrets operátor
  • Zapnite automated sync s selfHeal pre automatickú opravu driftu
  • Implementujte branch protection a povinné code review
  • Monitorujte sync status a nastavte alerty na failed sync
  • Začnite s jednou aplikáciou a postupne rozširujte

GitOps prináša do Kubernetes nasadení poriadok, bezpečnosť a auditovateľnosť. Je to prirodzená evolúcia CI/CD pre cloud-native prostredia.