PackageTrack

Go modules · #2588

github.com/fluxcd/helm-controller

v1.6.3fluxcd/helm-controller

Release timeline

906 releases since 2020
202120222023202420252026

Releases

  1. v1.1.1-0.20241206161256-f48671c0209c6 Dec 2024pre-release

    Nothing published for this version

  2. v1.1.1-0.20241116193045-d8eee36ffed116 Nov 2024pre-release

    Nothing published for this version

  3. v1.1.1-0.20241101163442-5beaf80cfccd1 Nov 2024pre-release

    Nothing published for this version

  4. v1.1.1-0.20240927141751-c8ae4b6ad22527 Sept 2024pre-release

    Nothing published for this version

  5. v1.1.026 Sept 2024
    Release notes3 sources agree

    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 disableSchemaValidation under .spec.install and .spec.upgrade of a HelmRelease object.

    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:

    Open source →
  6. v1.0.110 May 2024
    Release notes3 sources agree

    Release date: 2024-05-10

    This patch release fixes a backwards compatibility issue that could occur when trying to move from the v2beta1 to v2 API while specifing .spec.chartRef.

    Fixes:

    • Fix: Allow upgrading from v2beta1 to v2 (GA) #982
    • Fix: Make HelmChartTemplate a pointer in .spec.chart #980
    Open source →
  7. v1.0.1-0.20240926183341-b0010b0cd5f026 Sept 2024pre-release

    Nothing published for this version

  8. v1.0.1-0.20240913132258-037e21595a3c13 Sept 2024pre-release

    Nothing published for this version

  9. v1.0.1-0.20240822070733-e05c4ffc4b2122 Aug 2024pre-release

    Nothing published for this version

  10. v1.0.1-0.20240815065640-f681236b84be15 Aug 2024pre-release

    Nothing published for this version

  11. v1.0.1-0.20240619081155-655432b46d3919 Jun 2024pre-release

    Nothing published for this version

  12. v1.0.1-0.20240527065826-ce58e47242a727 May 2024pre-release

    Nothing published for this version

  13. v1.0.1-0.20240525122148-bd7e561811a225 May 2024pre-release

    Nothing published for this version

  14. v1.0.1-0.20240517100751-7a6a2d430a7117 May 2024pre-release

    Nothing published for this version

  15. v1.0.1-0.20240510152632-e7dc85eddc8010 May 2024pre-release

    Nothing published for this version

  16. v1.0.1-0.20240510135223-1526d3a6156110 May 2024pre-release

    Nothing published for this version

  17. v1.0.1-0.20240510105801-bc1219fbc19d10 May 2024pre-release

    Nothing published for this version

  18. v1.0.09 May 2024
    Release notes3 sources agree

    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 HelmRelease API from v2beta2 to v2 (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/v2 API comes with a new field .spec.chartRef that adds support for referencing OCIRepository and HelmChart objects in a HelmRelease. When using .spec.chartRef instead of .spec.chart, the controller allows the reuse of a Helm chart version across multiple HelmRelease resources.

    The notification mechanism has been improved to provide more detailed metadata in the notification payload. The controller now annotates the Kubernetes events with the appVersion and version of the Helm chart, and the oci digest of 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 OCIRepository provides more flexibility in managing Helm charts, as it allows targeting a Helm chart version by tag, semver or OCI digest. It also provides a way to filter semver tags, allowing targeting a specific version range e.g. pre-releases only, patch versions, etc.

    Using OCIRepository objects instead of HelmRepository and HelmChart objects 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 the HelmRelease resources accordingly. Promoting a Helm chart version to production can be done by pinning the OCIRepository to 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: podinfo
    

    API changes

    The helm.toolkit.fluxcd.io CRD contains the following versions:

    • v2 (storage version)
    • v2beta2 (deprecated)
    • v2beta1 (deprecated)

    New optional fields have been added to the HelmRelease API:

    • .spec.chartRef allows referencing chart artifacts from OCIRepository and HelmChart objects.
    • .spec.chart.spec.ignoreMissingValuesFiles allows ignoring missing values files instead of failing to reconcile.

    Deprecated fields have been removed from the HelmRelease API:

    • .spec.chart.spec.valuesFile replaced by .spec.chart.spec.valuesFiles
    • .spec.postRenderers.kustomize.patchesJson6902 replaced by .spec.postRenderers.kustomize.patches
    • .spec.postRenderers.kustomize.patchesStrategicMerge replaced by .spec.postRenderers.kustomize.patches
    • .status.lastAppliedRevision replaced by .status.history.chartVersion

    Upgrade procedure

    1. Before upgrading the controller, ensure that the HelmRelease v2beta2 manifests stored in Git are not using the deprecated fields. Search for valuesFile and replace it with valuesFiles, replace patchesJson6902 and patchesStrategicMerge with patches. Commit and push the changes to the Git repository, then wait for Flux to reconcile the changes.
    2. 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.
    3. Update the apiVersion field of the HelmRelease resources to helm.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.ignoreMissingValuesFiles to 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:

    • Track changes in .spec.postRenderers #965
    • Update Ready condition during drift correction #885
    • Fix patching on drift detection #935
    • Use corev1 event type for sending events #908
    • Reintroduce missing events for helmChart reconciliation failures #907
    • Remove genclient:Namespaced tag #901
    Open source →
  19. v0.37.5-0.20240509122119-f88b3be818e79 May 2024pre-release

    Nothing published for this version

  20. v0.37.5-0.20240423085318-839433f67bc523 Apr 2024pre-release

    Nothing published for this version

  21. v0.37.5-0.20240403094335-64073a821be33 Apr 2024pre-release

    Nothing published for this version

  22. v0.37.5-0.20240312131206-07c0a0b3158e12 Mar 2024pre-release

    Nothing published for this version

  23. v0.37.5-0.20240229135147-493dd661905f29 Feb 2024pre-release

    Nothing published for this version

  24. v0.37.45 Feb 2024
    Release notes3 sources agree

    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:

    • Remove stale Ready=False conditions value to show more accurate status #884
    • Dependency update #886
    Open source →
  25. v0.37.4-0.20240205083312-0114b20936a95 Feb 2024pre-release

    Nothing published for this version

  26. v0.37.31 Feb 2024
    Release notes3 sources agree

    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:

    Open source →
  27. v0.37.3-0.20240122070235-610f6e6d38cd22 Jan 2024pre-release

    Nothing published for this version

  28. v0.37.3-0.20240115073950-5c340a14ac0315 Jan 2024pre-release

    Nothing published for this version

  29. v0.37.219 Dec 2023
    Release notes3 sources agree

    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
    Open source →
  30. v0.37.115 Dec 2023
    Release notes3 sources agree

    This prerelease fixes a backwards compatibility issue that could occur when trying to move from the v2beta1 to v2beta2 API 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 Stalled condition 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:

    • loader: allow overwrite of URL hostname again #844
    • api: ensure backwards compatibility v2beta1 #851

    Improvements:

    • loader: log HTTP errors to provide faster feedback #845
    • Update runtime to v0.43.3 #846
    • Early stall condition detection after remediation #848
    • Update Helm to v3.13.3 #849
    Open source →
  31. v0.37.1-0.20231213085637-259b8f812f2c13 Dec 2023pre-release

    Nothing published for this version

  32. v0.37.1-0.20231213080932-8a6e68b4eada13 Dec 2023pre-release

    Nothing published for this version

  33. v0.37.012 Dec 2023
    Release notes3 sources agree

    Release date: 2023-12-12

    This prerelease promotes the HelmRelease API from v2beta1 to v2beta2. 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 HelmRelease resources of the v2beta1 API 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.mode field. Refer to the drift detection section in the v2beta2 specification for more information.
    • Ignoring specific fields during drift detection and correction is now supported using the .spec.driftDetection.ignore field. Refer to the ignore rules section in the v2beta2 specification to learn more.
    • Helm tests can now be selectively run using the .spec.test.filters field. Refer to the test filters section in the v2beta2 specification for more details.
    • The controller now offers proper integration with kstatus and sets Reconciling and Stalled conditions. See the Conditions section in the v2beta2 specification to read more about the conditions.
    • The .spec.maxHistory default value has been lowered from 10 to 5 to increase the controller's performance.
    • A history of metadata from Helm releases up to the previous successful release is now available in the .status.history field. This includes any Helm test results when enabled.
    • The .patchesStrategicMerge and .patchesJson6902 Kustomize post-rendering fields have been deprecated in favor of .patches.
    • A status.lastAttemptedConfigDigest field has been introduced to track the last attempted configuration digest using a hash of the composed values.
    • A .status.lastAttemptedReleaseAction field has been introduced to accurately determine the active remediation strategy.
    • The .status.lastHandledForceAt and .status.lastHandledResetAt fields 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.lastAppliedRevision and .status.lastReleaseRevision fields have been deprecated in favor of .status.history.
    • The .status.lastAttemptedValuesChecksum has been deprecated in favor of .status.lastAttemptedConfigDigest.

    Although the v2beta1 API is still supported, it is recommended to upgrade to the v2beta2 API as soon as possible. The v2beta1 API will be removed after 6 months.

    To upgrade to the v2beta2 API, update the apiVersion field of your HelmRelease resources to helm.toolkit.fluxcd.io/v2beta2 after 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 deployed state already.
    • The controller will detect Helm releases in a pending-install, pending-upgrade or pending-rollback state, and wil forcefully unlock the release (to a failed state) 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 .spec which require a Helm uninstall for the changes to be successfully applied are now detected. For example, a change in .spec.targetNamespace or .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 v2beta2 specification 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-algo controller flag. The default value is sha256.
    • When the HelmChart resource for a HelmRelease is not Ready, the Conditions of the HelmRelease will 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 HelmRelease reconciliation 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 forceAt and resetAt annotations #823
    • doc/spec: document v2beta2 API #828
    • api: deprecate stategic merge and JSON 6902 patches #832
    • controller: enrich "HelmChart not ready" messages #834
    • build: update Alpine to 3.19 #838
    Open source →
  34. v0.36.3-0.20231124173300-6ec21aba4a4924 Nov 2023pre-release

    Nothing published for this version

  35. v0.36.3-0.20231012071234-87c3ccc6cf6d12 Oct 2023pre-release

    Nothing published for this version

  36. v0.36.211 Oct 2023
    Release notes3 sources agree

    Release date: 2023-10-11

    This prerelease contains an improvement to retry the reconciliation of a HelmRelease as 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:

    • Address typo in documentation #777
    • Update CI dependencies #783 #786
    • Address miscellaneous issues throughout code base #788
    Open source →
  37. v0.36.118 Sept 2023
    Release notes3 sources agree

    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 DefaultServiceAccount in differ #774

    Improvements:

    • build(deps): bump the ci group dependencies #761 #762 #766 #773
    • build(deps): bump github.com/cyphar/filepath-securejoin from 0.2.3 to 0.2.4 #764
    • Update source-controller to v1.1.1 #775
    Open source →
  38. v0.36.023 Aug 2023
    Release notes3 sources agree

    Release date: 2023-08-23

    This prerelease introduces a --interval-jitter-percentage flag 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 to 5, 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.3 and Kubernetes related dependencies to v0.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
    Open source →
  39. v0.35.1-0.20230710064621-04c6980e89d610 Jul 2023pre-release

    Nothing published for this version

  40. v0.35.1-0.20230704105442-630ae514c31a4 Jul 2023pre-release

    Nothing published for this version

  41. v0.35.04 Jul 2023
    Release notes3 sources agree

    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 in v3.12.0. Supported values are background, foreground and orphan (defaults to background). See the Helm documentation

    In addition, it offers support for Kubernetes v1.27.3 and includes updates to the controller's dependencies, such as an upgrade of Helm to v3.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:

    • Set deletion propagation for helm uninstall #698
    • Align go.mod version with Kubernetes (Go 1.20) #715
    • Update Go dependencies #726
    • Update source-controller to v1.0.0 #729
    Open source →
  42. v0.34.3-0.20230622121302-5866b8a239c822 Jun 2023pre-release

    Nothing published for this version

  43. v0.34.222 Jun 2023
    Release notes3 sources agree

    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
    Open source →
  44. v0.34.2-0.20231219162441-24c6729a231719 Dec 2023pre-release

    Nothing published for this version

  45. v0.34.11 Jun 2023
    Release notes3 sources agree

    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
    Open source →
  46. v0.34.029 May 2023
    Release notes3 sources agree

    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.lastAttemptedValuesChecksum as an event metadata token to prevent incorrect rate limiting.

    Improvements:

    • Update Kubernetes, controller-runtime and Helm #690
    • Remove the tini supervisor, and other nits #691
    • Use last attempted values checksum as event metadata token #692
    • Update source-controller to v1.0.0-rc.4 #693
    Open source →
  47. v0.33.012 May 2023
    Release notes3 sources agree

    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:

    • Stable sort release values by key #684
    • Update Alpine to 3.18 #685
    • build(deps): bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible #686
    • Update dependencies #687
    Open source →
  48. v0.32.213 Apr 2023
    Release notes3 sources agree

    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:

    • Fix nil pointer deref during diff attempt #672
    • Update Helm to v3.11.3 #673
    Open source →
  49. v0.32.13 Apr 2023
    Release notes3 sources agree

    Release date: 2023-04-03

    This prerelease comes with a bug fix in HelmRelease related to the .spec.chart.metadata field 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
    Open source →
  50. v0.32.031 Mar 2023
    Release notes3 sources agree

    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.labels and .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.labels of 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.0 by defining .spec.persistentClient: false (default true).

    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.0 or higher (and ships with v1.0.0-rc.1 by default, which includes v1 of the Artifact API).

    Full changelog

    Improvements:

    • Manage labels and annotations for a HelmChart #631
    • Verify Digest of Artifact #651
    • Move controllers to internal/controllers #653
    • Update dependencies #654
    • Add reconciler sharding capability based on label selector #658
    • Add PersistentClient flag 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
    Open source →
  51. v0.31.220 Mar 2023
    Release notes3 sources agree

    Release date: 2023-03-20

    This prerelease extends the drift detection feature introduced in v0.31.0 with support for disabling the correction of drift using the CorrectDrift feature gate.

    When disabled while DetectDrift is 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
    Open source →
  52. v0.31.110 Mar 2023
    Release notes3 sources agree

    Release date: 2023-03-10

    This prerelease extends the OOM watch feature introduced in v0.31.0 with support for automatic detection of cgroup v1 paths, and flags to configure alternative paths using --oom-watch-max-memory-path and --oom-watch-current-memory-path.

    Fixes:

    • oomwatch: auto-detect well known cgroup paths #641
    Open source →
  53. v0.31.1-0.20230308162637-45a712a6dba48 Mar 2023pre-release

    Nothing published for this version

  54. v0.31.08 Mar 2023
    Release notes3 sources agree

    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=debug flag 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 SIGTERM signal is received by the controller, it will now propagate this to any running Helm action, which will mark the release as failed. This should prevent the controller from getting stuck in a pending state when receiving a SIGTERM signal.

    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 failed release as opposed to a pending deadlock), and no new releases will be started.

    This is best combined with a thoughtful configuration of remediation strategies on the HelmRelease resources, 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 (default 95) and --oom-watch-interval (default 500ms) 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

    klog is 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.SetLogger to also configure klog #633
    Open source →
  55. v0.30.1-0.20230217121029-5f465cf7d87017 Feb 2023pre-release

    Nothing published for this version

  56. v0.30.017 Feb 2023
    Release notes3 sources agree

    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:

    • Support RFC-0005 revision format #606
    • Update dependencies #610
    • Update source-controller to v0.35.1 #612
    Open source →
  57. v0.29.1-0.20230216174733-67a096d5f4ee16 Feb 2023pre-release

    Nothing published for this version

  58. v0.29.01 Feb 2023
    Release notes3 sources agree

    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 Create or CreateReplace policy are now labeled with helm.toolkit.fluxcd.io/name and helm.toolkit.fluxcd.io/namespace to allow tracking the HelmRelease origin of the resource. Note that these labels are only added to new and/or changed resources, existing resources will not be updated.

    Improvements:

    • build: Enable SBOM and SLSA Provenance #594
    • Update dependencies #595
    • Patch CRDs with origin labels #596
    • Update source-controller to v0.34.0 #597
    Open source →
  59. v0.28.122 Dec 2022
    Release notes3 sources agree

    Release date: 2022-12-22

    This prerelease sets the default value for the --graceful-shutdown-timeout to match the default value we set in the Deployment for terminationGracePeriodSeconds which is 600s. This should fix handling graceful shutdown correctly.

    Fixes:

    • Align graceful-shutdown-timeout with terminationGracePeriodSeconds #584
    Open source →
  60. v0.28.020 Dec 2022
    Release notes3 sources agree

    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-timeout has 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 DisableOpenApiValidation during 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:

    • Disable caching of Secrets and ConfigMaps #513
    • Allow overriding ctrl manager graceful shutdown timeout #570 #582
    • helm: Update SDK to v3.10.3 #577
    • Update source-controller and dependencies #581
    Open source →