Uživatelské nástroje

Nástroje pro tento web


argocd

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).

Zpět na DevOps

argocd.txt · Poslední úprava: autor: admin