Flux or ArgoCD? Why not both?
Overview — similar but different
- Argo CD and Flux are the two leading GitOps systems in the Kubernetes ecosystem.
- They both implement GitOps, but in different ways.
- Depending on your team and what you’re optimizing for, one may fit better than the other.
Both tools use Git repositories of Kubernetes manifests as the source of truth. Changes to manifests in a repository are made, and a controller syncs the changes into the cluster.
- ArgoCD is UI-first, with a feature-full web dashboard.
- Flux relies on the CLI (
flux
), CRDs, controllers, and a more composable architecture.
Architecture
Argo CD:
- Has a central controller and a built-in UI.
- You define
Applications
, each tracking a Git repo or directory. - Multi-cluster ready.
- Drift detection, rollback, and manual sync options are built in.
Flux:
- Split into modular controllers (
source-controller
,kustomize-controller
,helm-controller
, etc). - Uses Kubernetes-native CRDs for everything.
- No official UI (although there are some options)
- Very flexible but more verbose to set up.
- Support is offered natively in
eksctl
when creating EKS clusters
Helm support
One key difference between ArgoCD and Flux is how they manage Helm Charts.
ArgoCD:
- Helm support is built-in — no need to install Helm in the cluster.
- You can deploy from Git or Helm repos.
- Values are passed in via
Application
manifests. - Charts referenced by the
Application
are rendered and applied directly to the cluster. - Limited support for Helm hooks.
Flux:
- Has a dedicated Helm controller.
- You define Helm charts as
HelmRelease
resources. - Full support for Helm lifecycle, including hooks.
- Plays nicely with Helm automations (like version bumping).
Argo is better if you want a simple setup with good visibility.
Flux is better if you want native Helm support and rely on its version management.
Best of both worlds
Both systems have strengths, and can be used together to create a dynamic yet stable application infrastructure.
This might look like:
- Flux to manage cluster-level resources (CRDs, CNI, etc), or third party infrastructure-level components. Things like:
- ArgoCD can be a great fit for application deployments, and offers some key features for developers to interact with their applications, like a web-based terminal, and logs in the UI.
Just make sure they don’t fight over the same resources!
Summary at-a-glance
Argo CD:
- ✅ Great UI
- ✅ Easier onboarding
- ✅ Better for app teams
- ❌ Slightly heavier (centralized controller)
- ❌ Not as modular
Flux:
- ✅ Lightweight and Kubernetes-native
- ✅ Modular and flexible
- ✅ Better for infra/platform teams
- ❌ No built-in UI
- ❌ Steeper learning curve
Conclusion
- For a clear, visible, app-friendly GitOps experience → Argo CD
- For a low-footprint, infra-native GitOps system → Flux
For a more complex stack, both tools can be used together to manage diverse lower-level workloads and also offer an interface for developers that don’t necessarily need direct access to Kubernetes.
Friends image courtesy of Zizitom