github kubernetes-sigs/cluster-api v1.15.0-beta.0

pre-release3 hours ago

🚨 This is a BETA RELEASE. Use it only for testing purposes. If you find any bugs, file an issue.

More details about the release

⚠️ BETA RELEASE NOTES ⚠️

Changes since v1.14.0

📈 Overview

  • 251 new commits merged
  • 2 breaking changes ⚠️
  • 22 feature additions ✨
  • 41 bugs fixed 🐛

📝 Proposals

  • ClusterClass: Add proposal for worker version pinning in Cluster API managed topologies (#13892)

⚠️ Breaking Changes

  • CAPD: Remove Docker resources (#14000)
  • Dependency: Bump to controller-runtime v0.25 / controller-tools v0.22 (#14188)

✨ New Features

  • CABPK: Add cloud-init write_files defer support (#14182)
  • CAPD: Add CAPD_DOCKER_NETWORK environment variable (#14041)
  • CAPD: Implement v1beta2 contract for devmachinepool (#14099)
  • CAPD: Refactor CAPD folder structure (#14069)
  • CI: OmitToolVersion (#14376)
  • ClusterClass: ClusterClass without template objects (#14092)
  • ClusterClass: Validate apiVersion for reliant CRDs (#13954)
  • clusterctl: Add cluster-api-provider-exoscale to the built-in infrastructure provider list (#14306)
  • clusterctl: Add cluster-api-provider-kairos to the built-in bootstrap and control plane provider list (#14045)
  • clusterctl: Add cluster-api-provider-kairos-fleet to the built-in infrastructure provider list (#14046)
  • KCP: Implement AffectsAvailability for KCP in-place updates (#14200)
  • KCP: Implement allowedOperations for KCP CanUpdateMachine hook (#14367)
  • KCP: Implement RetryAfterSeconds for CanUpdateMachine (#14350)
  • Machine/KCP/MachinePool/MachineSet: Introduce DynamicCache, BootstrapConfig/InfraMachine API types & dynamic KCP cache config (#13803)
  • Machine: Add updateStatus to UpdateMachine hook (#14385)
  • Machine: Promote MachineTaintPropagation feature gate to beta and enable it per default (#14395)
  • MachineDeployment: Clarify MachineDeployment spec.paused docs and surface paused rollouts (#14347)
  • MachineDeployment: Implement AffectsAvailability for MD in-place updates (#14195)
  • MachineDeployment: Implement allowedOperations for MD CanUpdateMachineSet hook (#14378)
  • MachineHealthCheck: Extend MHC to introduce CEL-based health evaluation (#14297)
  • MachinePool: Add MachinesUpToDate condition to MachinePool (#13929)
  • Security: Add --tls-curve-preferences flag to manager options (#14157)

🐛 Bug Fixes

  • API: Don't use cache with CRD migrator (#14116)
  • Bootstrap: Allow worker join with a cluster CA Secret that has only tls.crt (#14389)
  • Bootstrap: Execute /etc/kubeadm.sh via /bin/bash for /etc noexec compatibility (#13970)
  • Bootstrap: Fix ParseSecretName round-trip for purposes containing hyphens (#14040)
  • CABPK: Make CABPK bootstrap token generate reentrant (#14101)
  • CI: Bump machine to highcpu-32 (#14214)
  • CI: Bump timeout to 1hr (#14191)
  • CI: Bump timeout to 2hr (#14209)
  • Cluster: Also set cluster-name label even if BeforeClusterCreate hook is blocking (#14323)
  • Cluster: Also set cluster-name label on Clusters without ClusterClass (#14308)
  • Cluster: Fix ControlPlaneInitialized reason when the control plane does not exist (#14431)
  • ClusterCache: Apply Options.ClusterFilter in SetupWithManager (#14119)
  • ClusterClass: Fix CEL validation of top-level array variables in ClusterClass (#14396)
  • ClusterClass: Fix Machine taint propagation in the Cluster topology controller for the v1beta1 contract (#13984)
  • ClusterClass: Lifecycle hooks fix (#14171)
  • clusterctl/Security: Point the huawei provider to its relocated repository (#14239)
  • clusterctl: Convert CAPI resources in generic Lists (#14090)
  • ClusterResourceSet: Ignore NotFound when deleting ClusterResourceSetBinding (#14177)
  • ClusterResourceSet: Patch increased memory consumption (#14031)
  • Conditions: Fix deprecate condition utils (#14130)
  • Devtools: Fix Grafana deployment (#13997)
  • Devtools: Fix parallel build of binaries in Tiltfile (#13989)
  • e2e: Fix the source links in e2e config to be allowed and kept as they are (#14372)
  • KCP: Avoid deleting learners after Node registration (#14199)
  • KCP: Deduplicate KCP preflightchecks (#14170)
  • KCP: Fix KCP rollout issue after upgrade from CAPI v1.11 (#14167)
  • KCP: Fix race in KCP proxy DialContext (#14266)
  • KCP: KCP should not remediate machines unhealthy since before MinHealthyPeriod expires (#14331)
  • KCP: Support KCP in-place updates when coredns and kube-proxy phases are skipped (#14362)
  • KCP: Try to match etcd member to machine being deleted by KCP (#14258)
  • Machine/MachineSet: Gracefully handle not-found when resolving owner references (#13510)
  • Machine: Requeue Machines waiting for their Node before the control plane is initialized (#14303)
  • Machine: Stop checking kubelet version against an empty version (#14375)
  • MachineHealthCheck: Fix MHC expression (#14450)
  • MachinePool: Conditionally delegate taint removal (#14053)
  • MachinePool: Fix inverted nil guards when a MachinePool records a failure (#14234)
  • MachineSet: Fix retry to remove finalizer in MS topology reconciler (#13987)
  • Misc: Implement support for multiNamespaceInformer in controller util consistency store (#14283)
  • Release: Ignore cherry-picked PR suffixes in release notes (#14330)
  • Testing: Resolve data race in inmemory proxy Conn deadline setters (#14248)
  • util: Return an error from RegenerateSecret if the cluster is missing from the kubeconfig (#14444)

🌱 Others

  • API: Optimize memory usage of conversion by only setting required fields in annotation (#14075)
  • CABPK: Stop handling Kubernetes <= v1.30 in CABPK (#14083)
  • CI: Bump gcb-docker-gcloud to a prod image (#14037)
  • CI: Drop Docker golangci-lint excludes (#14077)
  • CI: Fallback to alternate locations for Trivy DB (#14409)
  • CI: Improve dependabot workflow (#14273)
  • CI: Improve Kubernetes version resolution (#14270)
  • CI: Remove the deleted Hivelocity infrastructure provider (#14051)
  • CI: Stop trying to bump sigs.k8s.io/kubebuilder/docs/book/utils with dependabot (#14111)
  • CI: Update matrix to drop release-1.12 (#14094)
  • CI: Update matrix to include release 1.14 (#14018)
  • ClusterCache: Reject file-based credentials in kubeconfigs (#14432)
  • ClusterClass/MachineSet/MachineDeployment: Merge topology MachineDeployment and MachineSet controllers into the regular controllers (#14394)
  • ClusterClass: Extract Cluster topology version validation into entry points (#14241)
  • ClusterClass: Increase MD/MS topology reconciler concurrency to 25 (#14002)
  • clusterctl: Bump cert-manager to v1.21.1 (#14010)
  • clusterctl: Bump cert-manager to v1.21.2 (#14233)
  • clusterctl: Bump cert-manager to v1.21.3 (#14428)
  • clusterctl: Reset global viper state in viperReader Set test (#14284)
  • ClusterResourceSet: Remove CRB clusterName migration logic (#14082)
  • Conditions: Make condition message lists consistent (#14363)
  • Dependency/clusterctl: Upgrade google/go-github to v92 (#14125)
  • Dependency: Bump corefile-migration to v1.0.35 (#14115)
  • Dependency: Bump corefile-migration to v1.0.36 (#14415)
  • Dependency: Bump Go Version to 1.26.6 (#14096)
  • Dependency: Bump google.golang.org/grpc + golang.org/x/crypto to fix CVEs (#14204)
  • Dependency: Bump to CR main & k8s.io/* v0.37.0 (#14138)
  • Dependency: Update Otel Version to v1.45.0 (#14313)
  • Devtools: Add verify for downloaded binaries (#14272)
  • Devtools: Bump Parca to v0.29.1 (#14265)
  • Devtools: Use smaller image for tilt (#14249)
  • e2e: Bump kind to v0.33.0 (#14141)
  • e2e: Bump Kubernetes 1.37.0-rc.0 (#14058)
  • e2e: Bump to Kubernetes v1.37.0 (#14139)
  • e2e: Bump to Kubernetes v1.37.0-rc.1 (#14105)
  • e2e: Check for duplicate informers in e2e tests (#14137)
  • e2e: Drop syncer from in-memory server (#13986)
  • e2e: Extend e2e tests to detect double rollouts (#14268)
  • e2e: Fix debug endpoint for in-memory server (#13990)
  • e2e: Increase clusterctl and e2e test dry-run cluster-template timeouts (#14013)
  • e2e: Increase e2e test concurrency (#13898)
  • e2e: Install the minimum required kind version for e2e test (#14176)
  • e2e: Make e2e fail on controller pod restarts (#14289)
  • e2e: Pin kind binary version and download exact version (#14337)
  • e2e: Prepare main branch for v1.15 (#14005)
  • e2e: Start testing against Kubernetes v1.38 (#14146)
  • e2e: Store pod resources of management cluster into artifacts (#14293)
  • e2e: Surface ContainerProvisioned condition when container creation fails (#14342)
  • KCP/MachineDeployment: Handle extension errors the same way in KCP, MD & Machine controllers (#14402)
  • KCP/MachineSet/MachineDeployment/MachineHealthCheck: Standardize usage of reconcileStartTime (#14403)
  • KCP/MachineSet: Avoid unnecessary memory allocation in ssa.Patch after cache hit (#14085)
  • KCP: Cluster-admins CRB in KCP (#14081)
  • KCP: Fix race conditions in KCP unit tests (#14221)
  • KCP: Further optimize KCP cache config (#14084)
  • KCP: Improve KCP remediation annotation handling (#14215)
  • KCP: Reset MaxRetry when the unhealthy machine is outdated (#14369)
  • Logging: Add Log rate limiting (#14422)
  • Logging: Drop namespace from log messages (#14413)
  • Logging: Improve diff logs (#14445)
  • Logging: More log improvements (#14420)
  • Logging: More log improvements (#14425)
  • Logging: More log improvements (#14438)
  • Machine: Get correct RV in Machine controller in-place update live get call (#14134)
  • Machine: Improve logs machine lifecycle (#14405)
  • Machine: Refactor UpdateMachine hook (#14382)
  • Machine: Remove deprecated MachineWaitForVolumeDetachConsiderVolumeAttachments fg (#14078)
  • MachineDeployment: Fix max-surge check-in rollout-planner (#13983)
  • MachineDeployment: Handle rollout edge cases (#14312)
  • MachineDeployment: Improve rollout planner golden files (#14201)
  • MachineDeployment: Improve rollout sequence test (#14226)
  • MachineDeployment: Log reconciled object name in Rollout planner sequence (#14257)
  • MachineDeployment: Remove duplicated code between MachineSet controller and rollout planner (#14260)
  • MachinePool: Add support for "initialization completed" to machine pools (#14030)
  • MachinePool: Fixup MP unit tests after revert (#14286)
  • Misc: Adding AI Disclosure to PR Template (#14334)
  • Misc: Promote PriorityQueue and ReconcilerRateLimiting feature gates to GA (#14079)
  • Misc: Standardize cache package imports (#14126)
  • Misc: Update Kubernetes bump issue template (#14155)
  • Release: Removing deprecated code (#14368)
  • Release: Update kpromo version to v4.7.1 (#14329)
  • Release: Update release issue template (#14017)
  • Release: Updating v1.15 release team (#14222)
  • Release: V1.15 release Team (#14091)
  • Runtime SDK: Improve discovery (#14259)
  • Security: Bump go to 1.26.10 (#14392)
  • Security: Bump go to 1.26.9 and deps for security (#14356)
  • Security: Fix typo in trivy DB mirror (#14447)
  • Testing: Add contract labels to kubeadm CRDs in envtest (#14181)
  • Testing: Bump envtest to v1.37.0 (#14145)
  • Testing: Consider restart policy in containerHasTerminated (#14042)
  • Testing: Fix flaky TestReconcileControlPlane by reading the Cluster with the API reader (#14295)
  • Testing: Fix kubeconfig tests mutating shared validSecret fixture (#14285)
  • Testing: Restore apiVersionGetter after unit tests (#14189)
  • Testing: Use installed CRD refs in patch helper test fixtures (#14190)
  • util: Add ClusterToControlPlaneMapFunc helper to util and remove ClusterToKubeadmControlPlane (#14274)
  • util: Avoid DeepCopy in contract.GetGKMetadata (#14076)
  • util: Remove deprecated types from remote/ packages (#13952)
  • util: Remove deprecated util/record package (#13996)
  • util: Use a random serial number for self-signed CA certificates (#14442)

📖 Additionally, there have been 57 contributions to our documentation and book. (#13964, #13965, #13975, #13994, #14006, #14022, #14028, #14038, #14047, #14048, #14049, #14050, #14057, #14068, #14070, #14072, #14080, #14095, #14102, #14104, #14106, #14113, #14127, #14129, #14140, #14144, #14147, #14161, #14162, #14179, #14202, #14213, #14223, #14227, #14230, #14231, #14232, #14244, #14246, #14281, #14282, #14287, #14292, #14294, #14298, #14302, #14304, #14305, #14332, #14333, #14335, #14343, #14371, #14397, #14406, #14407, #14410)

❓ Sort these by hand

  • clusterctl: Fix clusterctl listing of resources whose kind ends in List (#14348)

Dependencies

Added

  • cloud.google.com/go/auth: v0.18.2
  • github.com/go-openapi/swag/cmdutils: v0.29.1
  • github.com/go-openapi/swag/conv: v0.29.1
  • github.com/go-openapi/swag/fileutils: v0.29.1
  • github.com/go-openapi/swag/jsonutils/fixtures_test: v0.29.1
  • github.com/go-openapi/swag/jsonutils: v0.29.1
  • github.com/go-openapi/swag/loading: v0.29.1
  • github.com/go-openapi/swag/mangling: v0.29.1
  • github.com/go-openapi/swag/netutils: v0.29.1
  • github.com/go-openapi/swag/pools: v0.29.1
  • github.com/go-openapi/swag/stringutils: v0.29.1
  • github.com/go-openapi/swag/typeutils: v0.29.1
  • github.com/go-openapi/swag/yamlutils: v0.29.1
  • github.com/go-openapi/testify/enable/yaml/v2: v2.6.1
  • github.com/go-openapi/testify/v2: v2.6.1
  • github.com/google/go-github/v92: v92.0.0
  • github.com/google/s2a-go: v0.1.9
  • github.com/googleapis/enterprise-certificate-proxy: v0.3.11

Changed

  • cel.dev/expr: v0.25.1 → v0.25.2
  • github.com/Azure/go-ansiterm: 306776e → faa5f7b
  • github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp: v1.32.0 → v1.33.0
  • github.com/coredns/corefile-migration: v1.0.34 → v1.0.36
  • github.com/emicklei/go-restful/v3: v3.13.0 → v3.14.0
  • github.com/fsnotify/fsnotify: v1.9.0 → v1.10.1
  • github.com/fxamacker/cbor/v2: v2.9.0 → v2.9.3
  • github.com/go-openapi/jsonpointer: v0.21.0 → v1.0.0
  • github.com/go-openapi/jsonreference: v0.20.2 → v1.0.1
  • github.com/go-openapi/swag: v0.23.0 → v0.29.1
  • github.com/golang-jwt/jwt/v5: v5.3.0 → v5.3.1
  • github.com/google/cel-go: v0.29.0 → v0.30.0
  • github.com/google/gnostic-models: v0.7.0 → v0.7.1
  • github.com/googleapis/gax-go/v2: v2.0.5 → v2.17.0
  • github.com/grpc-ecosystem/grpc-gateway/v2: v2.28.0 → v2.29.0
  • github.com/klauspost/compress: v1.18.0 → v1.19.1
  • github.com/moby/term: v0.5.0 → v0.5.2
  • github.com/olekukonko/tablewriter: v1.1.4 → v1.1.5
  • github.com/onsi/ginkgo/v2: v2.32.0 → v2.33.1
  • github.com/onsi/gomega: v1.42.1 → v1.44.0
  • github.com/prometheus/client_golang: v1.23.2 → v1.24.1
  • github.com/prometheus/client_model: v0.6.2 → v0.6.3
  • github.com/prometheus/common: v0.67.5 → v0.70.1
  • github.com/prometheus/procfs: v0.19.2 → v0.21.1
  • github.com/sirupsen/logrus: v1.9.3 → v1.9.4
  • github.com/spiffe/go-spiffe/v2: v2.6.0 → v2.7.0
  • github.com/stretchr/objx: v0.5.2 → v0.5.3
  • github.com/stretchr/testify: v1.11.1 → v1.12.1
  • go.etcd.io/bbolt: v1.4.3 → v1.5.0
  • go.etcd.io/etcd/api/v3: v3.6.14 → v3.7.3
  • go.etcd.io/etcd/client/pkg/v3: v3.6.14 → v3.7.3
  • go.etcd.io/etcd/client/v3: v3.6.14 → v3.7.3
  • go.etcd.io/etcd/pkg/v3: v3.6.8 → v3.7.0
  • go.etcd.io/etcd/server/v3: v3.6.8 → v3.7.0
  • go.etcd.io/raft/v3: v3.6.0 → v3.7.0
  • go.opentelemetry.io/contrib/detectors/gcp: v1.43.0 → v1.44.0
  • go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.65.0 → v0.68.0
  • go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.65.0 → v0.69.0
  • go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc: v1.43.0 → v1.45.0
  • go.opentelemetry.io/otel/exporters/otlp/otlptrace: v1.43.0 → v1.45.0
  • go.opentelemetry.io/otel/metric: v1.43.0 → v1.45.0
  • go.opentelemetry.io/otel/sdk/metric: v1.43.0 → v1.45.0
  • go.opentelemetry.io/otel/sdk: v1.43.0 → v1.45.0
  • go.opentelemetry.io/otel/trace: v1.43.0 → v1.45.0
  • go.opentelemetry.io/otel: v1.43.0 → v1.45.0
  • go.opentelemetry.io/proto/otlp: v1.10.0 → v1.11.0
  • go.yaml.in/yaml/v2: v2.4.3 → v2.4.4
  • go.yaml.in/yaml/v3: v3.0.4 → v3.0.5
  • golang.org/x/crypto: v0.53.0 → v0.58.0
  • golang.org/x/exp: 944ab1f → 746e56f
  • golang.org/x/mod: v0.37.0 → v0.41.0
  • golang.org/x/net: v0.56.0 → v0.61.0
  • golang.org/x/oauth2: v0.36.0 → v0.37.0
  • golang.org/x/sync: v0.22.0 → v0.24.0
  • golang.org/x/sys: v0.46.0 → v0.49.0
  • golang.org/x/telemetry: 59b4966 → ed294f9
  • golang.org/x/term: v0.44.0 → v0.47.0
  • golang.org/x/text: v0.40.0 → v0.43.0
  • golang.org/x/time: v0.14.0 → v0.15.0
  • golang.org/x/tools: v0.47.0 → v0.51.0
  • golang.org/x/xerrors: 5ec99f8 → 9bdfabe
  • google.golang.org/genproto/googleapis/api: afd174a → 6ac0973
  • google.golang.org/genproto/googleapis/rpc: afd174a → 6ac0973
  • google.golang.org/grpc: v1.82.1 → v1.83.2
  • google.golang.org/protobuf: f2248ac → v1.36.12
  • k8s.io/api: v0.36.3 → v0.37.2
  • k8s.io/apiextensions-apiserver: v0.36.3 → v0.37.2
  • k8s.io/apimachinery: v0.36.3 → v0.37.2
  • k8s.io/apiserver: v0.36.3 → v0.37.2
  • k8s.io/client-go: v0.36.3 → v0.37.2
  • k8s.io/cluster-bootstrap: v0.36.3 → v0.37.2
  • k8s.io/code-generator: v0.36.3 → v0.37.2
  • k8s.io/component-base: v0.36.3 → v0.37.2
  • k8s.io/gengo/v2: ec3ebc5 → 25e2208
  • k8s.io/kms: v0.36.3 → v0.37.2
  • k8s.io/kube-openapi: 43fb72c → be32def
  • k8s.io/streaming: v0.36.3 → v0.37.2
  • k8s.io/utils: b8788ab → cf1189d
  • sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.34.0 → v0.36.0
  • sigs.k8s.io/controller-runtime: v0.24.1 → v0.25.2

Removed

  • github.com/creack/pty: v1.1.9
  • github.com/gogo/protobuf: v1.3.2
  • github.com/google/go-github/v82: v82.0.0
  • github.com/josharian/intern: v1.0.0
  • github.com/kisielk/errcheck: v1.5.0
  • github.com/mailru/easyjson: v0.7.7
  • github.com/matttproud/golang_protobuf_extensions: v1.0.1
  • github.com/stoewer/go-strcase: v1.3.0

_Thanks to all our contributors!_ 😊

Don't miss a new cluster-api release

NewReleases is sending notifications on new releases.