Flux GitOps
Flux is a CNCF graduated GitOps project that continuously reconciles Kubernetes cluster state with sources such as Git repositories. It is made of composable controllers and has no built-in UI, so it is driven through Git, the CLI and kubectl.
Flux is a GitOps project for Kubernetes. It runs inside the cluster, watches sources such as Git repositories, and continuously reconciles the cluster to match what those sources declare. It is a CNCF graduated project.
How it works
Flux v2 is built as a set of controllers, each owning custom resources. The source controller handles GitRepository, OCIRepository, HelmRepository and Bucket resources. The kustomize controller applies a Kustomization. The helm controller manages HelmRelease resources. The notification controller handles alerts and incoming events, and optional image automation controllers track new image versions and can update Git.
Reconciliation means making the live state match the declared state. Flux checks the source at an interval and produces a new artifact when something changes. By default a Kustomization is reconciled every five minutes, and manual edits in the cluster are reverted, so changes belong in Git.
Flux has no UI in its core. You work with Git, the flux CLI and kubectl, for example kubectl get fluxcd -A to list its resources.
A practical example
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: app-config
namespace: flux-system
spec:
interval: 1m
url: https://github.com/example/app-config
ref:
branch: main
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: app
namespace: flux-system
spec:
interval: 10m
path: ./deploy/production
prune: true
sourceRef:
kind: GitRepository
name: app-config
The first resource defines where the configuration lives, the second says which path to apply. With prune: true, objects removed from Git are removed from the cluster.
Common mistakes
- Editing resources with
kubectland expecting the change to stay. Flux will revert it. - Using
prune: truewithout understanding which objects the Kustomization owns. - Putting plain secrets in Git. Use encryption such as Sealed Secrets or an external secrets operator.
- One large Kustomization for everything, which makes failures harder to isolate.
When to use it and when not to
Flux suits teams that want a composable, Kubernetes-native GitOps toolkit and are comfortable working through Git and the CLI. If you want a graphical application view as a primary interface, compare it with ArgoCD; our ArgoCD vs Flux comparison covers the trade-offs. For a single small cluster with infrequent changes, a plain pipeline may be simpler. See also GitOps and our GitOps services.
See also
Related service
View our Flux GitOps servicesLast updated: 2026-10-11