flux2-kustomize-helm-example is a reference implementation that demonstrates a GitOps workflow for managing multiple Kubernetes clusters using Flux, Kustomize, and Helm.
The example addresses the challenge of deploying applications consistently across staging and production environments while minimizing configuration duplication. It uses Flux to monitor Helm repositories and automatically upgrade releases based on semantic versioning constraints, with Kustomize patches layered on top to customize values per environment. The approach separates concerns into three directory structures: applications with base definitions and environment-specific overlays, infrastructure controllers and configurations with dependency ordering, and per-cluster Flux configurations. This allows staging to track pre-release chart versions while production tracks only stable releases, and enables infrastructure dependencies to be resolved in the correct order before custom resources are applied.
This repository is most useful for teams building multi-cluster deployments on Kubernetes and wanting to understand how to structure a GitOps setup with Flux. It works well for organizations that need to manage both application and infrastructure components across environments, particularly those already using Helm for package management. The example requires Kubernetes 1.33 or newer and assumes familiarity with Git-based workflows, the Flux CLI, and basic Kubernetes concepts.
The project maintains a working example that reflects current Flux capabilities and best practices. The repository structure and configuration patterns are documented through concrete YAML examples showing how to configure HelmRelease resources, set up OCI repository polling intervals, apply Kustomize patches for environment-specific values, and establish dependency ordering between infrastructure components.