Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 0 additions & 84 deletions CHANGELOG/v1.12.0-beta.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,90 +87,6 @@ _Nothing has changed._
<summary>More details about the release</summary>

:warning: **BETA RELEASE NOTES** :warning:
## 👌 Kubernetes version support

- Management Cluster: v1.30.x -> v1.33.x
- Workload Cluster: v1.28.x -> v1.33.x

[More information about version support can be found here](https://cluster-api.sigs.k8s.io/reference/versions.html)

## Highlights

- Bumped to Go 1.24, controller-runtime v0.21, k8s.io/* v0.33, controller-gen v0.18 (also moved to `sigs.k8s.io/randfill`) (#12191)
- v1beta2 API version has been introduced and considering the awesome amount of improvements it marks an important
step in the journey towards graduating our API to v1.
- Accordingly there is now a new v1beta2 version of our contract for providers.
- Improve status:
- The transition to the new K8s aligned conditions using `metav1.Conditions` types and the new condition semantic
has been completed.
- Replica counters are now consistent with new conditions and across all resources; new replica counters have been added at cluster level.
- Semantic of contract fields in status have been improved and are now consistent across all resources.
- The confusing `FailureReason` and `FailureMessage` fields have been dropped.
- Support CC across namespaces: API changes planned for this feature have been implemented.
- Improve object references:
- Unnecessary fields have been dropped from object reference.
- Object references are now GitOps friendly (API version is not overwritten anymore by controllers).
- KubeadmConfig and KubeadmControlPlane APIs have been aligned with kubeadm v1beta4 API.
- Additionally, fields inferred from top level objects have been removed, thus getting rid of a common source of confusion/issues.
- Compliance with K8s API guidelines:
- Thanks to the adoption of the [KAL linter](https://github.com/kubernetes-sigs/kube-api-linter) compliance with K8s API guidelines has been greatly improved.
- All Duration fields are now represented as `*int32` fields with units being part of the field name.
- All `bool` fields have been changed to `*bool` to preserve user intent.
- Extensive work has been done to ensure `required` and `optional` is explicitly set in the API, and that
both serialization and validation works accordingly:
- Stop rendering empty structs (review of all occurrences of `omitempty` and introduction of `omitzero`)
- Do not allow `""` when it is not semantically different from value not set (either you have to provide a non-empty string value or not set the field at all).
- Do not allow `0` when it is not semantically different from value not set (either you have to provide a non-0 int value or not set the field at all).
- Do not allow `{}` when it is not semantically different from value not set (either you have to set at least one property in the object or not set the field at all).
- Do not allow `[]` when it is not semantically different from value not set (either you have to set at least one item in the list or not set the field at all).
- Ensure validation for all enum types.
- Missing list markers have been added for SSA.
- Drop unnecessary pointers:
- After fixing `required` and `optional` according to K8s API guidelines, extensive work has been done to
drop unnecessary pointers thus improving the usability of the API's Go structs.
- Avoid embedding structs: Coupling between API types has been reduced by reducing the usage of embedded structs.
- Extensive work has been done to improve consistency across all resources, e.g.:
- Fields for Machine deletion are under a new `deletion` struct in all resources.
- Settings about `rollout` have been logically grouped in all resources.
- Settings about health checks and `remediation` have been logically grouped in all resources.
- Missing validations have been added where required.
- Tech debt has been reduced by dropping deprecated fields.
* ClusterClass: Fix continuous reconciles because of apiVersion differences in Cluster topology controller (#12341)
* KCP/CABPK: Add CertificateValidityPeriod and CACertificateValidityPeriod to KubeadmConfig (#12335)
* KCP: Fix timeout handling in GetAPIServerCertificateExpiry and DialContext (#12554)
* Machine: fallback to InfraMachine providerID during deletion if Machine providerID is not set (#11985)
* Runtime SDK:
* Optimize size of Runtime Hook requests (#12462)
* Add mTLS support to Runtime Extension server and client (#12517)
* Improved e2e test coverage, e.g.:
* additional checks that resourceVersion stays stable after tests and that conditions are healthy (#12546 #12111)
* test coverage for scaling from/to 0 with CAPD & cluster-autoscaler (#12572)
* New providers in clusterctl: Scaleway (#12357), cdk8s (#12332)

See [Cluster API v1.10 compared to v1.11](https://main.cluster-api.sigs.k8s.io/developer/providers/migrations/v1.10-to-v1.11) for more details

## Notes for workload cluster upgrade to Kubernetes v1.34 with KCP

* Context: Kubernetes/kubeadm <=> etcd compatibility:
* kubeadm v1.33 only supports etcd v3.5 for Kubernetes v1.33
* kubeadm v1.34 only supports etcd v3.6 for Kubernetes v1.34
* The upgrade to etcd v3.6 requires etcd >= v3.5.20 (https://etcd.io/blog/2025/upgrade_from_3.5_to_3.6_issue/)
* Accordingly, when upgrading from Kubernetes v1.33 to v1.34:
* ensure etcd >= v3.5.20 is used with Kubernetes v1.33 before the upgrade
* upgrade to Kubernetes v1.34 and etcd v3.6 at the same time

## Deprecation and Removals Warning

- Cluster: Remove deprecated index ByClusterClassName, ClusterByClusterClassClassName and ClusterClassNameField (#12269)
- ClusterClass: Remove deprecated ClusterVariable.definitionFrom field (#12202)
- ClusterClass: Remove deprecated Cluster.spec.topology.rolloutAfter field (#12268)
- ClusterClass: Remove deprecated ClusterCacheTracker and corresponding types (#12270)
- clusterctl: Remove deprecated `clusterctl alpha topology plan` command (#12283)
- ClusterResourceSet: Remove deprecated ClusterResourceSetBinding.DeleteBinding method (#12267)
- MachineDeployment: Removed deprecated revisionHistory (#12274)
- MachineDeployment: Remove deprecated spec.progressDeadlineSeconds (#12232)
- KCP/CABPK: Remove deprecated KubeadmConfig useExperimentalRetryJoin (#12234)
- API: Deprecate v1alpha1 & v1beta1 API packages (#12254)

## Changes since v1.11.0
## :chart_with_upwards_trend: Overview
Expand Down