-
-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
minimum supported k8s version #684
Comments
As a suggestion, it's probably best for kube-rs to match the k8s support policy https://kubernetes.io/releases/patch-releases/ -- v1.19 is reaching its EOL in the next few hours, so it's probably perfectly fine to support v1.20+ (until February, when 1.20 reaches its EOL). |
Thanks for reporting.
I don't think this was intentional. As far as I know, we try to support all versions supported by
Adding version features to @clux can you elaborate why you didn't want to introduce version features? (#621 (comment)) |
As a reference point, I think we're going to adopt a support policy that matches Kubernetes (linkerd/linkerd2#7171). At the very least, we want to be able to exercise the minimum supported version in k3d/kind, and that's difficult/impossible with versions like 1.17 (which reached EOL in January 2021). |
Can't speak for @clux, but I don't like us having to maintain version features either:
One immediate workaround would be to wrap the events module in a Definitely agree that we need to agree on what we actually support, and actually test against that. |
Yeah, the duplication was my main reason there originally. Although I do think there are some good benefits here that can be architected from it if we think about it from a fresh
|
As for what we support, I had suggested: min_supported(eks k8s version, aks k8s version, gke k8s version) which is currently There's four categories of dates here we can concern ourselves with:
Now, we could go full kubernetes, version after it, and use skew policies, but I don't think we are set up to do that yet - too much flux to maintain several branches of releases. Maybe after our big projects like gold + pb codegen are sorted out. I also don't want to make users choose to NOT upgrade I think the best we can do for now is something like
and decide on an |
* deprecated events feature - for #684 Signed-off-by: clux <[email protected]> * use if_ge_1_19 instead Signed-off-by: clux <[email protected]> * note about it in docs Signed-off-by: clux <[email protected]>
Fix for this specific aspect of the kubernetes minimum version is published in We will probably also codify some MSK8SV policy somehow, but for now, didn't want to bump it from like 1.15 to 1.19 just because of an accident. |
Had a go at creating a CI matrix job for this, and could not get anywhere sensible due to the version features. Thinking that this has to be tackled at the codegen level instead by avoiding version features. |
As part of Kubernetes version policies proposed in kube-rs/website#19 for #684 Signed-off-by: clux <[email protected]>
Been thinking more about this. Turns out we can define a minimum support and run simple tests against stable apis without changing k8s-openapi feature version at a start (because our tests don't rely on deprecated/alpha apis). This is done in #924 and policies are proposed in kube-rs/website#19. |
* Run e2e tests against supported kubernetes versions As part of Kubernetes version policies proposed in kube-rs/website#19 for #684 Signed-off-by: clux <[email protected]> * add integration tests as specific job to run it against mk8sv Signed-off-by: clux <[email protected]> * rename tests and try to fix integration Signed-off-by: clux <[email protected]> * fix k3d args? Signed-off-by: clux <[email protected]> * fix e2e Signed-off-by: clux <[email protected]> * test against v1.19 Signed-off-by: clux <[email protected]> * badge update Signed-off-by: clux <[email protected]> * s/MINK8SV/MK8SV Signed-off-by: clux <[email protected]> * Big e2e rework (WIP) Now two e2e tests, and more feature combinations. Signed-off-by: clux <[email protected]> * avoid rustls local due to the issues Signed-off-by: clux <[email protected]> * split e2e tests into own file and clean up when to matrix Signed-off-by: clux <[email protected]> * running bump-k8s also bumps mk8sv Signed-off-by: clux <[email protected]> * avoid illegal anchors and add badge bumping Signed-off-by: clux <[email protected]> * better version checks for mk8sv and msrv on ci Signed-off-by: clux <[email protected]> * move some ci around for consistency in naming Signed-off-by: clux <[email protected]> * stray command Signed-off-by: clux <[email protected]> * fix syntax errors? Signed-off-by: clux <[email protected]> * fix test warning from kube-derive after apiext removal Signed-off-by: clux <[email protected]> * evars from tests Signed-off-by: clux <[email protected]> * better run description on integration jobs Signed-off-by: clux <[email protected]> * better output for flaky integration test Signed-off-by: clux <[email protected]> * fmt + give test more time? Signed-off-by: clux <[email protected]> * sanity after timeout. seems likely cause. Signed-off-by: clux <[email protected]> * no need for an agent in k3d cmd Signed-off-by: clux <[email protected]> * how slow is this actions cluster? Signed-off-by: clux <[email protected]> * re-trigger once more to check * apiserver, are you ok? Signed-off-by: clux <[email protected]> * another empty commit to retrigger Signed-off-by: clux <[email protected]> * remove duplicate changes from #924 (won't build until that is merged) Signed-off-by: clux <[email protected]>
From what I can tell, kube-runtime v0.63 does not work with k8s-openapi versions before v1.19 due to this line:
https://github.com/kube-rs/kube-rs/blob/16c4bf2389529ace6a2b784bfd71b91103be2198/kube-runtime/src/events.rs#L3
because the events API was not at v1 before v1.19. We get the following error:
Practically, 1.19 is probably a perfectly reasonable minimum supported version at this point. But this was a surprise to us since Linkerd's minimum supported version is currently 1.17, so we either need to bump our minimum version or stay on v0.61.
Ignoring Linkerd's issues... I think
kube
needs to be explicit about its minimum supported version and communicate (i.e. in release notes, and ultimately semver) when support for a version is dropped. I'd even propose thatkube
re-exportk8s-openapi
with features for each of its supported versions so that this compatibility matrix is made explicit in kube's features.The text was updated successfully, but these errors were encountered: