Cluster API v1.7 compared to v1.8
This document provides an overview over relevant changes between Cluster API v1.7 and v1.8 for maintainers of providers and consumers of our Go API.
Go version
- The Go version used by Cluster API is Go 1.22.x
Changes by Kind
Deprecation
Removals
API Changes
Other
- The support for INIT env variables was dropped in the clusterctl upgrade tests. If you were using
INIT_WITH_BINARY
,INIT_WITH_PROVIDERS_CONTRACT
orINIT_WITH_KUBERNETES_VERSION
consider using the corresponding fields inClusterctlUpgradeSpecInput
. If you prefer to use environment variables, read them e.g. viaos.Getenv
and then set the spec fields accordingly.
Suggested changes for providers
- From Cluster API v1.7 the manager pods are created with
terminationMessagePolicy
set toFallbackToLogsOnError
for the manager container. This offers the chance that the pod’s termination message will contain something useful if the manager exits unexpectedly, which in turn makes debugging easier. We also recommend this setting to provider managers. For an example, see the corresponding change in CAPV or CAPO. - It’s highly recommended to move to a new setup-envtest version that uses envtest binaries from controller-tools releases instead of the deprecated GCS bucket. More details can be found in #10569 and kubernetes-sigs/controller-runtime#2811.
remote.NewClusterCacheTracker
now has options to configure QPS & Burst. It’s highly recommended to implement corresponding flags the same way as core Cluster API (see PR: https://github.com/kubernetes-sigs/cluster-api/pull/10880).- There were changes made to flags in core CAPI (https://github.com/kubernetes-sigs/cluster-api/pull/10883, https://github.com/kubernetes-sigs/cluster-api/pull/10880). It’s recommended to adopt these changes in providers as well.
- To support Kubernetes 1.31, providers should stop setting caBundle to invalid values in there CRDs (see core CAPI PR: https://github.com/kubernetes-sigs/cluster-api/pull/10972)
Setting caBundle to
Cg==
is a pattern that is widely spread across the ecosystem but it will stop working with Kubernetes 1.31. Please see the following Slack thread for details: https://kubernetes.slack.com/archives/C0EG7JC6T/p1722441161968339