Cluster API v1.9 compared to v1.10

This document provides an overview over relevant changes between Cluster API v1.9 and v1.10 for maintainers of providers and consumers of our Go API.

Go version

  • The Go version used by Cluster API is Go 1.23.x

Changes by Kind

Deprecation

Removals

API Changes

Other

  • The following functions for E2EConfig in sigs.k8s.io/cluster-api/test/framework/clusterctl got renamed (#11743):
    • E2EConfig.GetVariable is now E2EConfig.MustGetVariable
    • E2EConfig.GetInt64PtrVariable is now E2EConfig.MustGetInt64PtrVariable
    • E2EConfig.GetInt32PtrVariable is now E2EConfig.MustGetInt32PtrVariable
  • Using the package sigs.k8s.io/cluster-api/controllers/clustercache in tests using envtest may require a change to properly shutdown a running clustercache. Otherwise teardown of envtest might time out and lead to failed tests. (xref #11757)

Suggested changes for providers

  • If you are developing a control plane provider with support for machines, please consider adding spec.machineTemplate.readinessGates (see contract)
  • core Cluster API added the new CRD migrator component. For more details, see: https://github.com/kubernetes-sigs/cluster-api/issues/11894
    • CRD migration in clusterctl has been deprecated and will be removed in CAPI v1.13, so it’s recommended to adopt the CRD migrator in providers instead.
    • Please see the examples in https://github.com/kubernetes-sigs/cluster-api/pull/11889, the following high-level steps are required:
      • Add the --skip-crd-migration-phases command-line flag that allows to skip CRD migration phases
      • Setup the CRDMigrator component with the manager.
      • Configure all CRDs owned by your provider, only set UseCache for the objects for which your provider already has an informer.
      • Add the following RBAC:
      • resources: customresourcedefinitions, verbs: get;list;watch
      • resources: customresourcedefinitions;customresourcedefinitions/status, resourceNames: <crd-name>, verbs: update;patch
        • Note: The CRD migrator will add the crd-migration.cluster.x-k8s.io/observed-generation annotation on the CRD object, please ensure that if these CRD objects are deployed with a tool like kapp / Argo / Flux the annotation is not continuously removed.
      • For all CRs that should be migrated by the CRDMigrator: verbs: get;list;watch;patch;update
      • For all CRs with UseStatusForStorageVersionMigration: true verbs: update;patch on their /status resource (e.g. ipaddressclaims/status)