v1.14.0-beta.0
Pre-release
Pre-release
🚨 This is a BETA RELEASE. Use it only for testing purposes. If you find any bugs, file an issue.
More details about the release
Changes since v1.13.0
📈 Overview
- 201 new commits merged
- 4 breaking changes
⚠️ - 24 feature additions ✨
- 20 bugs fixed 🐛
⚠️ Breaking Changes
- CAPD: Mark docker resources as deprecated (#13557)
- Dependency: Bump to controller-runtime v0.24 & controller-tools v0.21 (#13651)
- Machine/MachinePool/MachineSet/MachineDeployment/Cluster: Fix version validation in webhooks (#13874)
- Misc: Fix minor goroutine leak in util/cache after controller shutdown (#13487)
✨ New Features
- API: Introduce separate API module (#13762)
- API: Move OpenAPI schema out of the api package to avoid direct dependency on kube-openapi in the api module (#13825)
- API: Surface aggregated machine versions in status (#13341)
- Bootstrap: Write kubeadm control plane version file for workers to use to fetch the matching kubeadm binary (#13433)
- CAPD: Introduce per-reconciler concurrency flags in CAPDev (#13740)
- CAPD: Migrate ClusterClass changes e2e test from the docker to the in-memory backend (#13764)
- CAPD: Migrate templates to use Dev* instead of Docker* (#13741)
- CI: Remove YEAR from copyright header boilerplate (#13889)
- Cluster: Use regular patch instead of SSA to patch Cluster in topology controller (#13760)
- ClusterCache: Expose and use DefaultTransform on CacheOptions (#13780)
- ClusterCache: Use DefaultTransform in core CAPI, CABPK and KCP (#13820)
- ClusterClass/KCP/MachineSet: Implement stale controller mitigation in KCP / MS / Cluster topology controller (#13737)
- clusterctl: Add experimental
clusterctl convertcommand (#12843) - Dependency: Bump Go 1.26 (#13623)
- e2e: Migrate ClusterClass rollout e2e test from the docker to the in-memory backend (#13806)
- e2e: Migrate ClusterClass upgrade with different NS e2e test from the docker to the in-memory backend (#13885)
- e2e: Migrate e2e tests from using Docker* resources to Dev* resources (#13647)
- e2e: Migrate test extension to use Dev* instead of Docker* (#13716)
- e2e: Update in-place updating a workload cluster e2e test to use in-memory backend (#13895)
- e2e: Use in-memory template for clusterctl upgrade tests (#13866)
- KCP: Improve forward etcd leadership (#13848)
- MachineDeployment/util: Stale controller mitigation in reconcile wrapper & MD controller, enable store & fifo informer metrics (#13720)
- Misc: Implement managedFields interning (#13807)
- Release: Prepare main branch for v1.14 development (#13617)
🐛 Bug Fixes
- CAPD: Fix CAPD flakes (#13757)
- CAPD: Fix E2E host port binding lookup (#13627)
- clusterctl: Detect cert-manager image changes during upgrade (#13850)
- clusterctl: Fix v1beta1 describe output stream (#13893)
- clusterctl: Raise management cluster client QPS and Burst (#13875)
- clusterctl: Skip update check for clusterctl completion (#13653)
- clusterctl: Trim whitespace in --show-conditions filters (#13897)
- Dependency: Fix CVE-2026-39883 (#13571)
- Devtools: Fix Tilt kube-state-metrics deployment (#13677)
- e2e: Fix ClusterClass rollout test with k8s latest (#13881)
- e2e: Fix PrettyPrint in WaitForControlPlaneToBeReady (#13843)
- e2e: Fix self-hosted test (#13778)
- KCP: Fix failing TestKubeadmControlPlaneReconciler_reconcileEtcdMembers (#13717)
- KCP: Fix KCP in-place update with InfraMachine webhooks with immutability validation (#13640)
- KCP: KCP deletion should tolerate missing InfraTemplates (#13558)
- Machine/Bootstrap: Perform draining and volume detachment once until completion (#11590)
- MachineDeployment: Fix nil pointer panic when paused with no matching MachineSet (#13827)
- MachineSet: Delete unhealthy Machines of old MS during in-place updates (#13886)
- Release: Revert unset GOCACHE env var (#13732)
- Testing: Fix TestHealthCheckTargets flake (#13860)
🌱 Others
- API/Runtime SDK/IPAM/MachinePool/MachineSet/MachineDeployment: Fix typos in generated CRD descriptions (#13641)
- API: Adjust IsMachineDeploymentUpgrading to detect in-place upgrades (#13876)
- API: Follow-ups for Surface aggregated machine versions in status (#13871)
- CABPK: Use ClusterClass with RuntimeSDK in kubeadm join old Node e2e test & fix e2e test failures (#13759)
- CAPD: Add support for controller restart to in-memory backend (#13595)
- CAPD: Only add finalizer after InfraMachine has owner in CAPDev (#13714)
- CAPD: Partially revert fix self-hosted test (#13795)
- CAPD: Refactor CAPDev reconciler (#13702)
- CI: Add cron buckets to prow generator (#13656)
- CI: Add KCP infra adoption test (#13731)
- CI: Cleanup ./scripts folder (#13896)
- CI: Cleanup golangci-lint excludes (#13891)
- CI: Drop jobs on release-1.11 (#13593)
- CI: Fix link in cloudbuild.yaml's (#13793)
- CI: Fix linter findings in hack/tools (#13814)
- CI: Harden git workflows (#13442)
- CI: Make it possible to exclude CVEs with govulncheck (#13669)
- CI: Migrate from import boss to depguard (#13873)
- CI: Read permissions for pr-verify action (#13687)
- CI: Replace deprecated gaurav-nelson/github-action-markdown-link-check with tcort fork (#13572)
- CI: Revert "Migrate away from custom GitHub action approval workflow" (#13802)
- CI: Stop running make lint-api multiple times in the GitHub action (#13824)
- ClusterCache: Cleanup ClusterCache metrics for deleted Clusters (#13660)
- clusterctl/Misc: Avoid building if LDFLAGS returns error checking for SemVer (#13418)
- clusterctl: Add cloudscale-ch-cloudscale provider (#13544)
- clusterctl: Bump cert-manager to v1.20.3 (#13847)
- clusterctl: Bump cert-manager to v1.21.0 (#13900)
- clusterctl: Bump Cert-manager v1.20.2 (#13583)
- clusterctl: Improve clusterctl describe (#13753)
- clusterctl: Print help on argument validation errors (#13808)
- Control-plane: Add additional test cases for EnsureKubeadmPermissions (#13758)
- Control-plane: Remove unused functions in internal/contract (#13826)
- Dependency: 1.26.3 (#13661)
- Dependency: Bump envtest 1.36 (#13657)
- Dependency: Bump go to v1.26.4 (#13788)
- Dependency: Bump Go to v1.26.5 (#13902)
- Dependency: Bump golang/x/net to 0.55.0 (#13744)
- Devtools: Add Headlamp to Tilt dev environment (#13538)
- Devtools: Add log dashboard (#13594)
- Devtools: Bump headlamp CAPI plugin to 0.2.0-beta.0 (#13783)
- Devtools: Enable prealloc linter & fix findings (#13711)
- Devtools: Fix gosec lint findings (#13709)
- Devtools: Move scripts under hack/scripts (#13877)
- Devtools: Upgrade tempo & fix configuration (#13727)
- e2e: Add options to runtimesdk e2e test (#13750)
- e2e: Bump to kind main to fix e2e tests (#13767)
- e2e: Bump to kind v0.32.0 (#13781)
- e2e: Cleanup of ControlPlaneKubeletLocalMode handling in KCP adoption test (#13695)
- e2e: Cleanup unused e2e test templates (#13713)
- e2e: Enable opt-out of OwnerReferencesPermissionEnforcement admission controller & opt-out in clusterctl upgrade tests (#13819)
- e2e: Fix E2E chained upgrade (#13618)
- e2e: Give resource versions more time to become stable in e2e tests (#13882)
- e2e: Improve handling of missing kind versions (#13642)
- e2e: Start testing against Kubernetes v1.37 (#13614)
- e2e: Start testing with K8s 1.36.0 (#13611)
- e2e: Start testing with Kubernetes v1.36.0-rc.0 (#13564)
- e2e: Start testing with Kubernetes v1.36.0-rc.1 (#13585)
- e2e: Use only 1 worker machine per MD/MP in RuntimeSDK e2e test (#13872)
- e2e: Use Runtime SDK for kcp-infra-adoption e2e test (#13809)
- KCP: Add kubeadm cluster role (#13664)
- KCP: Allow KCP remediation on chained upgrade intermediate steps (#13869)
- KCP: KCP cleanup etcd members not started after a machine is remediated (#13685)
- KCP: Remove the check on the errors returned by etcd's status response (#13846)
- KCP: Update RemoveEtcdMember to accept a *etcd.Member instead of a member name (#13784)
- Machine: Drop KCP specific logic in Machine reconcileDelete (#13829)
- Machine: Improve machine controller in-place update unit tests (#13682)
- MachineDeployment: Extend stale controller mitigation in MD controller to MS deletion (#13730)
- MachineSet: Cleanup orphaned BoostrapConfigs / InfraMachines in MS controller (#13812)
- Misc: Add finalizer only after we got owner/cluster (#13747)
- Misc: Correct typos in comments and error messages (#13756)
- Misc: Delete unused nolint directives (#13710)
- Misc: Fix static check lint errors (#13708)
- Misc: Improve conversion webhook aliasing (#13828)
- Misc: Replace reflect.Ptr with reflect.Pointer (#13707)
- Misc: Stop setting TypeMeta in typed objects (part II) (#13890)
- Misc: Update Kubernetes bump issue template (#13693)
- Release: Add workaround for generate release notes (#13655)
- Release: Optimize go build in
make release-binary(#13499) - Release: Report consistency errors in release note draft (#13861)
- Runtime SDK: Do not follow redirects when calling runtime extensions (#13763)
- Runtime SDK: Surface Runtime Extension errors in conditions (#13813)
- Security: Updated gitignore (#13799)
- Testing/Documentation/e2e: Improve support for OwnerReferencesPermissionEnforcement admission controller (#13805)
- Testing: Add a test case to confirm that kcp can safely remove a member when it doesn't have a corresponding machine but it has no alarm (#13772)
- Testing: Improve KCP remediation ack signal diagnostics and reset handling (#13736)
- Testing: Make the clusterctl upgrade management cluster control plane count configurable (#13766)
- Testing: Update version matrix for GitHub workflows for release 1.13 (#13578)
- util: Refactor consistency store to allow defer without previous store registration (#13751)
- util: Remove deprecated code (#13749)
- util: Switch CRD migrator to use merge patch (#13792)
📖 Additionally, there have been 25 contributions to our documentation and book. (#13419, #13559, #13566, #13568, #13574, #13589, #13592, #13603, #13615, #13620, #13624, #13637, #13645, #13683, #13684, #13696, #13699, #13704, #13718, #13777, #13834, #13859, #13862, #13887, #13903)
Dependencies
Added
- github.com/clipperhouse/displaywidth: v0.10.0
- github.com/clipperhouse/stringish: v0.1.1
- github.com/clipperhouse/uax29/v2: v2.6.0
- k8s.io/streaming: v0.36.2
Changed
- github.com/alecthomas/units: b94a6e3 → 0f3dac3
- github.com/coredns/corefile-migration: v1.0.31 → v1.0.33
- github.com/coreos/go-oidc: v2.3.0+incompatible → v2.5.0+incompatible
- github.com/coreos/go-systemd/v22: v22.5.0 → v22.7.0
- github.com/godbus/dbus/v5: v5.0.4 → v5.1.0
- github.com/golang-jwt/jwt/v5: v5.2.2 → v5.3.0
- github.com/google/pprof: 294ebfa → 545e8a4
- github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus: v1.0.1 → v1.1.0
- github.com/grpc-ecosystem/go-grpc-middleware/v2: v2.3.0 → v2.3.3
- github.com/mattn/go-runewidth: v0.0.16 → v0.0.19
- github.com/moby/spdystream: v0.5.0 → v0.5.1
- github.com/olekukonko/errors: v1.1.0 → v1.2.0
- github.com/olekukonko/ll: v0.1.1 → v0.1.6
- github.com/olekukonko/tablewriter: v1.0.9 → v1.1.4
- github.com/onsi/ginkgo/v2: v2.28.1 → v2.32.0
- github.com/onsi/gomega: v1.39.1 → v1.42.1
- github.com/pmezard/go-difflib: v1.0.0 → 5d4384e
- github.com/prometheus/common: v0.66.1 → v0.67.5
- github.com/prometheus/procfs: v0.16.1 → v0.19.2
- go.etcd.io/etcd/api/v3: v3.6.10 → v3.6.13
- go.etcd.io/etcd/client/pkg/v3: v3.6.10 → v3.6.13
- go.etcd.io/etcd/client/v3: v3.6.10 → v3.6.13
- go.etcd.io/etcd/pkg/v3: v3.6.5 → v3.6.8
- go.etcd.io/etcd/server/v3: v3.6.5 → v3.6.8
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.60.0 → v0.65.0
- go.uber.org/zap: v1.27.1 → v1.28.0
- golang.org/x/crypto: v0.50.0 → v0.53.0
- golang.org/x/exp: 8a7402a → 944ab1f
- golang.org/x/mod: v0.34.0 → v0.37.0
- golang.org/x/net: v0.53.0 → v0.56.0
- golang.org/x/sync: v0.20.0 → v0.22.0
- golang.org/x/sys: v0.43.0 → v0.46.0
- golang.org/x/telemetry: 579e4da → 59b4966
- golang.org/x/term: v0.42.0 → v0.44.0
- golang.org/x/text: v0.36.0 → v0.40.0
- golang.org/x/time: v0.9.0 → v0.14.0
- golang.org/x/tools/go/expect: v0.1.0-deprecated → v0.1.1-deprecated
- golang.org/x/tools: v0.43.0 → v0.47.0
- google.golang.org/protobuf: v1.36.11 → f2248ac
- k8s.io/api: v0.35.3 → v0.36.2
- k8s.io/apiextensions-apiserver: v0.35.3 → v0.36.2
- k8s.io/apimachinery: v0.35.3 → v0.36.2
- k8s.io/apiserver: v0.35.3 → v0.36.2
- k8s.io/client-go: v0.35.3 → v0.36.2
- k8s.io/cluster-bootstrap: v0.35.3 → v0.36.2
- k8s.io/code-generator: v0.35.3 → v0.36.2
- k8s.io/component-base: v0.35.3 → v0.36.2
- k8s.io/klog/v2: v2.130.1 → v2.140.0
- k8s.io/kms: v0.35.3 → v0.36.2
- k8s.io/kube-openapi: 589584f → 43fb72c
- k8s.io/utils: bc988d5 → b8788ab
- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.31.2 → v0.34.0
- sigs.k8s.io/controller-runtime: v0.23.3 → v0.24.1
- sigs.k8s.io/structured-merge-diff/v6: v6.3.2 → v6.4.2
Removed
_Thanks to all our contributors!_ 😊