ToolPASS

ArgoCD

Deklarativ GitOps-controller til Kubernetes der synkroniserer cluster-tilstand med Git-repositories.

Diagram der visualiserer Kubernetes-cluster med synkroniserede deployments fra Git
Foto: Growtika / Unsplash

ArgoCD er en GitOps-controller til Kubernetes, der løbende sammenligner cluster-tilstanden med en ønsket tilstand defineret i et Git-repository. Når der opdages en afvigelse, kan ArgoCD enten alerte eller automatisk reconciliere clusteret tilbage til den definerede tilstand. Værktøjet er Open Source og en del af CNCF Graduated Projects siden 2022.

Arkitekturen bygger på flere komponenter. Application Controller observerer ressourcer i Kubernetes og sammenligner dem med Git. Repo Server kloner Git-repositories og genererer Kubernetes-manifester via Helm, Kustomize eller plain YAML. API Server eksponerer en gRPC/REST-grænseflade til UI'et og CLI'et. Dex håndterer authentication via OIDC mod GitHub, Google, Azure AD eller andre identity providers. Hele setuppet kører selv som Kubernetes-workloads.

En Application i ArgoCD er den centrale ressource. En Application-CRD peger på et Git-repository, en branch eller tag, en path til manifester, og et target-namespace i clusteret. ArgoCD klonser repoet, renderer manifesterne (f.eks. via helm template) og applicerer dem mod clusteret. Sync policies styrer adfærden: manual sync kræver et klik, mens automated sync med selfHeal og prune holder clusteret kontinuerligt synkroniseret med Git.

App of Apps-mønsteret skalerer ArgoCD til store organisationer. En "root application" definerer andre Applications, der hver styrer en del af platformen. Det giver et hierarki: en root-app deployer team-apps, der hver deployer service-apps. ApplicationSets udvider mønsteret med templates der genererer Applications dynamisk baseret på cluster-lister, Git-folders eller pull requests. Det er stærkt til multi-cluster setups og preview-miljøer.

Projects i ArgoCD giver multi-tenancy og adgangskontrol. Et project definerer hvilke source-repositories, target-clusters og namespaces der er tilladte for en gruppe af applications. RBAC integreres med OIDC og giver fine-grained permissions: udviklere kan se og synce deres egne apps, mens platform-teamet har bredere adgang. Det er kritisk i delte clusters hvor flere teams kører side om side.

Health checks og sync waves giver kontrol over deployment-rækkefølgen. ArgoCD kender Kubernetes-ressourcers naturlige health (Deployments venter på rollout, Jobs på completion), og custom resources kan udvides med Lua-baserede health-scripts. Sync waves nummererer ressourcer så CRDs deployes før de Custom Resources der bruger dem, og databaser migreres før applikationer der afhænger af dem.

Sammenlignet med Flux CD (det andet populære GitOps-værktøj) tilbyder ArgoCD et rigere UI med visualisering af deployments og diff-view, mens Flux har stærkere multi-tenant model og bedre integration med Helm-controllere. Begge er CNCF Graduated, og valget afhænger ofte af præferencer for UI versus controller-arkitektur. Mange organisationer driver dem parallelt for forskellige formål.

Drift af ArgoCD i produktion kræver opmærksomhed på flere ting. High Availability via flere replicas af hver komponent forhindrer single points of failure. Notifications-controlleren sender alerts til Slack eller Teams ved sync-fejl. Image Updater kan automatisk opdatere image-tags i Git når nye versioner pushes til registry, hvilket lukker GitOps-loopet helt. Backup af ArgoCD's egen state (Applications, Projects, Secrets) bør være en del af disaster recovery-planen.

Best practices inkluderer at adskille app-konfiguration fra app-kode (separate Git-repositories), bruge Kustomize overlays eller Helm values til miljøforskelle, aktivere automated sync med selfHeal i ikke-kritiske miljøer og kun manual sync i produktion, og altid pinne til specifikke Git-revisions eller image-tags i stedet for HEAD eller latest. Et modent ArgoCD-setup giver fuld auditerbarhed: enhver ændring i clusteret kan spores tilbage til et Git-commit med forfatter og review.

Video