-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Bump kubectl and packages to 1.21 #3378
Comments
I'd like to understand when this will become a burning issue, where we are behind the 8-ball, so I can be sure this is completed before it is urgent. According to the version skew policy and support calendar, Kubernetes 1.18, 1.19, and 1.20 are currently in support. This leads me to believe this can be really urgent, and should be prioritized. But I am not sure what degree this version disconnect can actually lead to breaking behavior, I have been upgrading my Kubernetes clusters to the latest version available and I have not yet noticed any degree of issues running the v1 maintenance series of Flux on the later supported versions, with several-versions-earlier client libraries like 1.17 that we still have. |
So, I've done some research and I understand why this issue is still behind the 8-ball. I'm removing it from the 1.22.0 milestone after understanding that some of our backwards compatibility guarantees may prevent us from upgrading again. Kubernetes 1.18 client-go was a breaking change that introduced a It all starts with, Helm v2 does not offer support for Kubernetes client newer than 1.16.x – Helm version skew policy describes the earliest and latest Kubernetes version that is formally supported by each Helm version. The first Helm version with support for Kubernetes 1.18.x+ is Helm 3.2.x. There is no Helm 2 support for To put this in context of Flux and Helm Operator backwards compatibility guarantees: since Flux v1 is in maintenance mode, it is not breaking compatibility with anything as there are no breaking releases allowed in the maintenance mode for Flux v1. Helm Operator supports Helm v2 and v3, as well as documenting a migration path for Helm v2to3 conversion. Helm Operator (also in maintenance mode) will continue to support both Helm v2 and v3 (at least according to my reading, this is not a new guarantee) until it is sunset. After then, support can be provided only for Helm Controller (which is by then, I would anticipate, a stable release.) Flux (v1) depends on Helm Operator's codebase because the In concrete terms, this is what blocks the update: when applying
That is an error that evidently can't be resolved, since Helm Operator's client-go version 0.17.x doesn't provide the methods with the Since Helm v2 cannot support K8s client-go 0.18.x+ at all, this apparently can not resolve without a breaking change. So, Flux v1 cannot upgrade past Helm Operator's transitive dependency on K8s client 0.17.x. This will unfortunately be a blocker for supporting new Kubernetes API features in Flux v1. We can not provide better compatibility guarantees than our upstreams. The GitOps Toolkit's replacement for Helm Operator, "Helm Controller," only supports Helm v3, simplifying things drastically into the future. The unfortunate thing for our support guarantees is that... since Kubernetes 1.17.x is already out of support, if you are on this version of Kubernetes, you are already out of maintenance releases from Kubernetes upstream. The K8s ecosystem moves quickly and staying on an older version of Kubernetes that cannot receive support in the form of patches or security updates, is not advisable. The good news is, if I understand this README (kubernetes/client-go) then, unlike Helm v2, the Kubernetes client actually does provide some guarantees about compatibility both forward and backward. New releases of Kubernetes will take instructions from old versions of the client, at least within the range described here (at this time the support matrix shows It explains:
So, the support status of Helm Operator with Helm v2 is that, it can no longer be supported on any currently in-support series of Kubernetes release based on upstream (Helm) support. It would be necessary to start dropping features from Flux in order to upgrade past this point. At some future date it may become necessary to drop That EOL for Flux v1 will happen on a future date that has yet to be announced. The guideline I've heard thrown around is "at least 6 months after Flux v2 goes GA, not less than." I will leave the issue open since it represents a potential obstacle to providing support for Flux in the future, and as a record of what was learned by trying to make this upgrade. (As I mentioned, I removed this from the milestone 1.22.0 that is planned to release soon, with |
go.mod - reset k8s machinery to 1.17.17 This is the latest release that we can update to -- see #3378
go.mod - reset k8s machinery to 1.17.17 This is the latest release that we can update to -- see #3378 Signed-off-by: Kingdon Barrett <kingdon@weave.works>
go.mod - reset k8s machinery to 1.17.17 This is the latest release that we can update to -- see #3378 Signed-off-by: Kingdon Barrett <kingdon@weave.works>
go.mod - reset k8s machinery to 1.17.17 This is the latest release that we can update to -- see #3378 Try to remove when distribution/distribution#2905 is out docker/distribution patch still needed for now (Put it back for now.) On 2021-02-25 this has been merged, 2.7.2 of docker/distribution should include it hopefully relatively soon! Signed-off-by: Kingdon Barrett <kingdon@weave.works>
Related: fluxcd/helm-operator#599 |
I think this can probably be resolved now, since apimachinery has been upgraded so far already in the Flux 1.23.0 release, and Helm Operator 1.4.0. I see a handful of places where code changes are needed to make the upgrade. I opened #3515 to give this a try! |
Kubernetes 1.19 is out --> bump to 1.18. (the packages may .. take some doing)
The text was updated successfully, but these errors were encountered: