Skip to main content

GitOps tools


Table of Contents

  1. Overview of tools
  2. Argo CD
  3. Flux
  4. Argo CD vs Flux comparison
  5. Other tools
  6. Hands-on exercises

1 - Overview of tools

CNCF tools

Quick comparison

ToolTypeCNCFUIPopularity
Argo CDApplicationGraduated✅ Native⭐⭐⭐⭐⭐
FluxToolkitGraduated❌ (Weave UI)⭐⭐⭐⭐
Jenkins XCI/CD + GitOpsIncubating⭐⭐⭐
FleetMulti-cluster-⭐⭐⭐

🔝 Back to table of contents


2 - Argo CD

Overview

  • Developed by Intuit then donated to the CNCF
  • Native and powerful web UI
  • Supports Helm, Kustomize, Jsonnet, YAML
  • CNCF Graduated (maximum maturity)

Installation

# Créer le namespace
kubectl create namespace argocd

# Installer ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Récupérer le mot de passe admin
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

# Accéder à l'UI
kubectl port-forward svc/argocd-server -n argocd 8080:443
# https://localhost:8080

Create an Application

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default

source:
repoURL: https://github.com/org/gitops-repo.git
targetRevision: HEAD
path: apps/my-app

destination:
server: https://kubernetes.default.svc
namespace: default

syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

Argo CD CLI

# Login
argocd login localhost:8080

# Lister les applications
argocd app list

# Sync manuel
argocd app sync my-app

# Voir l'état
argocd app get my-app

# Historique
argocd app history my-app

# Rollback
argocd app rollback my-app 1

Web interface

FeatureDescription
Application ViewView of K8s resources
Sync StatusSynchronization state
Health StatusPod health
Diff ViewGit vs Cluster differences
Resource TreeDependency tree

🔝 Back to table of contents


3 - Flux

Overview

  • Developed by Weaveworks
  • Modular toolkit (separate components)
  • No native UI (Weave GitOps UI available)
  • CNCF Graduated

Flux components

ComponentRole
Source ControllerFetches sources (Git, Helm, S3)
Kustomize ControllerApplies Kustomize manifests
Helm ControllerManages Helm releases
Notification ControllerAlerts to Slack, Teams
Image AutomationAutomatic image updates

Installation

# Installer Flux CLI
curl -s https://fluxcd.io/install.sh | sudo bash

# Bootstrap avec GitHub
flux bootstrap github \
--owner=my-org \
--repository=gitops-repo \
--path=clusters/my-cluster \
--personal

GitRepository and Kustomization

# Définir la source Git
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: my-repo
namespace: flux-system
spec:
interval: 1m
url: https://github.com/org/gitops-repo
ref:
branch: main
---
# Appliquer les manifests
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: my-app
namespace: flux-system
spec:
interval: 5m
path: ./apps/my-app
prune: true
sourceRef:
kind: GitRepository
name: my-repo

Flux CLI

# État du système
flux check

# Lister les sources
flux get sources git

# Lister les kustomizations
flux get kustomizations

# Réconcilier manuellement
flux reconcile kustomization my-app

# Suspendre/Reprendre
flux suspend kustomization my-app
flux resume kustomization my-app

🔝 Back to table of contents


4 - Argo CD vs Flux comparison

Comparison table

CriterionArgo CDFlux
Native UI✅ Excellent❌ (Weave GitOps)
ArchitectureMonolithicModular toolkit
Learning curveEasyMedium
Multi-tenancyProjects, RBACNamespaces
Image AutomationVia extension✅ Native
NotificationsWebhook✅ Dedicated controller
CNCF StatusGraduatedGraduated
GitHub Stars~15k~5k

When to choose Argo CD?

  • ✅ Need for a powerful UI
  • ✅ Team new to GitOps
  • ✅ Preference for an all-in-one solution
  • ✅ Centralized multi-cluster

When to choose Flux?

  • ✅ Preference for CLI/native GitOps
  • ✅ Need for native image automation
  • Modular architecture desired
  • ✅ Tight integration with GitHub/GitLab

They can coexist

# ArgoCD pour les applications
# Flux pour l'infrastructure

# Ou différents clusters
# Cluster A: ArgoCD
# Cluster B: Flux

🔝 Back to table of contents


5 - Other tools

Fleet (Rancher)

# Idéal pour multi-cluster à grande échelle
# Gère des centaines de clusters edge
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: my-app
spec:
repo: https://github.com/org/gitops-repo
paths:
- apps/my-app
targets:
- clusterSelector:
matchLabels:
env: production

Jenkins X

# CI/CD + GitOps intégré
# Génère automatiquement les pipelines
jx create quickstart

Spinnaker

  • Mature multi-cloud CD tool
  • Visual pipelines
  • Less "GitOps native"

Summary

ToolUse case
Argo CDGeneral GitOps, UI matters
FluxCLI-first GitOps, image automation
FleetLarge-scale multi-cluster
Jenkins XCI/CD + GitOps all-in-one

🔝 Back to table of contents


6 - Hands-on exercises

Quiz

Q1. Which GitOps tool has a native UI?

Answer

Argo CD has a very complete native web interface. Flux requires Weave GitOps UI separately.

Q2. Which tool has native image automation?

Answer

Flux with its Image Automation Controller can detect new images and automatically update the Git manifests.

Exercise: Tool selection

Your team is evaluating Argo CD and Flux. Criteria:

  • UI matters for developers
  • 5 clusters to manage
  • Team of 20 people
Recommendation

Argo CD would be recommended because:

  • Native UI matters for developers
  • Centralized multi-cluster management
  • Easier learning curve for a team of 20 people
  • Adoption will be faster

🔝 Back to table of contents


Key takeaways

  • Argo CD: Excellent UI, all-in-one, easy to adopt
  • Flux: Modular toolkit, CLI-first, native image automation
  • Both are CNCF Graduated (maturity)
  • Choose based on needs: UI vs CLI, monolithic vs modular
  • They can coexist in different contexts

🔝 Back to table of contents


← Previous chapter | Next chapter: Repository structure →