|
1 | 1 | # Changelog
|
2 | 2 |
|
| 3 | +## 0.37.0 |
| 4 | + |
| 5 | +**Release date:** 2023-12-12 |
| 6 | + |
| 7 | +This prerelease promotes the `HelmRelease` API from `v2beta1` to `v2beta2`. |
| 8 | +The promotion of the API is accompanied by a number of new features and bug |
| 9 | +fixes. Refer to the highlights section below for more information. |
| 10 | + |
| 11 | +In addition to the API promotion, this prerelease updates the controller |
| 12 | +dependencies to their latest versions. Making the controller compatible with |
| 13 | +Kubernetes v1.28.x, while updating the Helm library to v3.13.2, and the builtin |
| 14 | +version of Kustomize used for post-rendering to v5.3.0. |
| 15 | + |
| 16 | +Lastly, the base controller image has been updated to Alpine v3.19. |
| 17 | + |
| 18 | +### Highlights |
| 19 | + |
| 20 | +#### API changes |
| 21 | + |
| 22 | +The upgrade is backwards compatible, and the controller will continue to |
| 23 | +reconcile `HelmRelease` resources of the `v2beta1` API without requiring any |
| 24 | +changes. However, making use of the new features requires upgrading the API |
| 25 | +version. |
| 26 | + |
| 27 | +- Drift detection and correction is now enabled on a per-release basis using |
| 28 | + the `.spec.driftDetection.mode` field. Refer to the [drift detection section](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md#drift-detection) |
| 29 | + in the `v2beta2` specification for more information. |
| 30 | +- Ignoring specific fields during drift detection and correction is now |
| 31 | + supported using the `.spec.driftDetection.ignore` field. Refer to the |
| 32 | + [ignore rules section](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md#ignore-rules) |
| 33 | + in the `v2beta2` specification to learn more. |
| 34 | +- Helm tests can now be selectively run using the `.spec.test.filters` field. |
| 35 | + Refer to the [test filters section](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md#filtering-tests) |
| 36 | + in the `v2beta2` specification for more details. |
| 37 | +- The controller now offers proper integration with [`kstatus`](https://github.com/kubernetes-sigs/cli-utils/blob/master/pkg/kstatus/README.md) |
| 38 | + and sets `Reconciling` and `Stalled` conditions. See the [Conditions section](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md#conditions) |
| 39 | + in the `v2beta2` specification to read more about the conditions. |
| 40 | +- The `.spec.maxHistory` default value has been lowered from `10` to `5` to |
| 41 | + increase the controller's performance. |
| 42 | +- A history of metadata from Helm releases up to the previous successful release |
| 43 | + is now available in the `.status.history` field. This includes any Helm test |
| 44 | + results when enabled. |
| 45 | +- The `.patchesStrategicMerge` and `.patchesJson6902` Kustomize post-rendering |
| 46 | + fields have been deprecated in favor of `.patches`. |
| 47 | +- A `status.lastAttemptedConfigDigest` field has been introduced to track the |
| 48 | + last attempted configuration digest using a hash of the composed values. |
| 49 | +- A `.status.lastAttemptedReleaseAction` field has been introduced to accurately |
| 50 | + determine the active remediation strategy. |
| 51 | +- The `.status.lastHandledForceAt` and `.status.lastHandledResetAt` fields have |
| 52 | + been introduced to track the last time a force upgrade or reset was handled. |
| 53 | + This to accomadate newly introduced annotations to force upgrades and resets. |
| 54 | +- The `.status.lastAppliedRevision` and `.status.lastReleaseRevision` fields |
| 55 | + have been deprecated in favor of `.status.history`. |
| 56 | +- The `.status.lastAttemptedValuesChecksum` has been deprecated in favor of |
| 57 | + `.status.lastAttemptedConfigDigest`. |
| 58 | + |
| 59 | +Although the `v2beta1` API is still supported, it is recommended to upgrade to |
| 60 | +the `v2beta2` API as soon as possible. The `v2beta1` API will be removed after |
| 61 | +6 months. |
| 62 | + |
| 63 | +To upgrade to the `v2beta2` API, update the `apiVersion` field of your |
| 64 | +`HelmRelease` resources to `helm.toolkit.fluxcd.io/v2beta2` after updating the |
| 65 | +controller and Custom Resource Definitions. |
| 66 | + |
| 67 | +#### Other notable improvements |
| 68 | + |
| 69 | +- The reconciliation model of the controller has been improved to be able to |
| 70 | + better determine the state a Helm release is in. An example of this is that |
| 71 | + enabling Helm tests will not require a Helm upgrade to be run, but instead |
| 72 | + will run immediately if the release is in a `deployed` state already. |
| 73 | +- The controller will detect Helm releases in a `pending-install`, `pending-upgrade` |
| 74 | + or `pending-rollback` state, and wil forcefully unlock the release (to a |
| 75 | + `failed` state) to allow the controller to reattempt the release. |
| 76 | +- When drift correction is enabled, the controller will now attempt to correct |
| 77 | + drift it detects by creating and patching Kubernetes resources instead of |
| 78 | + running a Helm upgrade. |
| 79 | +- The controller emits more detailed Kubernetes Events after running a Helm |
| 80 | + action. In addition, the controller will now emit a Kubernetes Event when |
| 81 | + a Helm release is uninstalled. |
| 82 | +- The controller provides richer Condition messages before and after running a |
| 83 | + Helm action. |
| 84 | +- Changes to a HelmRelease `.spec` which require a Helm uninstall for the |
| 85 | + changes to be successfully applied are now detected. For example, a change in |
| 86 | + `.spec.targetNamespace` or `.spec.releaseName`. |
| 87 | +- When the release name exceeds the maximum length of 53 characters, the |
| 88 | + controller will now truncate the release name to 40 characters and append a |
| 89 | + short SHA256 hash of the release name prefixed with a `-` to ensure the |
| 90 | + release name is unique. |
| 91 | +- New annotations have been introduced to force a Helm upgrade or to reset the |
| 92 | + number of retries for a release. Refer to the [forcing a release](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md#forcing-a-release) |
| 93 | + and [resetting remediation retries](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md#resetting-remediation-retries) |
| 94 | + sections in the `v2beta2` specification for more information. |
| 95 | +- The digest algorithm used to calculate the digest of the composed values and |
| 96 | + hash of the release object can now be configured using the `--snapshot-digest-algo` |
| 97 | + controller flag. The default value is `sha256`. |
| 98 | +- When the `HelmChart` resource for a `HelmRelease` is not `Ready`, the |
| 99 | + Conditions of the `HelmRelease` will now contain more detailed information |
| 100 | + about the reason. |
| 101 | + |
| 102 | +To get a full overview of all changes, and see examples of the new features. |
| 103 | +Please refer to the [v2beta2 specification](https://github.com/fluxcd/helm-controller/blob/v0.37.0/docs/spec/v2beta2/helmreleases.md). |
| 104 | + |
| 105 | +### Full changelog |
| 106 | + |
| 107 | +Improvements: |
| 108 | +- Update dependencies |
| 109 | + [#791](https://github.com/fluxcd/helm-controller/pull/791) |
| 110 | + [#792](https://github.com/fluxcd/helm-controller/pull/792) |
| 111 | + [#799](https://github.com/fluxcd/helm-controller/pull/799) |
| 112 | + [#812](https://github.com/fluxcd/helm-controller/pull/812) |
| 113 | +- Update source-controller dependency to v1.2.1 |
| 114 | + [#793](https://github.com/fluxcd/helm-controller/pull/793) |
| 115 | + [#835](https://github.com/fluxcd/helm-controller/pull/835) |
| 116 | +- Rework `HelmRelease` reconciliation logic |
| 117 | + [#738](https://github.com/fluxcd/helm-controller/pull/738) |
| 118 | + [#816](https://github.com/fluxcd/helm-controller/pull/816) |
| 119 | + [#825](https://github.com/fluxcd/helm-controller/pull/825) |
| 120 | + [#829](https://github.com/fluxcd/helm-controller/pull/829) |
| 121 | + [#830](https://github.com/fluxcd/helm-controller/pull/830) |
| 122 | + [#833](https://github.com/fluxcd/helm-controller/pull/833) |
| 123 | + [#836](https://github.com/fluxcd/helm-controller/pull/836) |
| 124 | +- Update Kubernetes 1.28.x, Helm v3.13.2 and Kustomize v5.3.0 |
| 125 | + [#817](https://github.com/fluxcd/helm-controller/pull/817) |
| 126 | + [#839](https://github.com/fluxcd/helm-controller/pull/839) |
| 127 | +- Allow configuration of drift detection on `HelmRelease` |
| 128 | + [#815](https://github.com/fluxcd/helm-controller/pull/815) |
| 129 | +- Allow configuration of snapshot digest algorithm |
| 130 | + [#818](https://github.com/fluxcd/helm-controller/pull/818) |
| 131 | +- Remove obsolete code and tidy things |
| 132 | + [#819](https://github.com/fluxcd/helm-controller/pull/819) |
| 133 | +- Add deprecation warning to v2beta1 API |
| 134 | + [#821](https://github.com/fluxcd/helm-controller/pull/821) |
| 135 | +- Correct cluster drift using patches |
| 136 | + [#822](https://github.com/fluxcd/helm-controller/pull/822) |
| 137 | +- Introduce `forceAt` and `resetAt` annotations |
| 138 | + [#823](https://github.com/fluxcd/helm-controller/pull/823) |
| 139 | +- doc/spec: document `v2beta2` API |
| 140 | + [#828](https://github.com/fluxcd/helm-controller/pull/828) |
| 141 | +- api: deprecate stategic merge and JSON 6902 patches |
| 142 | + [#832](https://github.com/fluxcd/helm-controller/pull/832) |
| 143 | +- controller: enrich "HelmChart not ready" messages |
| 144 | + [#834](https://github.com/fluxcd/helm-controller/pull/834) |
| 145 | +- build: update Alpine to 3.19 |
| 146 | + [#838](https://github.com/fluxcd/helm-controller/pull/838) |
| 147 | + |
3 | 148 | ## 0.36.2
|
4 | 149 |
|
5 | 150 | **Release date:** 2023-10-11
|
|
0 commit comments