Repository navigation
build(deps): Upgrade to Kubernetes 0.37 and controller-runtime 0.25 - #1173
Conversation
The shared instrumentation library needs k8s.io/* v0.37 and controller-runtime v0.25 or later, and Galactic was on v0.36 and v0.24.1.
The root module and examples/edge-provider move k8s.io/{api,apimachinery,client-go,apiextensions-apiserver,cri-api} to v0.37.1 and controller-runtime to v0.25.2; go mod tidy pulls the libraries that move with them. No Go source changes: the only controller-runtime 0.25 API break Galactic touches is the new event recorder interface, which every manager already uses.
The CRDs are regenerated with controller-gen v0.23.0, the release built on k8s.io/* v0.37. Their schemas and the deepcopy code are unchanged; only the controller-gen version annotation moves.
Fixes #1146
client-go v0.37 against a 1.35 API server is outside the supported version skew. Install envtest from controller-runtime release-0.25 and use the 1.37 API server assets in both the unit and e2e jobs.
|
Second review pass on head 3747107 returned two merge verdicts. The re-reviewer confirmed all three first-pass findings fixed (the envtest pins at ci.yaml lines 86 and 179, the body opening, and the test-plan checkboxes) and found the fix diff clean: VERDICT: merge. The conventions reviewer also returned VERDICT: merge. Its one nit, an unwrapped commit body, matches the repository's and author's preference, so no change was made. Two decisions the conventions reviewer re-raised were already made by the maintainer. This PR lands before Renovate #1109. It merges now, with the lab run tracked as a follow-up on #1146, since merges deploy to staging only. CI on the head is green. Attempt 1 of run 40622128550 failed TestRolloutWithShippedRBAC once. Fourteen local runs against envtest 1.37 under -race and CPU contention did not reproduce it, and attempt 2 passed every job, including E2E Tests and Unit Tests. It is treated as a one-time flake. Auto-merge is enabled with a merge commit, the only method the main ruleset allows. The ruleset requires one approving review from a code owner and re-approval after the last push, so the PR waits for a human approval before it lands. |
ecv
left a comment
There was a problem hiding this comment.
Approve.
Verified at 3747107: all 38 CRD files change only the controller-gen.kubebuilder.io/version annotation (v0.21.0/v0.18.0 to v0.23.0), with no schema, default or storage-version change, so the next production Galactic tag carries no CRD behavior change. k8s.io/api, apimachinery, client-go, apiextensions-apiserver and cri-api are all v0.37.1 across the root and the cni module, and every CI check at the head is green including e2e and envtest on 1.37.
- The go.sum swaps zap v1.28.0 for v1.27.1 and objx v0.5.2 for v0.5.3. Neither module is a direct requirement in go.mod, so this is dependency resolution falling out of the bump rather than a deliberate downgrade, but it is worth knowing zap moved backwards.
- The e2e run is the only evidence for controller-runtime 0.25 behavior (cache, webhook, metrics server and leader-election defaults). The PR makes no source changes, so a default that shifted silently would show up only on a real cluster.
Follow-ups:
- The lab run is still unticked and tracked on #1146. Do it before the next production Galactic tag, since client-go 0.37 is the first release to talk to production clusters (skew in the newer-client direction is supported).
Summary
The shared instrumentation library (#1144) needs newer Kubernetes and controller-runtime releases.
This moves Galactic onto them with no source changes. The generated CRDs differ only in their version annotation, and CI now runs envtest against Kubernetes 1.37.
Fixes #1146
Test plan