argocd
Obsah
ArgoCD (GitOps pro Kubernetes)
ArgoCD je deklarativní nástroj pro průběžné doručování (Continuous Delivery) určený výhradně pro Kubernetes. Implementuje metodologii GitOps, kde Git slouží jako „jediný zdroj pravdy“ (Single Source of Truth) pro stav infrastruktury.
ArgoCD běží jako kontrolér uvnitř Kubernetes clusteru a neustále porovnává stav definovaný v Gitu se stavem skutečně běžícím v clusteru.
Základní principy GitOps s ArgoCD
- Deklarativní definice: Veškerá konfigurace (YAML, Helm, Kustomize) je uložena v Gitu.
- Verzování: Každá změna v infrastruktuře prochází přes Code Review (Pull Requesty) a je dohledatelná v historii Gitu.
- Automatická synchronizace: ArgoCD detekuje rozdíl (Out of Sync) a automaticky (nebo na vyžádání) upraví cluster tak, aby odpovídal Gitu.
Klíčové komponenty
- API Server: Poskytuje rozhraní pro webovou konzoli, CLI a externí systémy.
- Repository Server: Udržuje lokální cache Git repozitářů a generuje výsledné Kubernetes manifesty.
- Application Controller: Sleduje běžící aplikace a porovnává je s definicí v Gitu.
Stav aplikace v ArgoCD
ArgoCD používá dva základní ukazatele pro stav aplikace:
| Stav | Popis |
|---|---|
| Synced | Stav v clusteru přesně odpovídá tomu, co je v Gitu. |
| Out of Sync | V Gitu je novější verze nebo někdo ručně změnil konfiguraci v clusteru. |
| Healthy | Všechny prostředky (Pody, Services) běží v pořádku. |
| Degraded | Některé části aplikace selhaly (např. CrashLoopBackOff). |
Podporované formáty konfigurace
ArgoCD není omezeno jen na čisté YAML soubory. Podporuje:
- Helm Charts: Populární balíčkovací systém pro K8s.
- Kustomize: Nástroj pro úpravu YAML šablon bez jejich přepisování.
- Jsonnet: Šablonovací jazyk pro komplexní konfigurace.
Praktická ukázka: Definice aplikace
V ArgoCD definujete objekt typu Application, který říká: „Vezmi tento kód z tohoto Gitu a nasaď ho do tohoto clusteru“.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: moje-aplikace
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/firma/web-app.git
targetRevision: HEAD
path: overlays/production
destination:
server: https://kubernetes.default.svc
namespace: prod-namespace
syncPolicy:
automated:
prune: true
selfHeal: true
Výhody oproti tradičnímu CI/CD
- Pull-based model: Cluster si sám stahuje změny. Není nutné otevírat firewall pro externí CI nástroje (jako Jenkins nebo GitHub Actions) směrem do clusteru.
- Ochrana proti „Configuration Drift“: Pokud administrátor ručně změní něco v clusteru pomocí
kubectl, ArgoCD to zjistí a díky funkci Self-Healing změnu přepíše zpět podle Gitu. - Multi-cluster správa: Z jedné instance ArgoCD můžete spravovat stovky oddělených Kubernetes clusterů.
Bezpečnostní poznámka: Protože má ArgoCD plná práva k zápisu do clusteru, je kritické správně nastavit RBAC (Role-Based Access Control) a SSO (Single Sign-On).
argocd.txt · Poslední úprava: autor: admin
