Last release 1 months ago
28 Jul 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
906 releases · first in 2020
Release timeline
906 releases since 2020Releases
- v1.1.1-0.20241206161256-f48671c0209c6 Dec 2024pre-release
Nothing published for this version
- v1.1.1-0.20241116193045-d8eee36ffed116 Nov 2024pre-release
Nothing published for this version
- v1.1.1-0.20241101163442-5beaf80cfccd1 Nov 2024pre-release
Nothing published for this version
- v1.1.1-0.20240927141751-c8ae4b6ad22527 Sept 2024pre-release
Nothing published for this version
- v1.1.026 Sept 2024
Release notes3 sources agree
Open source →Release date: 2024-09-26
This minor release comes with various bug fixes and improvements.
The chart values schema validation can now be disabled for install and upgrade actions by setting
disableSchemaValidationunder.spec.installand.spec.upgradeof aHelmReleaseobject.HelmReleases that result in failure during uninstall will now be retried until the uninstall succeeds without any error. See handling failed uninstall docs for various remediations based on the cause of the failure.
helm-controller in sharded deployment configuration now supports cross-shard dependency check. This allows a HelmRelease to depend on other HelmReleases managed by different controller shards.
In addition, the Kubernetes dependencies have been updated to v1.31.1, Helm has been updated to v3.16.1 and various other controller dependencies have been updated to their latest version. The controller is now built with Go 1.23.
Fixes:
- fix: remove digest check to never ignore helm uninstall errors #1024
- Allow overwriting inline values with targetPath #1060
- Fix incorrect use of format strings with the conditions package #1025
- Re-enable logging json patch on StatusDrifted #1010
- Ignore 'v' version prefix in OCI artifact and Helm chart #990
- doc: fix HelmRelease default value for .spec.upgrade.crds #986
Improvements:
- v1.0.110 May 2024
Release notes3 sources agree
Open source →Release date: 2024-05-10
This patch release fixes a backwards compatibility issue that could occur when trying to move from the
v2beta1tov2API while specifing.spec.chartRef.Fixes:
- v1.0.1-0.20240926183341-b0010b0cd5f026 Sept 2024pre-release
Nothing published for this version
- v1.0.1-0.20240913132258-037e21595a3c13 Sept 2024pre-release
Nothing published for this version
- v1.0.1-0.20240822070733-e05c4ffc4b2122 Aug 2024pre-release
Nothing published for this version
- v1.0.1-0.20240815065640-f681236b84be15 Aug 2024pre-release
Nothing published for this version
- v1.0.1-0.20240619081155-655432b46d3919 Jun 2024pre-release
Nothing published for this version
- v1.0.1-0.20240527065826-ce58e47242a727 May 2024pre-release
Nothing published for this version
- v1.0.1-0.20240525122148-bd7e561811a225 May 2024pre-release
Nothing published for this version
- v1.0.1-0.20240517100751-7a6a2d430a7117 May 2024pre-release
Nothing published for this version
- v1.0.1-0.20240510152632-e7dc85eddc8010 May 2024pre-release
Nothing published for this version
- v1.0.1-0.20240510135223-1526d3a6156110 May 2024pre-release
Nothing published for this version
- v1.0.1-0.20240510105801-bc1219fbc19d10 May 2024pre-release
Nothing published for this version
- v1.0.09 May 2024
Release notes3 sources agree
Open source →Release date: 2024-05-08
This is the general availability release of helm-controller. From now on, this controller follows the Flux release cadence and support pledge.
This release promotes the
HelmReleaseAPI fromv2beta2tov2(GA), and comes with new features, improvements and bug fixes.In addition, the controller has been updated to Kubernetes v1.30.0, Helm v3.14.4, and various other dependencies to their latest version to patch upstream CVEs.
Highlights
The
helm.toolkit.fluxcd.io/v2API comes with a new field.spec.chartRefthat adds support for referencingOCIRepositoryandHelmChartobjects in aHelmRelease. When using.spec.chartRefinstead of.spec.chart, the controller allows the reuse of a Helm chart version across multipleHelmReleaseresources.The notification mechanism has been improved to provide more detailed metadata in the notification payload. The controller now annotates the Kubernetes events with the
appVersionandversionof the Helm chart, and theoci digestof the chart artifact when available.Helm OCI support
Starting with this version, the recommended way of referencing Helm charts stored in container registries is through OCIRepository.
The
OCIRepositoryprovides more flexibility in managing Helm charts, as it allows targeting a Helm chart version bytag,semveror OCIdigest. It also provides a way to filter semver tags, allowing targeting a specific version range e.g. pre-releases only, patch versions, etc.Using
OCIRepositoryobjects instead ofHelmRepositoryandHelmChartobjects improves the controller's performance and simplifies the debugging process. If a chart version gets overwritten in the container registry, the controller will detect the change in the upstream OCI digest and reconcile theHelmReleaseresources accordingly. Promoting a Helm chart version to production can be done by pinning theOCIRepositoryto an immutable digest, ensuring that the chart version is not changed unintentionally.Helm OCI example:
apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: OCIRepository metadata: name: podinfo namespace: default spec: interval: 10m layerSelector: mediaType: "application/vnd.cncf.helm.chart.content.v1.tar+gzip" operation: copy url: oci://ghcr.io/stefanprodan/charts/podinfo ref: semver: "*" --- apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: podinfo namespace: default spec: interval: 10m chartRef: kind: OCIRepository name: podinfoAPI changes
The
helm.toolkit.fluxcd.ioCRD contains the following versions:- v2 (storage version)
- v2beta2 (deprecated)
- v2beta1 (deprecated)
New optional fields have been added to the
HelmReleaseAPI:.spec.chartRefallows referencing chart artifacts fromOCIRepositoryandHelmChartobjects..spec.chart.spec.ignoreMissingValuesFilesallows ignoring missing values files instead of failing to reconcile.
Deprecated fields have been removed from the
HelmReleaseAPI:.spec.chart.spec.valuesFilereplaced by.spec.chart.spec.valuesFiles.spec.postRenderers.kustomize.patchesJson6902replaced by.spec.postRenderers.kustomize.patches.spec.postRenderers.kustomize.patchesStrategicMergereplaced by.spec.postRenderers.kustomize.patches.status.lastAppliedRevisionreplaced by.status.history.chartVersion
Upgrade procedure
- Before upgrading the controller, ensure that the
HelmReleasev2beta2 manifests stored in Git are not using the deprecated fields. Search forvaluesFileand replace it withvaluesFiles, replacepatchesJson6902andpatchesStrategicMergewithpatches. Commit and push the changes to the Git repository, then wait for Flux to reconcile the changes. - Upgrade the controller and CRDs to v1.0.0 on the cluster using Flux v2.3 release. Note that helm-controller v1.0.0 requires source-controller v1.3.0.
- Update the
apiVersionfield of theHelmReleaseresources tohelm.toolkit.fluxcd.io/v2, commit and push the changes to the Git repository.
Bumping the API version in manifests can be done gradually. It is advised to not delay this procedure as the beta versions will be removed after 6 months.
Full changelog
Improvements:
- Add the chart app version to status and events metadata #968
- Promote HelmRelease API to v2 (GA) #963
- Add
.spec.ignoreMissingValuesFilesto HelmChartTemplate API #942 - Update HelmChart API to v1 (GA) #962
- Update dependencies to Kubernetes 1.30.0 #944
- Add support for HelmChart to
.spec.chartRef#945 - Add support for OCIRepository to
.spec.chartRef#905 - Update dependencies to Kustomize v5.4.0 #932
- Add notation verification provider to API #930
- Update controller to Helm v3.14.3 and Kubernetes v1.29.0 #879
- Update controller-gen to v0.14.0 #910
Fixes:
- v0.37.5-0.20240509122119-f88b3be818e79 May 2024pre-release
Nothing published for this version
- v0.37.5-0.20240423085318-839433f67bc523 Apr 2024pre-release
Nothing published for this version
- v0.37.5-0.20240403094335-64073a821be33 Apr 2024pre-release
Nothing published for this version
- v0.37.5-0.20240312131206-07c0a0b3158e12 Mar 2024pre-release
Nothing published for this version
- v0.37.5-0.20240229135147-493dd661905f29 Feb 2024pre-release
Nothing published for this version
- v0.37.45 Feb 2024
Release notes3 sources agree
Open source →Release date: 2024-02-05
This prerelease comes with improvements in the HelmRelease status reporting. After recovering from a reconciliation failure, sometimes the status may show stale conditions which could be misleading. This has been fixed by ensuring that the stale failure conditions get updated after failure recovery.
Improvements:
- v0.37.4-0.20240205083312-0114b20936a95 Feb 2024pre-release
Nothing published for this version
- v0.37.31 Feb 2024
Release notes3 sources agree
Open source →Release date: 2024-02-01
This prerelease comes with an update to the Kubernetes dependencies to v1.28.6 and various other dependencies have been updated to their latest version to patch upstream CVEs.
In addition, the controller is now built with Go 1.21.
Improvements:
- v0.37.3-0.20240122070235-610f6e6d38cd22 Jan 2024pre-release
Nothing published for this version
- v0.37.3-0.20240115073950-5c340a14ac0315 Jan 2024pre-release
Nothing published for this version
- v0.37.219 Dec 2023
Release notes3 sources agree
Open source →This prerelease fixes a bug that resulted in the controller not being able to properly watch HelmRelease resources with specific labels.
Fixes:
- Properly configure namespace selector #858
Improvements:
- build(deps): bump golang.org/x/crypto from 0.16.0 to 0.17.0 #856
- v0.37.115 Dec 2023
Release notes3 sources agree
Open source →This prerelease fixes a backwards compatibility issue that could occur when trying to move from the
v2beta1tov2beta2API while enabling drift detection.In addition, logging has been improved to provide faster feedback on any HTTP errors encountered while fetching HelmChart artifacts, and the controller will now set the
Stalledcondition as soon as it detects to be out of retries without having to wait for the next reconciliation.Lastly, Helm has been updated to v3.13.3.
Fixes:
Improvements:
- v0.37.1-0.20231213085637-259b8f812f2c13 Dec 2023pre-release
Nothing published for this version
- v0.37.1-0.20231213080932-8a6e68b4eada13 Dec 2023pre-release
Nothing published for this version
- v0.37.012 Dec 2023
Release notes3 sources agree
Open source →Release date: 2023-12-12
This prerelease promotes the
HelmReleaseAPI fromv2beta1tov2beta2. The promotion of the API is accompanied by a number of new features and bug fixes. Refer to the highlights section below for more information.In addition to the API promotion, this prerelease updates the controller dependencies to their latest versions. Making the controller compatible with Kubernetes v1.28.x, while updating the Helm library to v3.13.2, and the builtin version of Kustomize used for post-rendering to v5.3.0.
Lastly, the base controller image has been updated to Alpine v3.19.
Highlights
API changes
The upgrade is backwards compatible, and the controller will continue to reconcile
HelmReleaseresources of thev2beta1API without requiring any changes. However, making use of the new features requires upgrading the API version.- Drift detection and correction is now enabled on a per-release basis using
the
.spec.driftDetection.modefield. Refer to the drift detection section in thev2beta2specification for more information. - Ignoring specific fields during drift detection and correction is now
supported using the
.spec.driftDetection.ignorefield. Refer to the ignore rules section in thev2beta2specification to learn more. - Helm tests can now be selectively run using the
.spec.test.filtersfield. Refer to the test filters section in thev2beta2specification for more details. - The controller now offers proper integration with
kstatusand setsReconcilingandStalledconditions. See the Conditions section in thev2beta2specification to read more about the conditions. - The
.spec.maxHistorydefault value has been lowered from10to5to increase the controller's performance. - A history of metadata from Helm releases up to the previous successful release
is now available in the
.status.historyfield. This includes any Helm test results when enabled. - The
.patchesStrategicMergeand.patchesJson6902Kustomize post-rendering fields have been deprecated in favor of.patches. - A
status.lastAttemptedConfigDigestfield has been introduced to track the last attempted configuration digest using a hash of the composed values. - A
.status.lastAttemptedReleaseActionfield has been introduced to accurately determine the active remediation strategy. - The
.status.lastHandledForceAtand.status.lastHandledResetAtfields have been introduced to track the last time a force upgrade or reset was handled. This to accomadate newly introduced annotations to force upgrades and resets. - The
.status.lastAppliedRevisionand.status.lastReleaseRevisionfields have been deprecated in favor of.status.history. - The
.status.lastAttemptedValuesChecksumhas been deprecated in favor of.status.lastAttemptedConfigDigest.
Although the
v2beta1API is still supported, it is recommended to upgrade to thev2beta2API as soon as possible. Thev2beta1API will be removed after 6 months.To upgrade to the
v2beta2API, update theapiVersionfield of yourHelmReleaseresources tohelm.toolkit.fluxcd.io/v2beta2after updating the controller and Custom Resource Definitions.Other notable improvements
- The reconciliation model of the controller has been improved to be able to
better determine the state a Helm release is in. An example of this is that
enabling Helm tests will not require a Helm upgrade to be run, but instead
will run immediately if the release is in a
deployedstate already. - The controller will detect Helm releases in a
pending-install,pending-upgradeorpending-rollbackstate, and wil forcefully unlock the release (to afailedstate) to allow the controller to reattempt the release. - When drift correction is enabled, the controller will now attempt to correct drift it detects by creating and patching Kubernetes resources instead of running a Helm upgrade.
- The controller emits more detailed Kubernetes Events after running a Helm action. In addition, the controller will now emit a Kubernetes Event when a Helm release is uninstalled.
- The controller provides richer Condition messages before and after running a Helm action.
- Changes to a HelmRelease
.specwhich require a Helm uninstall for the changes to be successfully applied are now detected. For example, a change in.spec.targetNamespaceor.spec.releaseName. - When the release name exceeds the maximum length of 53 characters, the
controller will now truncate the release name to 40 characters and append a
short SHA256 hash of the release name prefixed with a
-to ensure the release name is unique. - New annotations have been introduced to force a Helm upgrade or to reset the
number of retries for a release. Refer to the forcing a release
and resetting remediation retries
sections in the
v2beta2specification for more information. - The digest algorithm used to calculate the digest of the composed values and
hash of the release object can now be configured using the
--snapshot-digest-algocontroller flag. The default value issha256. - When the
HelmChartresource for aHelmReleaseis notReady, the Conditions of theHelmReleasewill now contain more detailed information about the reason.
To get a full overview of all changes, and see examples of the new features. Please refer to the v2beta2 specification.
Full changelog
Improvements:
- Update dependencies #791 #792 #799 #812
- Update source-controller dependency to v1.2.1 #793 #835
- Rework
HelmReleasereconciliation logic #738 #816 #825 #829 #830 #833 #836 - Update Kubernetes 1.28.x, Helm v3.13.2 and Kustomize v5.3.0 #817 #839
- Allow configuration of drift detection on
HelmRelease#815 - Allow configuration of snapshot digest algorithm #818
- Remove obsolete code and tidy things #819
- Add deprecation warning to v2beta1 API #821
- Correct cluster drift using patches #822
- Introduce
forceAtandresetAtannotations #823 - doc/spec: document
v2beta2API #828 - api: deprecate stategic merge and JSON 6902 patches #832
- controller: enrich "HelmChart not ready" messages #834
- build: update Alpine to 3.19 #838
- Drift detection and correction is now enabled on a per-release basis using
the
- v0.36.3-0.20231124173300-6ec21aba4a4924 Nov 2023pre-release
Nothing published for this version
- v0.36.3-0.20231012071234-87c3ccc6cf6d12 Oct 2023pre-release
Nothing published for this version
- v0.36.211 Oct 2023
Release notes3 sources agree
Open source →Release date: 2023-10-11
This prerelease contains an improvement to retry the reconciliation of a
HelmReleaseas soon as the chart is available in storage, instead of waiting for the next reconciliation interval. Which is particularly useful when the source-controller has just been upgraded.In addition, it fixes a bug in which the controller would not properly label Custom Resource Definitions.
Fixes:
- runner: ensure CRDs are properly labeled #781
- fix: retry failed releases when charts are available in storage #785
Improvements:
- v0.36.118 Sept 2023
Release notes3 sources agree
Open source →Release date: 2023-09-18
This prerelease addresses a regression in which the captured Helm logs used in a failure event would not include Helm's Kubernetes client logs, making it more difficult to reason about e.g. timeout errors.
In addition, it contains a fix for the default service account used for the (experimental) differ, and dependency updates of several dependencies.
Fixes:
- runner: address regression in captured Helm logs #767
- Check source for nil artifact before loading chart #768
- controller: use
DefaultServiceAccountin differ #774
Improvements:
- v0.36.023 Aug 2023
Release notes3 sources agree
Open source →Release date: 2023-08-23
This prerelease introduces a
--interval-jitter-percentageflag to the controller to distribute the load more evenly when multiple objects are set up with the same interval. The default of this flag is set to5, which means that the interval will be jittered by a +/- 5% random value (e.g. if the interval is 10 minutes, the actual reconciliation interval will be between 9.5 and 10.5 minutes).In addition, the controller now stops exporting an object's metrics as soon as it has been deleted.
Lastly, dependencies have been updated, such as an update of Helm to
v3.12.3and Kubernetes related dependencies tov0.27.4.Improvements:
- Update dependencies #748
- controller: jitter requeue interval #751
- Delete stale metrics on delete #753
- Update Helm to v3.12.3 #754
- Update Source API to v1.1.0 #758
Fixes:
- chore: fix typo reconciliation #736
- v0.35.1-0.20230710064621-04c6980e89d610 Jul 2023pre-release
Nothing published for this version
- v0.35.1-0.20230704105442-630ae514c31a4 Jul 2023pre-release
Nothing published for this version
- v0.35.04 Jul 2023
Release notes3 sources agree
Open source →Release date: 2023-07-04
This prerelease adds support for configuring the deletion propagation policy to use when a Helm uninstall is performed using
.spec.uninstall.deletionPropagation, which was added as a feature to Helm inv3.12.0. Supported values arebackground,foregroundandorphan(defaults tobackground). See the Helm documentationIn addition, it offers support for Kubernetes
v1.27.3and includes updates to the controller's dependencies, such as an upgrade of Helm tov3.12.1.Starting with this version, the build, release and provenance portions of the Flux project supply chain provisionally meet SLSA Build Level 3.
Improvements:
- v0.34.3-0.20230622121302-5866b8a239c822 Jun 2023pre-release
Nothing published for this version
- v0.34.222 Jun 2023
Release notes3 sources agree
Open source →Release date: 2023-06-22
This prerelease fixes a regression bug for long-running reconciliations introduced in v0.34.0.
In addition, the controller release workflow was enhanced with SLSA level 3 generators. Starting with this version, provenance attestations are generated for the controller release assets and for the multi-arch container images.
Fixes:
- Fix HelmRelease reconciliation loop #703
Improvements:
- Add SLSA3 generators to release workflow #705
- v0.34.2-0.20231219162441-24c6729a231719 Dec 2023pre-release
Nothing published for this version
- v0.34.11 Jun 2023
Release notes3 sources agree
Open source →Release date: 2023-06-01
This prerelease comes with a bug fix for the event metadata revision, which was not included when a token was already present.
In addition, the source-controller dependency has been updated to v1.0.0-rc.5.
Fixes:
- Include revision and token in event metadata #695
Improvements:
- Update source-controller to v1.0.0-rc.5 #696
- v0.34.029 May 2023
Release notes3 sources agree
Open source →Release date: 2023-05-29
This prerelease comes with support for Helm 3.12.0 and Kustomize v5.0.3.
⚠️ Note that Kustomize v5 contains breaking changes, please consult their changelog for more details.
In addition, the controller dependencies have been updated to Kubernetes v1.27.2 and controller-runtime v0.15.0.
Lastly, the logic to forward events to notification-controller has been modified to use
.status.lastAttemptedValuesChecksumas an event metadata token to prevent incorrect rate limiting.Improvements:
- v0.33.012 May 2023
Release notes3 sources agree
Open source →Release date: 2023-05-12
This prerelease comes with a change to the calculation of the release values checksum. Previously, the checksum was calculated based on the values as provided by the user, which could lead to an upgrade when the values changed order, but not content. This has been changed to calculate the checksum based on the values after stable sorting them by key. This means that the checksum will only change when the values actually change.
In addition, the dependencies have been updated including a mitigation for CVE-2023-2253, and the controller base image has been updated to Alpine 3.18.
Improvements:
- v0.32.213 Apr 2023
Release notes3 sources agree
Open source →Release date: 2023-04-13
This prerelease comes with a bug fix for a nil pointer deref that could occur when drift detection was enabled.
In addition, it updates Helm to
v3.11.3, which includes two fixes for Go routine leaks.Fixes:
- v0.32.13 Apr 2023
Release notes3 sources agree
Open source →Release date: 2023-04-03
This prerelease comes with a bug fix in HelmRelease related to the
.spec.chart.metadatafield which wasn't truly optional, leading to empty value assignment even when it wasn't set.Fixes:
- Fix chart metadata by making it truly optional #665
- v0.32.031 Mar 2023
Release notes3 sources agree
Open source →Release date: 2023-03-31
This prerelease comes with a number of new features and improvements, and solves a long-standing issue with the patching of the HelmRelease status.
Highlights
Management of HelmChart labels and annotations
The HelmRelease now supports the definition of a set of labels and annotations using
.spec.chart.metadata.labelsand.spec.chart.metadata.annotations, which will be applied to the HelmChart created by the controller.Sharding
The controller can now be configured with
--watch-label-selector, after which only HelmRelease objects with this label will be reconciled by the controller.This allows for horizontal scaling, where the controller can be deployed multiple times with a unique label selector which is used as the sharding key.
Note that if you want to ensure a HelmChart gets created for a specific source-controller instance, you have to provide the labels for this controller in
.spec.chart.metadata.labelsof the HelmRelease.In addition, the source referenced (i.e. HelmRepository) in the HelmChart must be available to this same controller instance.
Opt-out of persistent Kubernetes client
The HelmRelease now supports opting out of the persistent Kubernetes client introduced in
v0.31.0by defining.spec.persistentClient: false(defaulttrue).This can be useful when a HelmRelease is used to manage a Helm chart that itself manages Custom Resource Definitions outside the Helm chart's CRD lifecycle (like OPA Gatekeeper), as the persistent client will not observe the creation of these resources.
Disabling this increases memory consumption, and should only be used when necessary.
Verification of Artifact Digest
The controller will now verify the Digest of the Artifact as advertised by the HelmChart, introduced in source-controller
v0.35.0.Due to this, the controller will now require source-controller
v0.35.0or higher (and ships withv1.0.0-rc.1by default, which includes v1 of theArtifactAPI).Full changelog
Improvements:
- Manage labels and annotations for a HelmChart #631
- Verify Digest of Artifact #651
- Move
controllerstointernal/controllers#653 - Update dependencies #654
- Add reconciler sharding capability based on label selector #658
- Add
PersistentClientflag to allow control over Kubernetes client behavior #659 - Update source-controller to v1.0.0-rc.1 #661
- config/*: update API versions and file names #662
Fixes:
- Update status patch logic #660
- v0.31.220 Mar 2023
Release notes3 sources agree
Open source →Release date: 2023-03-20
This prerelease extends the drift detection feature introduced in
v0.31.0with support for disabling the correction of drift using theCorrectDriftfeature gate.When disabled while
DetectDriftis enabled (using--feature-gates=DetectDrift=true,CorrectDrift=false), the controller will only emit events and log messages when drift is detected, but will not attempt to correct it. This allows to transition to drift detection and correction in a controlled manner.In addition, the controller dependencies have been updated to their latest versions.
Fixes:
- Allow opt-out of drift correction #647
Improvements:
- Update dependencies #649
- v0.31.110 Mar 2023
Release notes3 sources agree
Open source →Release date: 2023-03-10
This prerelease extends the OOM watch feature introduced in
v0.31.0with support for automatic detection of cgroup v1 paths, and flags to configure alternative paths using--oom-watch-max-memory-pathand--oom-watch-current-memory-path.Fixes:
- oomwatch: auto-detect well known cgroup paths #641
- v0.31.1-0.20230308162637-45a712a6dba48 Mar 2023pre-release
Nothing published for this version
- v0.31.08 Mar 2023
Release notes3 sources agree
Open source →Release date: 2023-03-08
This prerelease comes with a number of new features and improvements after a long period of non-substantial changes.
Highlights
Experimental drift detection
The controller now supports experimental drift detection, which can be enabled by configuring the Deployment with
--feature-gates=DetectDrift=true. This feature is still in its early stages, and lacks certain UX features. Diff output is currently available in the controller logs when the--log-level=debugflag is set.The feature itself makes use of the same approach as kustomize-controller to detect drift using a dry-run Server Side Apply of the rendered manifests of a release. When drift is detected, the controller will emit an event and trigger a Helm upgrade.
When a specific object from a release causes spurious upgrades, it can be excluded by annotating or labeling the object with
helm.toolkit.fluxcd.io/driftDetection: disabled. Refer to the drift detection documentation for more information.Cancellation of actions on controller shutdown
When a
SIGTERMsignal is received by the controller, it will now propagate this to any running Helm action, which will mark the release asfailed. This should prevent the controller from getting stuck in apendingstate when receiving aSIGTERMsignal.Detection of near OOM
The controller can now be configured to detect when it is nearing an OOM kill. This is enabled by configuring the Deployment with
--feature-gates=OOMWatch=true.When enabled, the controller will monitor its memory usage as reported by cgroups, and when it is nearing OOM, attempt to gracefully shutdown. Releases that are currently being upgraded will be cancelled (resulting in a
failedrelease as opposed to apendingdeadlock), and no new releases will be started.This is best combined with a thoughtful configuration of remediation strategies on the
HelmReleaseresources, to ensure that the controller can recover from the failed release.To control the threshold at which the controller will attempt to shut down, use the
--oom-watch-memory-threshold(default95) and--oom-watch-interval(default500ms) flags.In a future release, we will add support for unlocking releases that are in a pending state as a different approach to handling OOM situations. But this is waiting for architectural changes to happen first.
Kubernetes client improvements
We have made a number of improvements to the Kubernetes client used by the controller for Helm actions, which should reduce the memory usage of the controller and the number of API requests it makes when creating or replacing Custom Resource Definitions.
Miscellaneous
klogis now configured to log using the same logger as the rest of the controller (providing a consistent log format).In addition, the controller is now built with Go 1.20, and the dependencies have been updated.
Full changelog
Improvements:
- Enable experimental drift detection #617
- helm: propagate context to install and upgrade #620
- Check if Service Account exists before uninstalling release #623
- runner: configure Helm action cfg log levels #625
- Update dependencies #626 #627 #635
- Add OOM watcher to allow graceful shutdown #628
- kube: unify clients into single RESTClientGetter #630
- Use
logger.SetLoggerto also configureklog#633
- v0.30.1-0.20230217121029-5f465cf7d87017 Feb 2023pre-release
Nothing published for this version
- v0.30.017 Feb 2023
Release notes3 sources agree
Open source →Release date: 2023-02-17
This prerelease adds support for parsing the RFC-0005 revision format produced by source-controller
>=v0.35.0.In addition, the controller dependencies have been updated to their latest versions, including a security patch of Helm to
v3.11.1.Improvements:
- v0.29.1-0.20230216174733-67a096d5f4ee16 Feb 2023pre-release
Nothing published for this version
- v0.29.01 Feb 2023
Release notes3 sources agree
Open source →Release date: 2023-02-01
This prerelease comes with an update of Kubernetes dependencies to v1.26, Helm to v3.11.0, and a general update of other dependencies to their latest versions.
Starting with this release, Custom Resource Definitions installed by the controller as part of a
CreateorCreateReplacepolicy are now labeled withhelm.toolkit.fluxcd.io/nameandhelm.toolkit.fluxcd.io/namespaceto allow tracking theHelmReleaseorigin of the resource. Note that these labels are only added to new and/or changed resources, existing resources will not be updated.Improvements:
- v0.28.122 Dec 2022
Release notes3 sources agree
Open source →Release date: 2022-12-22
This prerelease sets the default value for the
--graceful-shutdown-timeoutto match the default value we set in the Deployment forterminationGracePeriodSecondswhich is 600s. This should fix handling graceful shutdown correctly.Fixes:
- Align
graceful-shutdown-timeoutwithterminationGracePeriodSeconds#584
- Align
- v0.28.020 Dec 2022
Release notes3 sources agree
Open source →Release date: 2022-12-20
This prerelease disables the caching of Secret and ConfigMap resources to improve memory usage. To opt-out from this behaviour, start the controller with:
--feature-gates=CacheSecretsAndConfigMaps=true.In addition, a new flag
--graceful-shutdown-timeouthas been added to control the duration of the graceful shutdown period. The default value is-1(disabled), to help prevent releases from being stuck due to the controller being terminated before the Helm action has completed.Helm has been updated to v3.10.3, which includes security fixes.
Fixes:
- Assign the value of
DisableOpenApiValidationduring upgrade #564 - build: Fix cifuzz and improve fuzz tests' reliability #565
- Minor typo in doc #566
- fuzz: Use build script from upstream and fix fuzzers #578
Improvements:
- Assign the value of