Releases: fluxcd/flux2
Release list
v2.9.3
Highlights
Flux v2.9.3 is a patch release. It fixes empty lines vanishing from rendered Helm chart manifests, HelmReleases being marked as tested when their Helm test hooks never ran, and spec.images entries that set only some image fields discarding the remaining fields already declared for the same image in the kustomization.yaml. The latter affects both kustomize-controller and the flux build|diff kustomization commands. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix empty lines vanishing from rendered chart manifests (helm-controller)
- Fix
HasBeenTestedfor all corner cases, where a release could be marked as tested although its Helm test hooks never ran (helm-controller) - Fix a
spec.imagesentry setting only some of the image fields discarding the remaining fields already declared for the same image in thekustomization.yamlatspec.path, e.g. overriding onlynewNameproduced an untagged image reference (kustomize-controller, flux CLI)
Improvements:
- Update fluxcd/pkg dependencies
- Include source-watcher in the OCI flux-manifests artifact
Components changelog
CLI changelog
- [release/v2.9.x] Include source-watcher to oci flux-manifests by @fluxcdbot in #5996
- Update fluxcd/pkg dependencies by @fluxcdbot in #6006
- Update toolkit components by @fluxcdbot in #6011
Full Changelog: v2.9.2...v2.9.3
v2.9.2
Highlights
Flux v2.9.2 is a patch release. The main fix addresses a regression introduced in
v2.9.1 where a Kustomization with openapi.path pointing to a URL failed to
reconcile with failed to read OpenAPI schema. This release also corrects several
CRD field descriptions that contained inaccurate or leaked content. Users are
encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix a regression where a Kustomization with
openapi.pathpointing to a URL failed to reconcile withfailed to read OpenAPI schema(kustomize-controller) - Fix the
HelmChartCRD description for.status.url, which pointed users atBucketStatus.Artifactinstead ofHelmChartStatus.Artifact(source-controller) - Fix the
ImageRepositoryCRD description for.status.observedExclusionList, which referred tospec.lastScanResultinstead ofstatus.lastScanResult(image-reflector-controller) - Fix the
ImageUpdateAutomationCRD description for.status.observedSourceRevision, which had a stray Go struct declaration leaking into it (image-automation-controller)
Improvements:
- Update fluxcd/pkg dependencies
Components changelog
- source-controller v1.9.3
- kustomize-controller v1.9.3
- helm-controller v1.6.2
- notification-controller v1.9.2
- image-reflector-controller v1.2.3
- image-automation-controller v1.2.3
- source-watcher v2.2.2
CLI changelog
- Update fluxcd/pkg dependencies by @fluxcdbot in #5984
- Update fluxcd/pkg dependencies by @fluxcdbot in #5990
- Update toolkit components by @fluxcdbot in #5994
Full Changelog: v2.9.1...v2.9.2
v2.9.1
Highlights
Flux v2.9.1 is a patch release. The main fix, applied across all controllers, disables Flux variable substitution on the Flux CRDs by annotating them with kustomize.toolkit.fluxcd.io/substitute: disabled, so that Kustomizations with post-build substitution enabled no longer corrupt the CRD schemas when they contain ${...} sequences. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Disable Flux variable substitution on all Flux CRDs, preventing post-build substitution from corrupting CRD schemas that contain
${...}sequences (all controllers) - Update SOPS dependency to fix
.inifile decryption (kustomize-controller) - Fix a dry-run error where applying a resource with a strategic merge patch could fail with
<resource> is invalid(kustomize-controller) - Fix a breaking change in the in-memory Kustomization build (Flux CLI)
Improvements:
- Cache the registry authorization token during Notation verification, so it is fetched once per verification instead of once per request (source-controller)
- Update fluxcd/pkg dependencies
Components changelog
- source-controller v1.9.2
- kustomize-controller v1.9.2
- helm-controller v1.6.2
- notification-controller v1.9.2
- image-reflector-controller v1.2.2
- image-automation-controller v1.2.2
- source-watcher v2.2.2
CLI changelog
- [release/v2.9.x] Fix breaking change in-memory kustomization build by @fluxcdbot in #5971
- Update fluxcd/pkg dependencies by @fluxcdbot in #5977
- Update toolkit components by @fluxcdbot in #5979
Full Changelog: v2.9.0...v2.9.1
v2.9.0
Highlights
Flux v2.9.0 is a feature release. Users are encouraged to upgrade for the best experience.
For a compressive overview of new features and API changes included in this release, please refer to the Announcing Flux 2.9 GA blog post.
Overview of the new features:
- Flux CLI Plugin System with the Mirror and Schema plugins (
flux plugin) - Server-Side Apply field ignore rules for fine-grained drift control (
Kustomization) - SOPS decryption with the Age post-quantum cipher (
Kustomization) - Kubernetes Workload Identity authentication for OpenBao and Vault (
Kustomization) - Helm post-render strategies, including chart hooks support (
HelmRelease) - Literal mode for Helm values references mirroring
helm --set-literal(HelmRelease) - Allow empty kind in CEL health check expressions (
Kustomization,HelmRelease) - Git commit signing and verification with SSH keys (
GitRepository,ImageUpdateAutomation) - AWS CodeCommit authentication using Workload Identity (
GitRepository) - Custom Sigstore trusted root for keyless verification in air-gapped environments (
OCIRepository) - Path pattern directory discovery for monorepos (
ArtifactGenerator) - Secret-less, OIDC-secured webhook Receivers (
Receiver)
❤️ Big thanks to all the Flux contributors that helped us with this release!
Kubernetes compatibility
This release is compatible with the following Kubernetes versions:
| Kubernetes version | Minimum required |
|---|---|
v1.34 |
>= 1.34.1 |
v1.35 |
>= 1.35.0 |
v1.36 |
>= 1.36.0 |
Note
Note that the Flux project offers support only for the latest three minor versions of Kubernetes.
Backwards compatibility with older versions of Kubernetes and OpenShift is offered by vendors such as
ControlPlane that provide enterprise support for Flux.
OpenShift compatibility
Flux can be installed on Red Hat OpenShift cluster directly from OperatorHub using Flux Operator. The operator allows the configuration of Flux multi-tenancy lockdown, network policies, persistent storage, sharding, vertical scaling and the synchronization of the cluster state from Git repositories, OCI artifacts, and S3-compatible storage.
Upgrade procedure
image.toolkit.fluxcd.io/v1beta2 and notification.toolkit.fluxcd.io/v1beta2
have reached end-of-life and have been removed from the CRDs.
Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from older versions of Flux to v2.9.
Components changelog
- source-controller v1.9.1
- kustomize-controller v1.9.1
- notification-controller v1.9.1
- helm-controller v1.6.1
- image-reflector-controller v1.2.1
- image-automation-controller v1.2.1
- source-watcher v2.2.1
CLI changelog
- Add backport label for Flux 2.8 by @matheuscscp in #5732
- Remove no longer needed workaround for Flux 2.8 by @matheuscscp in #5733
- Update toolkit components by @fluxcdbot in #5740
- Add missing things to release notes template by @matheuscscp in #5743
- ci: add top-level permissions to upgrade-fluxcd-pkg workflow by @gaganhr94 in #5763
- build(deps): bump the ci group across 1 directory with 11 updates by @dependabot[bot] in #5764
- Update fluxcd/pkg dependencies by @fluxcdbot in #5766
- Update toolkit components by @fluxcdbot in #5769
- Add target branch name to update branch by @matheuscscp in #5773
- Fix/resume exit code by @Aman-Cool in #5701
- Mark RFC 0010, 0011 and 0012 as implemented by @stefanprodan in #5776
- Update toolkit components by @fluxcdbot in #5780
- Add --resolve-symlinks flag to build and push artifact commands by @rohansood10 in #5724
- fix: validate --source flag in create kustomization command by @gma1k in #5798
- Update toolkit components by @fluxcdbot in #5821
- Add
--show-sourcetoflux get ksandflux get hrby @rafaelperoco in #5828 - Add
flux create secret receivercommand by @stefanprodan in #5835 - fix: handle multiple symlinks to same target in build artifact by @Iam-Karan-Suresh in #5833
- Add
--in-memory-buildtoflux build ksandflux diff ksby @rycli in #5794 - Migrate end-to-end test to latest cloud SDKs by @stefanprodan in #5840
- docs: Add AI Coding Assistants Guidance by @stefanprodan in #5841
- Add AI Agents guidance by @stefanprodan in #5847
- [RFC-0013] Flux CLI Plugin System by @stefanprodan in #5795
- Add
--ignore-not-foundtoflux diff ksby @rycli in #5845 - [RFC-0013] Implement plugin system by @stefanprodan in #5849
- build(deps): bump github.com/go-git/go-git/v5 from 5.17.1 to 5.18.0 by @dependabot[bot] in #5853
- Update toolkit components by @fluxcdbot in #5856
- Add digest pinning support to
flux plugin installby @Iam-Karan-Suresh in #5872 - Add
--ns-follows-kube-contextglobal flag for using the kubeconfig context namespace by @jtyr in #5831 - include source-watcher in install.yaml manifests by @tmmorin in #5881
- Update toolkit components by @fluxcdbot in #5890
- Update toolkit components by @fluxcdbot in #5903
- Update fluxcd/pkg dependencies by @fluxcdbot in #5907
- Validate Helm source URL schemes by @immanuwell in #5909
- Introduce
flux trigger receiverby @matheuscscp in #5908 - refactor(api): migrate MakeDependsOn to shared apis/meta func by @vecil in #5912
- Update to Kubernetes 1.36 and Go 1.26 by @stefanprodan in #5924
- build(deps): bump the ci group across 1 directory with 19 updates by @dependabot[bot] in #5925
- Run conformance tests for Kubernetes 1.36 by @stefanprodan in #5926
- Add support for AWS CodeCommit to
flux bootstrap gitby @taraspos in #5868 - Validate plugin binary path by @stefanprodan in #5927
- Update fluxcd/pkg dependencies by @fluxcdbot in #5928
- fix: preserve invalid metadata.labels in
flux build ksby @raffis in #5906 - build: target host arch for local builds/envtest by @stealthybox in #5932
- build(deps): bump the ci group with 6 updates by @dependabot[bot] in #5938
- Support specifing sparseCheckout in flux bootstrap by @piny940 in #5918
- Update toolkit components by @fluxcdbot in #5944
- Honor
ks.spec.postBuild.substituteStrategyby @matheuscscp in #5945 - Add DriftIgnoreRules support to flux diff kustomization by @dipti-pai in #5923
- Allow signing commits using SSH key by @hiddeco in #5920
- Update toolkit components by @fluxcdbot in #5950
- Update fluxcd/pkg dependencies by @fluxcdbot in #5937
- cmd: support
type!=statusin get --status-selector by @3uzbcqje in #5952 - Fix
flux get all --status-selectorfor empty results and notification resources by @matheuscscp in #5954 - Upgrade go-git-providers to v0.27.0 by @matheuscscp in #5956
- Fix using Receiver adapter for ArtifactGenerator by @matheuscscp in #5957
- feat: Install Plugins alongside Flux setup in gh actions by @gat786 in #5955
- Update fluxcd/pkg dependencies by @fluxcdbot in #5960
- Add CLI support for OCIRepository.spec.layerSelector in flux create source oci by @dme86 in #5892
- Update toolkit components by @fluxc...
v2.8.8
Highlights
Flux v2.8.8 is a patch release that includes CVE fixes via go-git v5.19.1 (source-controller, image-automation-controller), reliability fixes in helm-controller and source-controller, the move of Helm back to upstream v4.2.0, support for GCP sovereign cloud artifact registries, and dependency updates. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Add a configurable HTTP timeout for artifact fetching, preventing fetches that could block indefinitely and stall reconciliations (helm-controller)
- Fix unbounded memory growth caused by a Kubernetes client transport retry wrapper accumulating on every reconcile (helm-controller)
- Stop force-applying non-CRD objects placed under a chart's
crds/directory (helm-controller) - Fix the Helm test action failing to find releases with names longer than 53 characters (helm-controller)
- Improve path handling in the source reconcilers (source-controller)
- Support Helm semver build-metadata encoding in OCIRepository tags (source-controller)
Improvements:
- Update go-git to v5.19.1 which fixes CVE-2026-45571 and CVE-2026-45570 (source-controller, image-automation-controller)
- Move Helm back to upstream v4.2.0 (source-controller, helm-controller)
- Add support for GCP sovereign cloud artifact registries (source-controller, image-reflector-controller)
- Upgrade Kubernetes to 1.36.1 (source-controller, helm-controller)
- Update fluxcd/pkg dependencies
Components changelog
- helm-controller v1.5.5
- image-automation-controller v1.1.4
- image-reflector-controller v1.1.2
- source-controller v1.8.5
CLI changelog
- Update toolkit components by @fluxcdbot in #5904
Full Changelog: v2.8.7...v2.8.8
v2.8.7
Highlights
Flux v2.8.7 is a patch release that includes a bug fix in kustomize-controller, a CVE fix in source-controller and image-automation-controller via go-git v5.19.0, and dependency updates. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix management of objects annotated with
kustomize.toolkit.fluxcd.io/ssa: IfNotPresentwhere non-namespaced resources were being deleted and recreated on each reconciliation (kustomize-controller)
Improvements:
- Update go-git to v5.19.0 which fixes CVE-2026-45022 (source-controller, image-automation-controller)
- Update fluxcd/pkg dependencies (source-controller, kustomize-controller, image-automation-controller)
Components changelog
- helm-controller v1.5.4
- image-automation-controller v1.1.3
- kustomize-controller v1.8.5
- notification-controller v1.8.4
- source-controller v1.8.4
CLI changelog
- Update toolkit components by @fluxcdbot in #5891
Full Changelog: v2.8.6...v2.8.7
v2.8.6
Highlights
Flux v2.8.6 is a patch release that includes bug fixes and improvements across helm-controller, image-automation-controller, kustomize-controller, notification-controller, and source-controller. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix a post-renderer conflict between overlapping hooks and templates (helm-controller)
- Ignore force replace when server-side apply is enabled (helm-controller)
- Fix a regression where generic providers would not forward commit status events (notification-controller)
- Require the
audiencefield on the GCR Receiver secret for tighter verification — will become mandatory in Flux v2.9 (notification-controller)
Improvements:
- Introduce the
MigrateAPIVersionfeature gate for migrating the API version of resources in managed field entries (kustomize-controller) - Update go-git to v5.18.0 bringing performance improvements for Git operations (source-controller, image-automation-controller)
Components changelog
- helm-controller v1.5.4
- image-automation-controller v1.1.2
- kustomize-controller v1.8.4
- notification-controller v1.8.4
- source-controller v1.8.3
CLI changelog
- Update toolkit components by @fluxcdbot in #5857
Full Changelog: v2.8.5...v2.8.6
v2.8.5
Highlights
Flux v2.8.5 is a patch release that includes bug fixes and improvements across kustomize-controller, source-controller, and notification-controller. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix a race condition where a cancelled reconciliation could leave stale data in the cache, causing Kustomizations to get stuck (kustomize-controller)
- Fix Azure Blob prefix option not being passed to the storage client (source-controller)
Improvements:
- Improve error message for encrypted SSH keys without password (source-controller)
- Add optional
emailandaudiencefields to the GCR Receiver for tighter verification (notification-controller) - Add provider manifest example for Azure Event Hub managed identity authentication (notification-controller)
Components changelog
CLI changelog
- Update toolkit components by @fluxcdbot in #5822
Full Changelog: v2.8.4...v2.8.5
v2.8.4
Highlights
Flux v2.8.4 is a patch release that includes fixes for the Flux CLI. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix
flux build ksandflux diff kson Windows - Fix
--sourceflag validation increate kustomizationcommand
CLI changelog
- Update fluxcd/pkg dependencies by @fluxcdbot in #5796
- [release/v2.8.x] fix: validate --source flag in create kustomization command by @fluxcdbot in #5799
Full Changelog: v2.8.3...v2.8.4
v2.8.3
Highlights
Flux v2.8.3 is a patch release that fixes a regression in helm-controller. Users are encouraged to upgrade for the best experience.
ℹ️ Please follow the Upgrade Procedure for Flux v2.7+ for a smooth upgrade from Flux v2.6 to the latest version.
Fixes:
- Fix templating errors for charts that include
---in the content, e.g. YAML separators, embedded scripts, CAs inside ConfigMaps (helm-controller)
Components changelog
- helm-controller v1.5.3
CLI changelog
- [release/v2.8.x] Add target branch name to update branch by @fluxcdbot in #5774
- Update toolkit components by @fluxcdbot in #5779
Full Changelog: v2.8.2...v2.8.3