Flux v2.9.1 released on 07-07-2026

Flux v2.9.1 is out now. It disables Flux variable substitution on all Flux CRDs to prevent post-build substitution from corrupting CRD schemas that contain ${…} sequences.
See the Flux GitHub release and component changelogs for full details and upgrade guidance (full changelog: https://github.com/fluxcd/flux2/compare/v2.9.0…v2.9.1; upgrade procedure: https://github.com/fluxcd/flux2/discussions/5572).
What’s in this release
- Disabled Flux variable substitution on all Flux CRDs by annotating them with kustomize.toolkit.fluxcd.io/substitute: disabled to stop CRD schema corruption when CRDs contain ${…} sequences (all controllers).
- kustomize-controller fixes: SOPS dependency updated to restore correct .ini file decryption, and a dry-run error where applying resources with strategic merge patches could fail with “<resource> is invalid” has been fixed.
- CLI and component updates: fixed a breaking change in the in-memory Kustomization build; updated fluxcd/pkg dependencies and bumped component versions (source-controller v1.9.2, kustomize-controller v1.9.2, helm-controller v1.6.2, notification-controller v1.9.2, image-* controllers v1.2.2, source-watcher v2.2.2).
Upgrade notes
- Follow the Upgrade Procedure for Flux v2.7+ when upgrading from v2.6 (https://github.com/fluxcd/flux2/discussions/5572); the release includes a CLI fix for a breaking change in the in-memory Kustomization build.
- The release does not include specific rollback instructions; follow your usual rollback procedure if you need to revert.
Share any comments on your experience upgrading to v2.9.1 and report issues or observations on the Flux GitHub channels.


