Skip to content

Conversation

@red-hat-konflux-kflux-prd-rh03
Copy link
Contributor

@red-hat-konflux-kflux-prd-rh03 red-hat-konflux-kflux-prd-rh03 bot commented Nov 5, 2025

This PR contains the following updates:

Package Change Age Confidence
sigs.k8s.io/cluster-api v1.10.3 -> v1.11.3 age confidence

Warning

Some dependencies could not be looked up. Check the warning logs for more information.


Release Notes

kubernetes-sigs/cluster-api (sigs.k8s.io/cluster-api)

v1.11.3

Compare Source

👌 Kubernetes version support

  • Management Cluster: v1.30.x -> v1.34.x
  • Workload Cluster: v1.28.x -> v1.34.x

More information about version support can be found here

Changes since v1.11.2

📈 Overview

  • 13 new commits merged
  • 1 feature addition ✨

✨ New Features

  • KCP: Bump coredns/corefile-migration to v1.0.29 (#​12863)

🌱 Others

  • CAPD: Recreate container if we re-enter reconciliation and it exists but is not running (#​12933)
  • clusterctl: Bump cert-manager to v1.19.0 (#​12832)
  • clusterctl: Bump cert-manager to v1.19.1 (#​12875)
  • Dependency: Bump Go to v1.24.8 (#​12829)
  • Dependency: Bump Go to v1.24.9 (#​12868)
  • e2e: Fix self-hosted to actually read DOCKER_PRELOAD_IMAGES from the e2e config (#​12932)
  • Runtime SDK: Add hint to look into controller logs to runtime client error response (#​12850)

📖 Additionally, there have been 5 contributions to our documentation and book. (#​12837, #​12839, #​12887, #​12894, #​12916)

Dependencies

Added

Nothing has changed.

Changed
Removed

Nothing has changed.

Thanks to all our contributors! 😊

v1.11.2

Compare Source

👌 Kubernetes version support

  • Management Cluster: v1.30.x -> v1.34.x
  • Workload Cluster: v1.28.x -> v1.34.x

More information about version support can be found here

Changes since v1.11.1

📈 Overview

  • 6 new commits merged
  • 1 feature addition ✨
  • 1 bug fixed 🐛

✨ New Features

  • KCP: Bump coredns/corefile-migration to v1.0.28 (#​12750)

🐛 Bug Fixes

  • clusterctl: Verify providers need upgrade before applying (#​12768)

🌱 Others

  • Autoscaling: Bump autoscaler in e2e tests to v1.33.1 (#​12792)
  • clusterctl: Add Metal3 as an IPAMProvider (#​12760)
  • Dependency: Bump go to v1.24.7 (#​12735)

📖 Additionally, there has been 1 contribution to our documentation and book. (#​12780)

Dependencies

Added

Nothing has changed.

Changed
Removed

Nothing has changed.

Thanks to all our contributors! 😊

v1.11.1

Compare Source

👌 Kubernetes version support

  • Management Cluster: v1.30.x -> v1.34.x
  • Workload Cluster: v1.28.x -> v1.34.x

More information about version support can be found here

Changes since v1.11.0

📈 Overview

  • 22 new commits merged
  • 3 feature additions ✨
  • 8 bugs fixed 🐛

✨ New Features

  • CI: Bump autoscaler to a9cb59f (#​12707)
  • CI: Bump Kubernetes in tests to v1.34.0 and claim support for v1.34 (#​12705)
  • e2e: Bump Kubernetes version used for testing to v1.34.0-rc.2 (#​12659)

🐛 Bug Fixes

  • API: Only try to convert infraRefs if they are set (#​12693)
  • API: Register conversion funcs in schemes (#​12697)
  • CABPK: Always use latest apiVersion when getting owner of KubeadmConfig in CABPK (#​12689)
  • ClusterClass: Ensure holder field path in GeneratePatchRequest is set based on contract (#​12691)
  • ClusterClass: Fix field paths in ClusterClass compatibility validation errors (#​12670)
  • ClusterClass: Stop adding conversion-data annotation to Cluster object (#​12721)
  • e2e/CAPD: Remove finalizers during deletion if ownerRef was never set (#​12678)
  • Testing: Fix KubeadmConfig fuzz test flake (#​12682)

🌱 Others

  • clusterctl: Allow metadata.yaml's Kind to be empty (#​12715)
  • Dependency: Bump github.com/go-viper/mapstructure/v2 to fix CVE (#​12680)
  • Dependency: Bump to envtest v1.34.0 (#​12706)
  • e2e: Bump to kind v0.30.0 (#​12708)
  • e2e: Get kind mgmt cluster logs in clusterctl upgrade test (#​12688)
  • Misc: Log version and git commit on controller start (#​12696)
  • Release/clusterctl: Add CAPRKE2 to release tool’s issue-opening providers list (#​12717)

📖 Additionally, there have been 4 contributions to our documentation and book. (#​12667, #​12668, #​12671, #​12674)

Dependencies

Added

Nothing has changed.

Changed
Removed

Nothing has changed.

Thanks to all our contributors! 😊

v1.11.0

Compare Source

👌 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

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 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 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.10.0

📈 Overview

  • 360 new commits merged
  • 88 breaking changes ⚠️
  • 29 feature additions ✨
  • 50 bugs fixed 🐛

📝 Proposals

  • Core: Update autoscaling from zero enhancement proposal with support for platform-aware autoscale from zero (#​11962)

⚠️ Breaking Changes

  • API: Add additional MinProperties & MinItems validation across multiple APIs (#​12538)
  • API: Add CAPD v1beta2 types (#​12226)
  • API: Add Minimum=0 marker to all MinReadySeconds fields (#​12474)
  • API: Add omitempty to required string without zero value (#​12548)
  • API: Add omitzero on struct without zero value (#​12550)
  • API: Add v1beta2 types (#​12037)
  • API: Align Spec fields to optionalfields API conventions (#​12431)
  • API: Align Status fields to optionalfields API conventions (#​12435)
  • API: Change .status.replicas fields to pointer + omitempty (#​12250)
  • API: Change all *metav1.Time fields to metav1.Time (#​12518)
  • API: Change bool to *bool for all API types (#​12436)
  • API: Change type of *string fields with invalid zero value to string (#​12429)
  • API: Change type of int32 fields with valid zero value to *int32 (#​12424)
  • API/Conditions: add V1Beta1 suffix and remove V1Beta2 suffix from condition types and reasons in v1beta2 packages (#​12091)
  • API: Drop unnecessary fields from contract-versioned object references (#​12356)
  • API: Fix required fields linter findings (#​12558)
  • API: Improve Cluster CRD Go type (#​12489)
  • API: Migrate API to use *Seconds instead of metav1.Duration fields (#​12327)
  • API: Move APIs to ./api (#​12262)
  • API/Partially revert: Remove DefaulterRemoveUnknownOrOmitableFields mutating webhook option (#​12290)
  • API: Promote v1beta2 conditions (#​12066)
  • API: Remove DefaulterRemoveUnknownOrOmitableFields mutating webhook option (#​12231)
  • API: Remove IPFamily from public APIs (move to CAPD/kind util) (#​12215)
  • API: Remove pointers from ClusterClass and Cluster healthCheck fields (#​12525)
  • API: Remove pointers from remaining pointer struct fields (#​12545)
  • API: Rename namingStrategy => naming, machineNamingStrategy => machineNaming (#​12524)
  • API: Restructure strategy fields (#​12506)
  • CABPK: Align KubeadmConfig to kubeadm v1beta4 types (#​12282)
  • CAPD: Align CAPD conversion to conversion of other providers (#​12481)
  • CAPD/Conditions: add V1Beta1 suffix and remove V1Beta2 suffix from condition types and reasons in CAPD v1beta2 packages (#​12393)
  • CAPD: Implement v1beta2 contract in CAPD (#​12409)
  • CAPD: Keep using v1beta1 condition in CAPD Docker backend (#​12450)
  • CAPD: Promote v1beta2 condition in CAPD (#​12362)
  • CAPD: Stop using v1beta1 status in CAPD controllers (#​12438)
  • CAPD: Update example manifests (#​12480)
  • Cluster: Remove deprecated index ByClusterClassName, ClusterByClusterClassClassName and ClusterClassNameField (#​12269)
  • ClusterClass: Drop unnecessary fields from ClusterClass template references (#​12358)
  • ClusterClass: Move infrastructure namingStrategy field in ClusterClass (#​12216)
  • ClusterClass: Remove ClusterVariable.DefinitionFrom field (#​12202)
  • ClusterClass: Remove DefaulterRemoveUnknownOrOmitableFields mutating webhook option (again) (#​12404)
  • ClusterClass: Remove deprecated Cluster.spec.topology.rolloutAfter field (#​12268)
  • ClusterClass: Remove deprecated ClusterCacheTracker and corresponding types (#​12270)
  • ClusterClass: Rename deprecated ClusterClass Metadata fields to DeprecatedV1Beta1Metadata (#​12273)
  • ClusterClass: Rename runtime extension fields in ClusterClass ExternalPatchDefinition (#​12281)
  • ClusterClass: Restructure classRef field in Cluster.spec.topology (#​12235)
  • clusterctl: Clusterctl describe defaults to v1beta2 (#​12369)
  • clusterctl: Remove clusterctl alpha topology plan (#​12283)
  • ClusterResourceSet: Change ClusterResourceSetBinding Bindings field from []*ResourceSetBinding to []ResourceSetBinding (#​12476)
  • ClusterResourceSet: Make clusterName field in ClusterResourceSetBinding required (#​12276)
  • ClusterResourceSet: Remove deprecated ClusterResourceSetBinding.DeleteBinding method (#​12267)
  • Conditions: Swap condition packages (#​12086)
  • Dependency: Bump to controller-runtime v0.21 / controller-tools v0.18 / k8s.io/* v0.33 / move to randfill (#​12191)
  • e2e: Migrate E2E tests to v1beta2 (#​12451)
  • e2e/Test/e2e: default to strict field validation & fix unknown field in ClusterClass YAML (#​12501)
  • IPAM: Refactor reference types for IPAM (#​12365)
  • KCP: KCP tolerates diff not leading to changes on machines (#​12402)
  • KCP: Rename LastRemediationStatus.Timestamp to Time in KCP (#​12452)
  • Machine: Drop unnecessary fields from Machine status.nodeRef (#​12352)
  • MachineDeployment: Drop revisionHistory in MachineDeployment (#​12274)
  • MachineDeployment: Remove MD spec.progressDeadlineSeconds (#​12232)
  • MachineHealthCheck: Drop unnecessary fields from remediationTemplate references (#​12368)
  • MachineHealthCheck: Rename MHC unhealthyConditions to unhealthyNodeConditions (#​12245)
  • MachineSet: Make Template in MachineSet & Spec in MachineTemplateSpec required (#​12420)
  • API/CAPD: Update ControlPlaneEndpoint InfraCluster contract, align CAPD to infra contracts (#​12465)
  • API/Cluster: Add initialization to Cluster status (#​12098)
  • API/Control-plane/Bootstrap/KCP/CABPK/Cluster: Implement v1beta2 contract in cluster controller, KCP, CABPK (#​12094)
  • API/KCP/CABPK/CI: Enable nomaps linter, Remove unused kubeadm ClusterStatus struct, Migrate Cluster.status.failureDomains to array (#​12083)
  • API/Machine: Add initialization to Machine Status (#​12101)
  • API/Machine: Move Machine deletion timeout fields into deletion group, move KCP machineTemplate spec fields to machineTemplate.spec (#​12499)
  • API/MachinePool: Add initialization to MachinePool Status (#​12102)
  • ClusterClass/MachineHealthCheck/Cluster: Restructure MHC fields in MHC, Cluster and ClusterClass CRDs (#​12504)
  • clusterctl/Documentation: Remove reference and configurations for Packet (Equinix Metal) (#​12143)
  • KCP/CABPK: Change BootstrapToken.Token from *BootstrapTokenString to BootstrapTokenString (#​12565)
  • KCP/CABPK: Change envVars fields from []EnvVar to *[]EnvVar (#​12539)
  • KCP/CABPK: Change User.PasswdFrom from *PasswdSource to PasswdSource + add omitzero, extend SSA patch helper to handle arrays (#​12560)
  • KCP/CABPK: Inline ControlPlaneComponent struct in APIServer / ControllerManager / Scheduler in CABPK (#​12446)
  • KCP/CABPK: Remove KubeadmConfig UseExperimentalRetryJoin (#​12234)
  • KCP/CABPK: Remove more defaulting from KubeadmConfig/KubeadmConfigTemplate/KCP/KCPTemplate (#​12495)
  • KCP/CABPK: Remove redundant fields from CABPK / KCP ClusterConfiguration (#​12319)
  • KCP/CABPK: Remove TypeMeta from KubeadmConfigSpec (#​12350)
  • KCP/MachineSet/CABPK/CAPD/e2e/Cluster: Cleanup version handling of unsupported Kubernetes releases (#​12303)
  • Machine/Cluster: Stop using FailureReason and FailureMessage in controllers (#​12148)
  • Machine/MachinePool/MachineSet/MachineDeployment: Add MinReadySeconds to Machine and remove it from MachineDeployment, MachineSet, MachinePool. (#​12153)
  • Machine/MachineSet/MachineDeployment/Cluster: Stop using deprecated replica counters in controllers (#​12149)
  • MachineSet/MachineDeployment: Use MachineSetDeletePolicy enum in MD & MS API (#​12419)
  • Runtime SDK/MachineDeployment: Make DeletePolicy & FailurePolicy enum fields non-pointers (#​12453)
  • Runtime SDK: Add v1beta2 API for ExtensionConfig (#​12197)
  • Runtime SDK: Change ExtensionConfig handler timeoutSeconds from *int32 to int32 & add Minimum=1 (#​12475)

✨ New Features

  • API: Block imports to internal packages in our API + restructure import restrictions (#​12302)
  • API: Deprecate v1alpha1 & v1beta1 API packages (#​12254)
  • API: Remove pointer, add omitzero & MinProperties for initialization fields/structs (#​12482)
  • CAPD: Add scale from/to 0 support for CAPD (#​12591)
  • CI: Add conflicting markers linter (#​12569)
  • CI: Bump KAL & add the notimestamps linter (#​12520)
  • clusterctl: Add Scaleway infrastructure provider to clusterctl (#​12357)
  • clusterctl: Adding Addon Provider for cdk8s (CAAPC) to cluster-api (#​12332)
  • clusterctl: Clearer diagnostics when provider metadata is missing or repo URL is stale (#​12238)
  • clusterctl: Validate provider metadata (#​12242)
  • Dependency: Bump controller-tools v0.17.3, conversion-gen v0.33.0 (#​12129)
  • Dependency: Complete bump to Kubernetes v1.33 (#​12206)
  • Dependency: Update KUBEBUILDER_ENVTEST_KUBERNETES_VERSION (#​12130)
  • e2e: Bump Kubernetes version used for testing to v1.34.0-beta.0 (#​12516)
  • e2e: Bump Kubernetes version used for testing to v1.34.0-rc.1 (#​12625)
  • e2e: From 1.10 use GetStableReleaseOfMinor instead of GetLatestReleaseOfMinor (#​12118)
  • KCP: Bump corefile-migration to v1.0.27 (#​12639)
  • Machine: Implement v1beta2 contract in Machine controller (#​12038)
  • MachinePool/Feat: set new replica fields for machine pools (#​12528)
  • API/CI: Enable ssatags KAL linter (#​12470)
  • KCP/CABPK/CI: Bump KAL to pick up latest requiredfields linter, add Min/MaxLength to BootstrapToken (#​12604)
  • KCP/CABPK: Add CertificateValidityPeriod and CACertificateValidityPeriod to KubeadmConfig (#​12335)
  • KCP/CABPK: Reintroduce KCP/CABPK ClusterConfiguration controlPlaneEndpoint (#​12423)
  • KCP/CABPK: Stop requiring init or cluster configuration for first CP machine (#​12540)
  • Runtime SDK/ClusterClass: Extend Cluster builtin to include metadata (#​12014)
  • Runtime SDK/ClusterClass: Optimize size of runtime hook requests (#​12462)
  • Runtime SDK: Add mTLS support to runtime extension server and client (#​12517)
  • Runtime SDK: Extend cluster builtin to include classNamespace (#​12050)
  • Testing: Bump Kubernetes in tests to v1.33.0 and claim support for v1.33 (#​12104)

🐛 Bug Fixes

  • API: Ensure all pointer status fields are dereferenced correctly (#​12412)
  • Bootstrap: Make joinConfiguration.discovery.bootstrapToken.token optional (#​12107)
  • Bootstrap: Relax minLength for bootstrap.dataSecretName to 0 (#​12164)
  • CABPK: Fix rendering of .Append = false in CABPK (#​12437)
  • CABPK: Fix rendering of ntp.enabled & users.inactive *bool values in cloud init (#​12394)
  • CABPK: Increase ignition additionalConfig maxSize from 10 to 32 KB (#​12222)
  • CABPK: Make KubeadmConfig FileSystem.Label optional (#​12019)
  • CAPD: Fix IPv6 CAPD e2e test (#​12488)
  • CAPD: Fix worker machine count in CAPD template (#​12028)
  • CAPD: Run CAPD conversion tests in CI (#​12588)
  • CAPIM: Fix CAPD in-memory templates (#​12013)
  • CAPIM/Mux: fix error check (#​12230)
  • CI: Fix conversion-verifier and fix findings (#​12349)
  • CI: Fixing failed to install kind for e2e tests (#​12361)
  • ClusterClass: Fix continuous reconciles because of apiVersion differences in Cluster topology controller (#​12341)
  • clusterctl: Accept upper case version (#​12237)
  • clusterctl: Add missing API version to NS object (#​12200)
  • clusterctl: Clusterctl upgrade hangs for a time on CRD migration when new version contains a number of new CRDs (#​11984)
  • ClusterResourceSet: Fix potential panic if ClusterResourceSetStrategy is not defined or incorrect (#​12096)
  • Conditions: Fix condition handling during controller start (#​12536)
  • e2e: Bump cluster-autoscaler to v1.33, adjust RBAC, pin apiVersion to v1beta1 (#​12502)
  • e2e: Fix autoscaler e2e test flake (#​12627)
  • e2e: Fix Available/Ready checks on E2E test (#​12549)
  • e2e: Fix e2e tests by fixing the etcd tag (#​12523)
  • e2e: Stop overwriting ExtraPortMappings if WithDockerSockMount option is used (#​12012)
  • IPAM: Enable conversion in CRDs (#​12198)
  • IPAM: Revert condition func changes for IPAddressClaim v1beta1 (#​12223)
  • KCP: Allow transition of KubeadmControlPlaneTemplate from defaulted rolloutStrategy to unset (#​12467)
  • KCP: Fix ControlPlaneComponentHealthCheckSeconds validation in KubeadmConfigSpec.Validate (#​12624)
  • KCP: Fix conversion issue in KubeadmControlPlaneTemplate with rolloutStrategy.type (#​12622)
  • KCP: Fix nil pointer in conversion (#​12292)
  • KCP: Fix rollout when init configuration in KCP is empty (#​12344)
  • KCP: Fix timeout handling in GetAPIServerCertificateExpiry and DialContext (#​12554)
  • Machine/Machine deletion: fallback to InfraMachine providerID if Machine providerID is not set (#​11985)
  • MachineDeployment: Bug fix to set machinedeployment AvailableReplicas (#​12410)
  • MachineDeployment: Fix second rolling update for MD rolloutAfter (#​12261)
  • MachineSet: Fix v1beta1 MachinesReady condition on MachineSet (#​12535)
  • API/ClusterClass: Fix MaxLength of worker topology Name fields (#​12072)
  • ClusterClass/MachinePool: Fix MP error in desired state calculation during Cluster creation (#​12621)
  • Dependency/CI: Upgrade golangci-lint to v2.1.0 (#​12170)
  • Testing/CI: Fix the condition to check whether cluster has v1beta2 conditions (#​12100)
  • Runtime SDK: Export ExtensionConfig webhook (#​12599)
  • Testing: Fix flakes in TestAPIAndWebhookChanges unit test (#​12526)
  • Testing: Fix flaky TestFuzzyConversion (Cluster) test (#​12630)
  • Testing: Fix flaky TestReconcileMachinePhases unit test (#​12632)
  • Testing: Fix flaky TestReconcileState unit test (#​12633)
  • Testing: Fix race condition in InMemoryMachine controller tests (#​12347)
  • Testing: Fix Test_ValidateCluster unit tests for mink8s (#​12564)
  • util/CRD migration: Fix cases where update validation fails (#​11991)
  • util: Fix typo for WithOwnedV1beta1Conditions to WithOwnedV1Beta1Conditions (#​12218)

🌱 Others

  • API: Drop hardcoded v1beta1 references (#​12027)
  • API: Enable optionalfields linter and fix remaining findings (#​12299)
  • API: Move internal/apis to internal/api (#​12296)
  • API: Remove old godoc comment, remove unnecessary cast in KCP (#​12479)
  • API: Remove unused List conversion funcs (#​12054)
  • API: Set minimum=1 on ObservedGeneration and KubeadmConfig APIEndpoint bindPort (#​12417)
  • API: Set print columns for v1beta2 types (#​12534)
  • CAPD: Ensure CAPD v1beta1 API package only imports core v1beta1 (#​12405)
  • CAPIM/Mux: Ignore net.ErrClosed error during listener close & server shutdown (#​12212)
  • CI: Add govulncheck to ensure vulnerability (#​12108)
  • CI: Bump E2E to Kubernetes v1.33.0-rc.1 (#​12099)
  • CI: Bump golangci-lint v2 (#​12088)
  • CI: Bump KAL and remove enum exclude (#​12500)
  • CI: Bump KAL to 2025060, cleanup excludes, fix IPAM prefix field, add MaxItems to Machine.status.addresses (#​12326)
  • CI: Bump KAL to 2025062 + enable uniquemarkers linter (#​12427)
  • CI/Chore: Update golangci-lint to v2.3.0 (#​12573)
  • CI: Enable duplicatemarkers linter (#​12228)
  • CI: Enable statusoptional linter (#​12229)
  • CI: Fix make generate-go-openapi if parent directory name does not equal cluster-api (#​12461)
  • CI: Remove govulncheck from the verify target (#​12348)
  • CI: Restructure excludes in KAL linter config (#​12445)
  • CI: Switch plugin to kube-api-linter (#​12089)
  • CI: Update version matrix for github workflows for release-1.10 (#​11992)
  • CI: Use release artifacts for CAPI v1.10 (#​12147)
  • Cluster: Add validation for Cluster spec.controlPlaneRef, spec.infrastructureRef and spec.topology (#​12454)
  • Cluster: Ensure Cluster.status.failureDomains are alphabetically sorted (#​12416)
  • Cluster: Improve error message if rebase fails because target ClusterClass is not reconciled (#​12415)
  • ClusterClass: Add DropEmptyStruct to ssa patch helper (#​12442)
  • ClusterClass: Extend topology upgrade test: add bool removal test case (#​12484)
  • ClusterClass: Improve CC RefVersionsUpToDate condition message (#​12472)
  • ClusterClass: Improve validation of worker topology names in Cluster resource (#​12561)
  • ClusterClass: Improve webhook output to include the names of the clusters blocking a deletion (#​12060)
  • ClusterClass: Make infrastructure and controlPlane required in ClusterClass (#​12444)
  • clusterctl: Add filename to clusterctl error about bad YAML (#​12189)
  • clusterctl: Add support for compatible contracts to clusterctl (#​12018)
  • clusterctl: Bump cert-manager to v1.17.1 (#​12044)
  • clusterctl: Bump cert-manager to v1.17.2 (#​12210)
  • clusterctl: Bump cert-manager to v1.18.0 (#​12342)
  • clusterctl: Bump cert-manager to v1.18.1 (#​12378)
  • clusterctl: Bump cert-manager to v1.18.2 (#​12478)
  • clusterctl: Change k0smotron repo location (#​12225)
  • clusterctl: Cleanup clusterctl tests assets (#​12510)
  • clusterctl: Enforce skip upgrade policy in clusterctl (#​12017)
  • Community meeting: Add JoelSpeed to approvers (#​12204)
  • Conditions: Cleanup v1beta1 updateStatus functions (#​12190)
  • Conditions: Drop usage of v1beta1 conditions (#​12109)
  • Control-plane: Avoid large number of connection error traces in kubeadm controlplane controller (#​12106)
  • Dependency: Bump Go 1.24 (#​12128)
  • Dependency: Bump go to v1.23.8 (#​12052)
  • Dependency: Bump Go to v1.24.5 (#​12509)
  • Dependency: Bump Go to v1.24.6 (#​12615)
  • Dependency: Bump kustomize to v5.7.0 (#​12432)
  • Dependency: Bump several tool versions in Makefile (#​12433)
  • Dependency: Bump sigs.k8s.io/kind to v0.28.0 (#​12243)
  • Dependency: Bump sigs.k8s.io/kind to v0.29.0 (#​12257)
  • Dependency: Bump to Go v1.24.4, github.com/cloudflare/circl v1.6.1 (#​12351)
  • Dependency: Fix CVE-2025-54388 (#​12574)
  • Dependency: Update github.com/go-viper/mapstructure/v2 to v2.3.0 (#​12421)
  • Devtools: Add KubeVirt support to Tilt dev workflow (#​11697)
  • Devtools: Fix Tiltfile (#​12541)
  • Devtools/Metrics: use v1beta2 for condition metrics and add metrics for dockercluster devcluster dockermachine devmachine extensionconfig ipaddressclaim and crs (#​12006)
  • e2e: Add an option to override custom node image name for kind cluster (#​12186)
  • e2e: Add quickstart e2e test with v1beta1 with ClusterClass and RuntimeSDK (#​12590)
  • e2e: Add resource version check to clusterctl upgrade tests (#​12546)
  • e2e: Add retry for SSA requests against Kubernetes < v1.29 in clusterctl upgrade tests (#​12067)
  • e2e: Bump clusterctl_upgrade_test.go main and 1.10 tests to k8s v1.33.0 (#​12193)
  • e2e: Bump Kubernetes version used for testing to v1.33.0-rc.0 (#​12073)
  • e2e: Fix ResourceVersion flake for MachinePools (#​12552)
  • e2e: Improve check for Cluster Available condition in e2e tests (#​12596)
  • e2e: Only run DescribeCluster if v1beta2 Cluster CRD is there (#​12279)
  • e2e: Print the entire object diff if resource versions are not stable in e2e tests (#​12527)
  • e2e: Remove redundant check in verifyV1Beta2ConditionsTrueV1Beta1 (#​12477)
  • e2e: Set extraArgs in test extension (#​12557)
  • e2e: Skipping test that is failing because of infra issues (#​12496)
  • KCP: Add --etcd-client-log-level flag to KCP (#​12271)
  • KCP: Allow unsetting etcd.local, etcd.external and dns (#​12065)
  • KCP: Bump corefile-migration library to v1.0.26 (#​12058)
  • KCP: Fix typo in forward etcd leadership error message (#​12056)
  • Logging: Reduce noisy logs (#​12626)
  • Misc: Remove jackfrancis from reviewers (#​12134)
  • KCP/CABPK/KCP: Set MinItems=1 on ExternalEtcd.Endpoints (#​12411)
  • KCP/CABPK: Remove unused updateClusterStatus (#​12295)
  • KCP/CABPK: Stop using unsafe for EnvVar conversion (#​12631)
  • KCP/MachineSet/MachineHealthCheck: Remove explicit defaulting of MS deletePolicy, MHC maxUnhealthy, KCPTemplate rolloutStrategy (#​12464)
  • MachinePool/MachineSet/MachineDeployment: Add validation to ensure ClusterName fields are equal in MD/MS/MP (#​12447)
  • Testing/CI/e2e: Add checker to validate conditions for v1beta2 (#​12111)
  • Testing/CI: Fix e2e test capi-e2e-rele

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

To execute skipped test pipelines write comment /ok-to-test.


Documentation

Find out how to configure dependency updates in MintMaker documentation or see all available configuration options in Renovate documentation.

@claude
Copy link

claude bot commented Nov 5, 2025

Pull Request Review: Upgrade cluster-api from v1.10.3 to v1.11.3

Summary

This PR updates the Cluster API dependency from v1.10.3 to v1.11.3, a minor version bump that includes several important changes and improvements.

Analysis

✅ Positive Aspects

  1. Backward Compatible API Usage: The codebase uses sigs.k8s.io/cluster-api/api/v1beta1, which is still supported in v1.11.x despite the introduction of v1beta2. According to the release notes, v1beta1 has been deprecated but not removed, providing a migration path.

  2. Minimal Surface Area: The controller has a small API surface area with CAPI, using only:

    • MachineDeployment resource for watching and reconciliation
    • Cluster resource for region resolution
    • Basic spec fields: InfrastructureRef, ClusterName, Template.Spec
    • No usage of deprecated fields that were removed in v1.11
  3. Conservative Field Access: The code only accesses stable spec fields that are unlikely to change:

    • machineDeployment.Spec.Template.Spec.InfrastructureRef
    • machineDeployment.Spec.ClusterName
    • cluster.Spec.InfrastructureRef
    • No status field manipulation beyond annotations
  4. Security Updates: v1.11.3 includes dependency updates that address CVEs (e.g., github.com/go-viper/mapstructure/v2 CVE fix mentioned in v1.11.1 release notes)

⚠️ Concerns and Recommendations

  1. API Deprecation Path (Medium Priority)

    • The v1beta1 API is now deprecated in favor of v1beta2
    • While v1beta1 will be supported through the v1.x lifecycle, planning for migration is important
    • Recommendation: Create a tracking issue to migrate to v1beta2 APIs in a future release
    • According to release notes: "API: Deprecate v1alpha1 & v1beta1 API packages (#12254)"
  2. Testing Coverage (High Priority)

    • The diff shows only go.mod changes, but no test runs are visible
    • Recommendation: Before merging, verify that:
      • make test-unit passes
      • make test-integration passes (if applicable)
      • Manual testing confirms the controller works with v1.11.3 CAPI resources
  3. Breaking Changes Review (Medium Priority)

    • v1.11.0 introduced 88 breaking changes, though most relate to v1beta2 or internal APIs
    • Key changes that could affect this controller:
      • "API: Change bool to *bool for all API types" - verify no unexpected nil panics
      • "API: Change *metav1.Time fields to metav1.Time" - check if any code relies on nil time checks
    • Recommendation: Review the migration guide to ensure no subtle breakages
  4. Dependency Compatibility (Low Priority)

    • This PR bumps CAPI but sigs.k8s.io/cluster-api-provider-aws/v2 remains at v2.9.1
    • CAPA v2.9.1 was released against CAPI v1.10.x
    • Recommendation: Verify CAPA v2.9.1 compatibility with CAPI v1.11.3, or consider updating CAPA as well if a newer compatible version exists
  5. Go Version Alignment (Low Priority)

    • CAPI v1.11.3 uses Go 1.24.9 according to release notes
    • This project uses Go 1.24.0 with toolchain go1.24.4
    • Recommendation: Consider updating to match CAPI's Go version for consistency

🔍 Specific Code Review

Looking at the usage patterns in the codebase:

pkg/controller/controller.go:18

clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"

✅ This import path is valid and will continue to work

pkg/utils/providerspec.go

  • Line 37: machineDeployment.Spec.Template.Spec.InfrastructureRef - ✅ Stable field
  • Line 80: machineDeployment.Spec.ClusterName - ✅ Stable field
  • Line 111: cluster.Spec.InfrastructureRef - ✅ Stable field

No usage of removed fields detected (e.g., progressDeadlineSeconds, revisionHistory, rolloutAfter).

📋 Pre-Merge Checklist

Before merging, please ensure:

  • All unit tests pass (make test-unit)
  • All integration tests pass (make test-integration)
  • Manual testing confirms controller functionality with CAPI v1.11.3
  • CI checks pass (if configured)
  • Review CAPA v2.9.1 compatibility with CAPI v1.11.3

🎯 Recommendation

APPROVE with conditions: This dependency update appears safe given the codebase's limited and conservative use of CAPI APIs. However, testing is critical before merge to catch any subtle incompatibilities.

Future Work: Consider creating a follow-up issue to:

  1. Plan migration to v1beta2 APIs (before CAPI v2.0 when v1beta1 may be removed)
  2. Update CAPA dependency if a v1.11-compatible version is available
  3. Add automated dependency update testing to CI

Review performed by Claude Code

@red-hat-konflux-kflux-prd-rh03 red-hat-konflux-kflux-prd-rh03 bot force-pushed the konflux/mintmaker/main/sigs.k8s.io-cluster-api-1.x branch from f6923f4 to 449ad07 Compare November 6, 2025 00:13
@claude
Copy link

claude bot commented Nov 6, 2025

Pull Request Review: CAPI v1.10.3 → v1.11.3 Upgrade

Overview

This PR updates the Cluster API dependency from v1.10.3 to v1.11.3, bringing important security fixes, bug fixes, and new features. The change is minimal and appears to be a safe upgrade.

✅ Code Quality & Best Practices

  • Clean upgrade: The change is limited to a single line in go.mod, which is the ideal approach for dependency upgrades
  • No code changes required: The codebase continues to use v1beta1 API, which is still supported in CAPI v1.11.3
  • Follows project conventions: This Renovate-managed upgrade aligns with the project's automated dependency management

🔍 Compatibility Analysis

API Version Usage

The project currently uses:

  • CAPI: sigs.k8s.io/cluster-api/api/v1beta1 (pkg/controller/controller.go:18, pkg/utils/providerspec.go:23)
  • CAPA: sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2 (pkg/utils/providerspec.go:24)

Good news: CAPI v1.11.x maintains full backward compatibility with v1beta1 APIs. The v1.11.0 release notes confirm that v1beta1 is still supported, with v1beta2 being introduced as the next evolution (not a replacement).

Key Changes in CAPI v1.11.3

From the release notes, the upgrade path includes:

  • v1.11.1: Bug fixes for API conversion, ClusterClass validation, CAPD finalizers
  • v1.11.2: Clusterctl upgrade verification fix, autoscaler bump to v1.33.1
  • v1.11.3: CoreDNS corefile-migration bump, CAPD container recreation fix

Breaking Changes Impact

The CAPI v1.11.0 release introduced significant v1beta2 API changes, but these do NOT affect this project because:

  1. The project uses v1beta1 APIs exclusively
  2. v1beta1 remains supported and stable
  3. No code changes are needed for v1beta1 consumers
  4. The v1beta2 changes are opt-in via API version selection

🐛 Potential Issues

None identified. The upgrade should be transparent since:

  • No breaking changes affect v1beta1 API consumers
  • The controller logic remains compatible
  • Test structure uses standard CAPI patterns that haven't changed

⚡ Performance Considerations

  • No performance impact expected
  • The release includes optimization work (Runtime SDK request size optimization in v1.11.0)
  • Improved caching and reconciliation efficiency

🔒 Security Concerns

Positive security updates:

  • v1.11.1 includes dependency bump for github.com/go-viper/mapstructure/v2 to fix a CVE
  • Updated to Go 1.24.9 (includes security fixes)
  • cert-manager bumped to v1.19.1

🧪 Test Coverage

Based on the codebase review:

  • Unit tests at pkg/controller/controller_test.go use standard CAPI types that remain compatible
  • Integration tests should work without modification
  • Recommendation: Verify CI tests pass before merging

📋 Recommendations

✅ Safe to Merge

This PR can be merged once CI tests pass. The upgrade is:

  • Low risk
  • Well-tested upstream
  • Backward compatible
  • Brings security improvements

📌 Future Considerations

  1. API Migration Planning: While not urgent, consider planning migration to v1beta2 in the future, as v1beta1 may be deprecated in later CAPI releases
  2. Version Tracking: Update CLAUDE.md line 67 from "Cluster API v1.10.3" to "Cluster API v1.11.3" to keep documentation in sync
  3. Testing: Consider adding tests for API version stability to catch future breaking changes early

🔄 Post-Merge Actions

None required immediately, but monitor for:

  • Any unexpected behavior in production
  • Future Renovate PRs for CAPI v1.12.x (may include v1beta1 deprecation warnings)

Summary

Approve and merge - This is a clean, safe upgrade that brings security fixes and improvements without requiring code changes.


Review generated by Claude Code - analyzed PR changes, CAPI release notes, codebase compatibility, and project conventions

Signed-off-by: red-hat-konflux-kflux-prd-rh03 <206760901+red-hat-konflux-kflux-prd-rh03[bot]@users.noreply.github.com>
@red-hat-konflux-kflux-prd-rh03 red-hat-konflux-kflux-prd-rh03 bot force-pushed the konflux/mintmaker/main/sigs.k8s.io-cluster-api-1.x branch from 449ad07 to 80588de Compare November 12, 2025 00:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant