|
2 | 2 |
|
3 | 3 | All notable changes to this project are documented in this file.
|
4 | 4 |
|
| 5 | +## 0.22.0 |
| 6 | + |
| 7 | +**Release date:** 2022-03-17 |
| 8 | + |
| 9 | +This prerelease comes with new reconcilers which make use of `fluxcd/pkg` |
| 10 | +utilities for common runtime operations, and graduates the API to `v1beta2`. |
| 11 | + |
| 12 | +:warning: **It is required** to update the source-controller Custom Resource |
| 13 | +Definitions on your cluster and/or in Git. |
| 14 | + |
| 15 | +### Breaking changes |
| 16 | + |
| 17 | +- `Bucket` resources do now take the provided etag for object storage items |
| 18 | + into account during the calculation of the revision. As a result, items will |
| 19 | + no longer be downloaded on every reconcile if none of them have changed. |
| 20 | +- `HelmChart` resources do now advertise the observed chart name |
| 21 | + (`.status.observedChartName`) and Source (reference) Artifact revision |
| 22 | + (`.status.observedSourceArtifactRevision` in the Status. The information is |
| 23 | + used to more efficiently react to source revision and/or chart changes. |
| 24 | + |
| 25 | +### Features and Improvements |
| 26 | + |
| 27 | +#### API specifications in a user-friendly format |
| 28 | + |
| 29 | +[The new specifications for the `v1beta2` API](https://github.com/fluxcd/source-controller/tree/v0.22.0/docs/spec/v1beta2) |
| 30 | +have been written in a new format with the aim to be more valuable to a user. |
| 31 | +Featuring separate sections with examples, and information on how to write |
| 32 | +and work with them. |
| 33 | + |
| 34 | +#### Artifact now advertises size |
| 35 | + |
| 36 | +The size (in bytes) of a tarball Artifact is now advertised in the Size |
| 37 | +(`.size`) field of the Artifact. This can be utilized by users to e.g. quickly |
| 38 | +see if `.sourceignore` rules have an effect, or be displayed in a UI. |
| 39 | + |
| 40 | +#### Azure Blob Storage support for `Bucket` resources |
| 41 | + |
| 42 | +The `.spec.provider` of a `Bucket` resource can now be set to `azure` to |
| 43 | +instruct the controller to use the |
| 44 | +[Azure Blob Storage SDK](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/storage/azblob#readme) |
| 45 | +while fetching objects. This allows for authenticating using Service |
| 46 | +Principals, Managed Identities and Shared Keys. |
| 47 | + |
| 48 | +For more information, see the |
| 49 | +[Bucket spec about the Azure provider](https://github.com/fluxcd/source-controller/blob/v0.22.0/docs/spec/v1beta2/buckets.md#azure). |
| 50 | + |
| 51 | +#### Enhanced Kubernetes Conditions |
| 52 | + |
| 53 | +Source API resources will now advertise more explicit Condition types (more |
| 54 | +about the types in "API changes"), provide `Reconciling` and `Stalled` |
| 55 | +Conditions where applicable for |
| 56 | +[better integration with `kstatus`](https://github.com/kubernetes-sigs/cli-utils/blob/master/pkg/kstatus/README.md#conditions), |
| 57 | +and record the Observed Generation on the Condition. |
| 58 | + |
| 59 | +For a detailed overview per Source type, refer to the spec: |
| 60 | + |
| 61 | +- [GitRepository](https://github.com/fluxcd/source-controller/blob/v0.22.0/docs/spec/v1beta2/gitrepositories.md#conditions) |
| 62 | +- [HelmRepository](https://github.com/fluxcd/source-controller/blob/v0.22.0/docs/spec/v1beta2/helmrepositories.md#conditions) |
| 63 | +- [HelmChart](https://github.com/fluxcd/source-controller/blob/v0.22.0/docs/spec/v1beta2/helmcharts.md#conditions) |
| 64 | +- [Bucket](https://github.com/fluxcd/source-controller/blob/v0.22.0/docs/spec/v1beta2/buckets.md#conditions) |
| 65 | + |
| 66 | +#### Enhanced Kubernetes Events (and notifications) |
| 67 | + |
| 68 | +The Kubernetes Events the controller emits have been reworked to provide a |
| 69 | +proper reason, and more informative messages. |
| 70 | +Users making use of the notification-controller will notice this as well, as |
| 71 | +this same information is used to compose notifications. |
| 72 | + |
| 73 | +#### Experimental managed transport for `libgit2` Git implementation |
| 74 | + |
| 75 | +The `libgit2` Git implementation supports a new experimental transport to |
| 76 | +improve reliability, adding timeout enforcement for Git network operations. |
| 77 | +Opt-in by setting the environment variable `EXPERIMENTAL_GIT_TRANSPORT` to |
| 78 | +`true` in the controller's Deployment. This will result in the low-level |
| 79 | +transport being handled by the controller, instead of `libgit2`. It may result |
| 80 | +in an increased number of timeout messages in the logs, however it will remove |
| 81 | +the ability of Git operations to make the controllers hang indefinitely. |
| 82 | + |
| 83 | +#### Reuse of HTTP/S transport for Helm repository index and chart downloads |
| 84 | + |
| 85 | +The Helm dependency has been updated to `v3.8.1`, with a patch applied from |
| 86 | +https://github.com/helm/helm/pull/10568. Using this patch, the HTTP transports |
| 87 | +are now managed by the controller, to prevent the clogging of thousands of open |
| 88 | +TCP connections on some instances. |
| 89 | + |
| 90 | +#### Update of `libgit2` Git implementation to `v1.3.x` |
| 91 | + |
| 92 | +The `libgit2` Git implementation has been updated to `v1.3.x`, allowing us to |
| 93 | +provide better error signals for authentication, certificate and transport |
| 94 | +failures. Effectively, this means that instead of a `unable to clone: User` |
| 95 | +error string, a descriptive one is now given. |
| 96 | + |
| 97 | +In addition, `NO_PROXY` settings are now properly taken into account. |
| 98 | + |
| 99 | +#### Preparation of support for `rsa-ssh2-256/512` |
| 100 | + |
| 101 | +The dependency on `golang.org/x/crypto` has been updated to |
| 102 | +`v0.0.0-20220315160706-3147a52a75dd`, as preparation of support for |
| 103 | +`rsa-ssh2-256/512`. This should theoretically work out of the box for |
| 104 | +`known_hosts` entries and `go-git` Git provider credentials, but has not been |
| 105 | +widely tested. |
| 106 | + |
| 107 | +### API changes |
| 108 | + |
| 109 | +The `source.toolkit.fluxcd.io/v1beta2` API is backwards compatible with `v1beta1`. |
| 110 | + |
| 111 | +- Introduction of `Reconciling` and `Stalled` Condition types for [better |
| 112 | + integration with `kstatus`](https://github.com/kubernetes-sigs/cli-utils/blob/master/pkg/kstatus/README.md#conditions). |
| 113 | +- Introduction of new Condition types to provide better signals and failure |
| 114 | + indications: |
| 115 | + * `ArtifactOutdated`: indicates the current Artifact of the Source is outdated. |
| 116 | + * `SourceVerified`: indicates the integrity of the Source has been verified. |
| 117 | + * `FetchFailed`: indicates a transient or persistent fetch failure of the |
| 118 | + upstream Source. |
| 119 | + * `BuildFailed`: indicates a transient or persistent build failure of a |
| 120 | + Source's Artifact. |
| 121 | + * `StorageOperationFailed`: indicates a transient or persistent failure |
| 122 | + related to storage. |
| 123 | + * `IncludeUnavailable`: indicates an include is not available. For example, |
| 124 | + because it does not exist, or does not have an Artifact. |
| 125 | +- Introduction of a Size (in bytes) field (`.status.artifact.size`) in the |
| 126 | + Artifact object. |
| 127 | +- Introduction of `ObservedChartName` (`.status.observedChartName`) and |
| 128 | + `ObservedSourceArtifactRevision` (`.status.observedSourceArtifactRevision`) |
| 129 | + fields in the `HelmChart` Status. |
| 130 | +- Introduction of `azure` provider implementation for `Bucket`. |
| 131 | + |
| 132 | +Updating the manifests in Git to `v1beta2` can be done at any time after the |
| 133 | +source-controller upgrade. |
| 134 | + |
| 135 | +### Full list of changes |
| 136 | + |
| 137 | +- Upgrade to golang-with-libgit2:1.1.1.6 and use static libraries for in |
| 138 | + development |
| 139 | + [#562](https://github.com/fluxcd/source-controller/pull/562) |
| 140 | +- Initial fuzzing tests |
| 141 | + [#572](https://github.com/fluxcd/source-controller/pull/572) |
| 142 | +- Validate libgit2 args are set correctly |
| 143 | + [#574](https://github.com/fluxcd/source-controller/pull/574) |
| 144 | +- Download libgit2 libraries for fuzzing |
| 145 | + [#572](https://github.com/fluxcd/source-controller/pull/577) |
| 146 | +- Upgrade libgit2 to 1.3.0 and git2go to v33 |
| 147 | + [#573](https://github.com/fluxcd/source-controller/pull/573) |
| 148 | +- pkg/git: Include commit message and URL in checkout error |
| 149 | + [#579](https://github.com/fluxcd/source-controller/pull/579) |
| 150 | +- Add support for multiple fuzz sanitizers |
| 151 | + [#580](https://github.com/fluxcd/source-controller/pull/580) |
| 152 | +- Upgrade controller-runtime to v0.11.1 and docker/distribution to v2.8.0 |
| 153 | + [#583](https://github.com/fluxcd/source-controller/pull/583) |
| 154 | +- Move to `v1beta2` API and rewrite reconcilers |
| 155 | + [#586](https://github.com/fluxcd/source-controller/pull/586) |
| 156 | +- git/libgit2: set CheckoutForce on branch strategy |
| 157 | + [#589](https://github.com/fluxcd/source-controller/pull/589) |
| 158 | +- Reuse transport for Helm downloads |
| 159 | + [#590](https://github.com/fluxcd/source-controller/pull/590) |
| 160 | +- Update object API version in the sample configs |
| 161 | + [#591](https://github.com/fluxcd/source-controller/pull/591) |
| 162 | +- api: Move Status in CRD printcolumn to the end |
| 163 | + [#592](https://github.com/fluxcd/source-controller/pull/592) |
| 164 | +- Update github.com/sosedoff/gitkit to v0.3.0 (CVE fix) |
| 165 | + [#594](https://github.com/fluxcd/source-controller/pull/594) |
| 166 | +- Remove redundant reconciling condition in reconcileArtifact |
| 167 | + [#595](https://github.com/fluxcd/source-controller/pull/595) |
| 168 | +- Implement Size field on archived artifacts |
| 169 | + [#597](https://github.com/fluxcd/source-controller/pull/597) |
| 170 | +- Add native Azure Blob support |
| 171 | + [#598](https://github.com/fluxcd/source-controller/pull/598) |
| 172 | +- Experimental managed transport for libgit2 operations |
| 173 | + [#606](https://github.com/fluxcd/source-controller/pull/606) |
| 174 | +- Update Helm to patched v3.8.1 |
| 175 | + [#609](https://github.com/fluxcd/source-controller/pull/609) |
| 176 | +- Add new condition StorageOperationFailedCondition |
| 177 | + [#612](https://github.com/fluxcd/source-controller/pull/612) |
| 178 | +- Prioritize StorageOperationFailedCondition |
| 179 | + [#613](https://github.com/fluxcd/source-controller/pull/613) |
| 180 | +- Update dependencies |
| 181 | + [#600](https://github.com/fluxcd/source-controller/pull/600) |
| 182 | + [#616](https://github.com/fluxcd/source-controller/pull/616) |
| 183 | +- api/v1beta2: add note on Condition polarity |
| 184 | + [#622](https://github.com/fluxcd/source-controller/pull/622) |
| 185 | + |
5 | 186 | ## 0.21.2
|
6 | 187 |
|
7 | 188 | **Release date:** 2022-02-07
|
|
0 commit comments