Skip to content

Commit 50aab28

Browse files
authored
Merge pull request #842 from fluxcd/release-v0.37.0
Release v0.37.0
2 parents 14a333d + 4cae41c commit 50aab28

File tree

3 files changed

+147
-2
lines changed

3 files changed

+147
-2
lines changed

CHANGELOG.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,150 @@
11
# Changelog
22

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+
3148
## 0.36.2
4149

5150
**Release date:** 2023-10-11

config/manager/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ resources:
55
images:
66
- name: fluxcd/helm-controller
77
newName: fluxcd/helm-controller
8-
newTag: v0.36.2
8+
newTag: v0.37.0

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ replace (
1616

1717
require (
1818
github.com/fluxcd/cli-utils v0.36.0-flux.2
19-
github.com/fluxcd/helm-controller/api v0.36.2
19+
github.com/fluxcd/helm-controller/api v0.37.0
2020
github.com/fluxcd/pkg/apis/acl v0.1.0
2121
github.com/fluxcd/pkg/apis/event v0.6.0
2222
github.com/fluxcd/pkg/apis/kustomize v1.2.0

0 commit comments

Comments
 (0)