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
- Vývojár pushne zmenu do Git repozitára (nový image tag, zmena konfigurácie)
- GitOps agent detekuje zmenu v repozitári
- Porovnanie — agent porovná želaný stav s aktuálnym stavom klastra
- Synchronizácia — agent aplikuje rozdiely na klaster
- 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
selfHealpre 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.