Skip to content

Merge https://github.com/kubernetes-sigs/cluster-api:v1.13.2 (ebd807c) into master#288

Open
cloud-team-rebase-bot[bot] wants to merge 622 commits into
openshift:masterfrom
openshift-cloud-team:rebase-bot-master
Open

Merge https://github.com/kubernetes-sigs/cluster-api:v1.13.2 (ebd807c) into master#288
cloud-team-rebase-bot[bot] wants to merge 622 commits into
openshift:masterfrom
openshift-cloud-team:rebase-bot-master

Conversation

@cloud-team-rebase-bot
Copy link
Copy Markdown

@cloud-team-rebase-bot cloud-team-rebase-bot Bot commented Apr 30, 2026

Summary by CodeRabbit

  • New Features

    • Managed node taints & taint propagation, topology rollout timing, disk partition layout for bootstrap, machine-health unhealthy-condition rules, configurable certificate encryption algorithm, failure-domain status/column, ClusterClass upgrade/extensibility.
  • Bug Fixes

    • Improved certificate validity/rotation handling; quieter control-plane init logging.
  • Documentation

    • Numerous changelog updates across releases and consolidated contributing link.
  • Chores

    • Tooling/version bumps, CRD cleanup (removed deprecated alpha versions), CI/workflow and build improvements.

k8s-ci-robot and others added 30 commits March 3, 2026 11:20
…bot/github_actions/all-github-actions-2c6e677ddc

🌱 Bump actions/setup-go from 6.2.0 to 6.3.0 in the all-github-actions group
…bot/go_modules/all-go-mod-patch-and-minor-2fc94a814f

🌱 Bump the all-go-mod-patch-and-minor group across 3 directories with 8 updates
…es-status-addresses-even-further

🌱  api: relax validation for Machine .status.addresses to maximum of 256 instead of 128 items
* Postpone date when we stop serving v1beta1

* Address comments
Signed-off-by: Stefan Büringer buringerst@vmware.com
* Add rolloutAfter to cluster.spec.topology

* Address comments
…eout-unset

🌱 Avoid unsetting nodeDeletionTimeoutSeconds during Machine deletion
apiserver

Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
…per-no-up-safeguard

🌱 Add safeguard to patchHelper to avoid sending empty patches to the apiserver
…utafter-uptodate

🐛 Fix UpToDate calculation for rolloutAfter
- Stop streaming when pod or container has terminated, but ensure
  we stream the logs at least once.
- Add containerHasTerminated helper with tests.

The current behavior is to try again every 2 seconds for terminated
containers. This becomes silly for init containers particularly, since
we fetch the logs from the beginning for each retry so that we end up
with logs repeated again and again.

Signed-off-by: Lennart Jern <lennart.jern@est.tech>
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
…helper-flake

🐛 Fix patchHelper unit test flakes
Signed-off-by: Stefan Büringer buringerst@vmware.com
…he-optimization

✨ Optimize cache configuration of CABPK & standardize cache/client setup
… 1 update

Bumps the all-go-mod-patch-and-minor group with 1 update in the / directory: [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime).
Bumps the all-go-mod-patch-and-minor group with 1 update in the /hack/tools directory: [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime).
Bumps the all-go-mod-patch-and-minor group with 1 update in the /test directory: [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime).


Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

Updates `sigs.k8s.io/controller-runtime` from 0.23.1 to 0.23.3
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.1...v0.23.3)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-go-mod-patch-and-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…bot/go_modules/all-go-mod-patch-and-minor-f488d51061

🌱 Bump the all-go-mod-patch-and-minor group across 3 directories with 1 update
I should've just read the CAEP better, but this confounded me for a good few hours.

Clarify that ClusterResourceSet is namespace-scoped and requires resources and clusters to be in the same namespace.
fabriziopandini and others added 3 commits May 13, 2026 11:58
…bot/cherry-pick-13685-to-release-1.13

[release-1.13] 🌱 KCP cleanup etcd members not started after a machine is remediated
@cloud-team-rebase-bot cloud-team-rebase-bot Bot changed the title Merge https://github.com/kubernetes-sigs/cluster-api:v1.13.1 (16d0a65) into master Merge https://github.com/kubernetes-sigs/cluster-api:v1.13.2 (ebd807c) into master May 14, 2026
@cloud-team-bot cloud-team-bot Bot force-pushed the rebase-bot-master branch from e801fc2 to fcbd711 Compare May 14, 2026 12:11
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Makefile`:
- Around line 180-183: The GOVULNCHECK target uses a versionless path so Make
doesn't rebuild when GOVULNCHECK_VER changes; change the GOVULNCHECK variable
and the build recipe to produce a versioned binary (e.g., include
$(GOVULNCHECK_VER) in the filename or directory) and make the $(GOVULNCHECK)
file target depend on GOVULNCHECK_VER (or use the versioned filename as the
target), then update any references (including verify-govulncheck) to point to
the new versioned path so bumps to GOVULNCHECK_VER force a rebuild of the
scanner.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 85cf6e0d-b412-4872-ae5b-28e44ac43f5b

📥 Commits

Reviewing files that changed from the base of the PR and between e801fc2 and fcbd711.

⛔ Files ignored due to path filters (29)
  • api/bootstrap/kubeadm/v1beta1/zz_generated.conversion.go is excluded by !**/zz_generated*
  • api/bootstrap/kubeadm/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/bootstrap/kubeadm/v1beta2/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/controlplane/kubeadm/v1beta1/zz_generated.conversion.go is excluded by !**/zz_generated*
  • api/controlplane/kubeadm/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/controlplane/kubeadm/v1beta2/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/core/v1beta1/zz_generated.conversion.go is excluded by !**/zz_generated*
  • api/core/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/core/v1beta1/zz_generated.openapi.go is excluded by !**/zz_generated*
  • api/core/v1beta2/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/core/v1beta2/zz_generated.openapi.go is excluded by !**/zz_generated*
  • api/runtime/hooks/v1alpha1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/runtime/hooks/v1alpha1/zz_generated.openapi.go is excluded by !**/zz_generated*
  • docs/book/src/images/clusterclass-crd-relationships.svg is excluded by !**/*.svg
  • docs/book/src/images/kubeadm-control-plane-machines-resources.png is excluded by !**/*.png
  • docs/book/src/images/worker-machines-resources.png is excluded by !**/*.png
  • go.sum is excluded by !**/*.sum
  • hack/tools/go.sum is excluded by !**/*.sum
  • hack/tools/vendor/cloud.google.com/go/auth/CHANGES.md is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/credentials/detect.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/credentials/filetypes.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/credentials/internal/gdch/gdch.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/grpctransport/grpctransport.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/httptransport/httptransport.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/httptransport/transport.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/internal/credsfile/credsfile.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/internal/credsfile/filetype.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/internal/credsfile/parse.go is excluded by !**/vendor/**
  • hack/tools/vendor/cloud.google.com/go/auth/internal/internal.go is excluded by !**/vendor/**
📒 Files selected for processing (271)
  • .dockerignore
  • .github/workflows/pr-gh-workflow-approve.yaml
  • .github/workflows/pr-md-link-check.yaml
  • .github/workflows/release.yaml
  • .github/workflows/weekly-md-link-check.yaml
  • .github/workflows/weekly-security-scan.yaml
  • .github/workflows/weekly-test-release.yaml
  • .golangci-kal.yml
  • .golangci.yml
  • .trivyignore
  • CHANGELOG/v1.10.10.md
  • CHANGELOG/v1.10.9.md
  • CHANGELOG/v1.11.4.md
  • CHANGELOG/v1.11.5.md
  • CHANGELOG/v1.11.6.md
  • CHANGELOG/v1.11.7.md
  • CHANGELOG/v1.12.0-rc.1.md
  • CHANGELOG/v1.12.0.md
  • CHANGELOG/v1.12.1.md
  • CHANGELOG/v1.12.2.md
  • CHANGELOG/v1.12.3.md
  • CHANGELOG/v1.12.4.md
  • CHANGELOG/v1.13.0-beta.0.md
  • CHANGELOG/v1.13.0-beta.1.md
  • CHANGELOG/v1.13.0-rc.0.md
  • CONTRIBUTING.md
  • Dockerfile
  • Makefile
  • Tiltfile
  • api/bootstrap/kubeadm/v1beta1/conversion.go
  • api/bootstrap/kubeadm/v1beta1/kubeadm_types.go
  • api/bootstrap/kubeadm/v1beta1/kubeadmconfig_types.go
  • api/bootstrap/kubeadm/v1beta2/kubeadmconfig_types.go
  • api/controlplane/kubeadm/v1beta1/conversion.go
  • api/controlplane/kubeadm/v1beta1/kubeadm_control_plane_types.go
  • api/controlplane/kubeadm/v1beta1/kubeadmcontrolplanetemplate_types.go
  • api/controlplane/kubeadm/v1beta2/kubeadm_control_plane_types.go
  • api/controlplane/kubeadm/v1beta2/kubeadmcontrolplanetemplate_types.go
  • api/core/v1beta1/cluster_types.go
  • api/core/v1beta1/clusterclass_types.go
  • api/core/v1beta1/common_types.go
  • api/core/v1beta1/conversion.go
  • api/core/v1beta1/conversion_test.go
  • api/core/v1beta1/machine_types.go
  • api/core/v1beta1/machinehealthcheck_types.go
  • api/core/v1beta2/cluster_types.go
  • api/core/v1beta2/clusterclass_types.go
  • api/core/v1beta2/common_types.go
  • api/core/v1beta2/condition_types.go
  • api/core/v1beta2/machine_types.go
  • api/ipam/v1alpha1/conversion.go
  • api/runtime/hooks/v1alpha1/common_types.go
  • api/runtime/hooks/v1alpha1/lifecyclehooks_types.go
  • api/runtime/hooks/v1alpha1/topologymutation_types.go
  • api/runtime/hooks/v1alpha1/topologymutation_variable_types.go
  • bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml
  • bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml
  • bootstrap/kubeadm/config/crd/patches/webhook_in_kubeadmconfigs.yaml
  • bootstrap/kubeadm/config/crd/patches/webhook_in_kubeadmconfigtemplates.yaml
  • bootstrap/kubeadm/config/manager/manager.yaml
  • bootstrap/kubeadm/config/webhook/manifests.yaml
  • bootstrap/kubeadm/internal/cloudinit/cloudinit_test.go
  • bootstrap/kubeadm/internal/cloudinit/disk_setup.go
  • bootstrap/kubeadm/internal/cloudinit/utils.go
  • bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go
  • bootstrap/kubeadm/internal/controllers/suite_test.go
  • bootstrap/kubeadm/internal/locking/control_plane_init_mutex.go
  • bootstrap/kubeadm/internal/setup/setup.go
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfig.go
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfig_test.go
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfigtemplate.go
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfigtemplate_test.go
  • bootstrap/kubeadm/main.go
  • bootstrap/util/configowner_test.go
  • bootstrap/util/suite_test.go
  • cmd/clusterctl/Dockerfile
  • cmd/clusterctl/client/cluster/cert_manager.go
  • cmd/clusterctl/client/cluster/cert_manager_test.go
  • cmd/clusterctl/client/cluster/mover.go
  • cmd/clusterctl/client/cluster/template.go
  • cmd/clusterctl/client/cluster/template_test.go
  • cmd/clusterctl/client/cluster/upgrader.go
  • cmd/clusterctl/client/cluster/upgrader_test.go
  • cmd/clusterctl/client/config/imagemeta_client.go
  • cmd/clusterctl/client/config/imagemeta_client_test.go
  • cmd/clusterctl/client/config/providers_client.go
  • cmd/clusterctl/client/config_test.go
  • cmd/clusterctl/client/repository/repository_github.go
  • cmd/clusterctl/client/repository/repository_github_test.go
  • cmd/clusterctl/client/upgrade.go
  • cmd/clusterctl/cmd/config_repositories_test.go
  • cmd/clusterctl/cmd/describe_cluster.go
  • cmd/clusterctl/cmd/upgrade_apply.go
  • cmd/clusterctl/cmd/version_checker.go
  • cmd/clusterctl/config/crd/bases/clusterctl.cluster.x-k8s.io_metadata.yaml
  • cmd/clusterctl/config/crd/bases/clusterctl.cluster.x-k8s.io_providers.yaml
  • cmd/clusterctl/config/manifest/clusterctl-api.yaml
  • cmd/clusterctl/hack/create-local-repository.py
  • cmd/clusterctl/internal/test/fake_github.go
  • cmd/clusterctl/internal/test/fake_reader.go
  • config/crd/bases/addons.cluster.x-k8s.io_clusterresourcesetbindings.yaml
  • config/crd/bases/addons.cluster.x-k8s.io_clusterresourcesets.yaml
  • config/crd/bases/cluster.x-k8s.io_clusterclasses.yaml
  • config/crd/bases/cluster.x-k8s.io_clusters.yaml
  • config/crd/bases/cluster.x-k8s.io_machinedeployments.yaml
  • config/crd/bases/cluster.x-k8s.io_machinedrainrules.yaml
  • config/crd/bases/cluster.x-k8s.io_machinehealthchecks.yaml
  • config/crd/bases/cluster.x-k8s.io_machinepools.yaml
  • config/crd/bases/cluster.x-k8s.io_machines.yaml
  • config/crd/bases/cluster.x-k8s.io_machinesets.yaml
  • config/crd/bases/ipam.cluster.x-k8s.io_ipaddressclaims.yaml
  • config/crd/bases/ipam.cluster.x-k8s.io_ipaddresses.yaml
  • config/crd/bases/runtime.cluster.x-k8s.io_extensionconfigs.yaml
  • config/crd/patches/webhook_in_clusterclasses.yaml
  • config/crd/patches/webhook_in_clusterresourcesetbindings.yaml
  • config/crd/patches/webhook_in_clusterresourcesets.yaml
  • config/crd/patches/webhook_in_clusters.yaml
  • config/crd/patches/webhook_in_extensionconfigs.yaml
  • config/crd/patches/webhook_in_ipaddressclaims.yaml
  • config/crd/patches/webhook_in_ipaddresses.yaml
  • config/crd/patches/webhook_in_machinedeployments.yaml
  • config/crd/patches/webhook_in_machinedrainrules.yaml
  • config/crd/patches/webhook_in_machinehealthchecks.yaml
  • config/crd/patches/webhook_in_machinepools.yaml
  • config/crd/patches/webhook_in_machines.yaml
  • config/crd/patches/webhook_in_machinesets.yaml
  • config/manager/manager.yaml
  • config/metrics/crd-metrics-config.yaml
  • config/webhook/manifests.yaml
  • controllers/clustercache/cluster_accessor.go
  • controllers/clustercache/cluster_accessor_client.go
  • controllers/clustercache/cluster_accessor_test.go
  • controllers/clustercache/cluster_cache.go
  • controllers/clustercache/cluster_cache_test.go
  • controllers/crdmigrator/crd_migrator.go
  • controllers/crdmigrator/test/t1/crd/test.cluster.x-k8s.io_testclusters.yaml
  • controllers/crdmigrator/test/t2/crd/test.cluster.x-k8s.io_testclusters.yaml
  • controllers/crdmigrator/test/t3/crd/test.cluster.x-k8s.io_testclusters.yaml
  • controllers/crdmigrator/test/t4/crd/test.cluster.x-k8s.io_testclusters.yaml
  • controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml
  • controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanetemplates.yaml
  • controlplane/kubeadm/config/crd/patches/webhook_in_kubeadmcontrolplanes.yaml
  • controlplane/kubeadm/config/crd/patches/webhook_in_kubeadmcontrolplanetemplates.yaml
  • controlplane/kubeadm/config/manager/manager.yaml
  • controlplane/kubeadm/config/webhook/manifests.yaml
  • controlplane/kubeadm/internal/cluster.go
  • controlplane/kubeadm/internal/cluster_test.go
  • controlplane/kubeadm/internal/clustercache_utils.go
  • controlplane/kubeadm/internal/control_plane.go
  • controlplane/kubeadm/internal/control_plane_test.go
  • controlplane/kubeadm/internal/controllers/controller.go
  • controlplane/kubeadm/internal/controllers/controller_test.go
  • controlplane/kubeadm/internal/controllers/fakes_test.go
  • controlplane/kubeadm/internal/controllers/helpers.go
  • controlplane/kubeadm/internal/controllers/inplace.go
  • controlplane/kubeadm/internal/controllers/inplace_canupdatemachine.go
  • controlplane/kubeadm/internal/controllers/inplace_canupdatemachine_test.go
  • controlplane/kubeadm/internal/controllers/inplace_trigger.go
  • controlplane/kubeadm/internal/controllers/remediation.go
  • controlplane/kubeadm/internal/controllers/remediation_test.go
  • controlplane/kubeadm/internal/controllers/scale.go
  • controlplane/kubeadm/internal/controllers/scale_test.go
  • controlplane/kubeadm/internal/controllers/status.go
  • controlplane/kubeadm/internal/controllers/status_test.go
  • controlplane/kubeadm/internal/controllers/suite_test.go
  • controlplane/kubeadm/internal/controllers/update.go
  • controlplane/kubeadm/internal/controllers/update_test.go
  • controlplane/kubeadm/internal/desiredstate/desired_state.go
  • controlplane/kubeadm/internal/desiredstate/desired_state_test.go
  • controlplane/kubeadm/internal/etcd/etcd_test.go
  • controlplane/kubeadm/internal/etcd/fake/client.go
  • controlplane/kubeadm/internal/setup/setup.go
  • controlplane/kubeadm/internal/suite_test.go
  • controlplane/kubeadm/internal/webhooks/kubeadmcontrolplane.go
  • controlplane/kubeadm/internal/webhooks/kubeadmcontrolplane_test.go
  • controlplane/kubeadm/internal/webhooks/kubeadmcontrolplanetemplate.go
  • controlplane/kubeadm/internal/webhooks/scale.go
  • controlplane/kubeadm/internal/workload_cluster.go
  • controlplane/kubeadm/internal/workload_cluster_conditions.go
  • controlplane/kubeadm/internal/workload_cluster_conditions_test.go
  • controlplane/kubeadm/internal/workload_cluster_coredns.go
  • controlplane/kubeadm/internal/workload_cluster_etcd.go
  • controlplane/kubeadm/internal/workload_cluster_etcd_test.go
  • controlplane/kubeadm/internal/workload_cluster_rbac.go
  • controlplane/kubeadm/internal/workload_cluster_rbac_test.go
  • controlplane/kubeadm/internal/workload_cluster_test.go
  • controlplane/kubeadm/main.go
  • docs/book/src/SUMMARY.md
  • docs/book/src/clusterctl/configuration.md
  • docs/book/src/developer/core/logging.md
  • docs/book/src/developer/core/tilt.md
  • docs/book/src/developer/providers/contracts/bootstrap-config.md
  • docs/book/src/developer/providers/contracts/clusterctl.md
  • docs/book/src/developer/providers/contracts/control-plane.md
  • docs/book/src/developer/providers/contracts/infra-cluster.md
  • docs/book/src/developer/providers/contracts/infra-machine.md
  • docs/book/src/developer/providers/contracts/infra-machinepool.md
  • docs/book/src/developer/providers/getting-started/webhooks.md
  • docs/book/src/developer/providers/migrations/v1.10-to-v1.11.md
  • docs/book/src/developer/providers/migrations/v1.12-to-v1.13.md
  • docs/book/src/developer/providers/migrations/v1.9-to-v1.10.md
  • docs/book/src/images/kubeadm-control-plane-machines-resources.plantuml
  • docs/book/src/images/worker-machines-resources.plantuml
  • docs/book/src/introduction.md
  • docs/book/src/reference/api/crd-api-reference-v1beta1.md
  • docs/book/src/reference/api/crd-api-reference.md
  • docs/book/src/reference/api/crd-relationships.md
  • docs/book/src/reference/api/reference.md
  • docs/book/src/reference/versions.md
  • docs/book/src/tasks/automated-machine-management/healthchecking.md
  • docs/book/src/tasks/automated-machine-management/scaling.md
  • docs/book/src/tasks/cluster-resource-set.md
  • docs/book/src/tasks/diagnostics.md
  • docs/book/src/tasks/experimental-features/cluster-class/write-clusterclass.md
  • docs/book/src/tasks/experimental-features/experimental-features.md
  • docs/book/src/tasks/experimental-features/machine-pools.md
  • docs/book/src/tasks/experimental-features/runtime-sdk/implement-extensions.md
  • docs/book/src/tasks/experimental-features/runtime-sdk/index.md
  • docs/book/src/tasks/external-etcd.md
  • docs/book/src/tasks/using-kustomize.md
  • docs/book/src/user/quick-start.md
  • docs/proposals/20200506-conditions.md
  • docs/proposals/20210310-opt-in-autoscaling-from-zero.md
  • docs/proposals/20220330-topology-mutation-hook.md
  • docs/proposals/20240916-improve-status-in-CAPI-resources.md
  • docs/proposals/20250124-From CAPD(docker) to CAPD(dev) .md
  • docs/release/releases/release-1.13.md
  • docs/release/role-handbooks/ci-signal/README.md
  • docs/release/role-handbooks/release-lead/README.md
  • exp/topology/desiredstate/desired_state.go
  • exp/topology/desiredstate/desired_state_test.go
  • exp/topology/desiredstate/lifecycle_hooks.go
  • exp/topology/desiredstate/lifecycle_hooks_test.go
  • exp/topology/desiredstate/upgrade_plan.go
  • exp/topology/desiredstate/upgrade_plan_test.go
  • feature/feature.go
  • go.mod
  • hack/crd-ref-docs-config-v1beta1.yaml
  • hack/crd-ref-docs-config-v1beta2.yaml
  • hack/ensure-go.sh
  • hack/gogcflags.sh
  • hack/kind-install.sh
  • hack/observability/alloy/kustomization.yaml
  • hack/observability/grafana/chart/kustomization.yaml
  • hack/observability/grafana/dashboards/cluster-api-mgmt-apiserver-requests.json
  • hack/observability/grafana/dashboards/cluster-api-performance.json
  • hack/observability/grafana/dashboards/cluster-api-state.json
  • hack/observability/grafana/dashboards/cluster-api-wl-apiserver-requests.json
  • hack/observability/grafana/dashboards/controller-runtime.json
  • hack/observability/grafana/dashboards/runtime-extensions.json
  • hack/observability/kube-state-metrics/crd-sidecar-patch.yaml
  • hack/observability/kube-state-metrics/kustomization.yaml
  • hack/observability/loki/kustomization.yaml
  • hack/observability/loki/values.yaml
  • hack/observability/metrics-server/kustomization.yaml
  • hack/observability/parca/values.yaml
  • hack/observability/prometheus/kustomization.yaml
  • hack/observability/prometheus/values.yaml
  • hack/observability/tempo/kustomization.yaml
  • hack/observability/visualizer/kustomization.yaml
  • hack/tools/go.mod
  • hack/tools/govulncheck/.gitignore
  • hack/tools/govulncheck/govulncheck.patch
  • hack/tools/internal/tilt-prepare/main.go
  • hack/tools/prowjob-gen/config.go
  • hack/tools/prowjob-gen/test/test-configuration.yaml
  • hack/tools/prowjob-gen/test/test-main.yaml.golden
  • hack/tools/prowjob-gen/test/test.yaml.tpl
  • hack/tools/release/internal/update_providers/provider_issues.go
  • hack/tools/release/weekly/main.go
  • hack/tools/runtime-openapi-gen/main.go
💤 Files with no reviewable changes (7)
  • .github/workflows/pr-gh-workflow-approve.yaml
  • bootstrap/util/suite_test.go
  • .trivyignore
  • controllers/clustercache/cluster_accessor_test.go
  • config/webhook/manifests.yaml
  • cmd/clusterctl/client/cluster/upgrader_test.go
  • bootstrap/kubeadm/config/webhook/manifests.yaml
✅ Files skipped from review due to trivial changes (34)
  • .github/workflows/pr-md-link-check.yaml
  • bootstrap/kubeadm/config/crd/patches/webhook_in_kubeadmconfigs.yaml
  • config/crd/bases/ipam.cluster.x-k8s.io_ipaddresses.yaml
  • controllers/crdmigrator/test/t2/crd/test.cluster.x-k8s.io_testclusters.yaml
  • config/crd/patches/webhook_in_machinedeployments.yaml
  • CONTRIBUTING.md
  • config/crd/patches/webhook_in_machinepools.yaml
  • config/crd/patches/webhook_in_machinesets.yaml
  • controllers/crdmigrator/test/t4/crd/test.cluster.x-k8s.io_testclusters.yaml
  • CHANGELOG/v1.11.6.md
  • .dockerignore
  • config/crd/patches/webhook_in_ipaddresses.yaml
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfigtemplate_test.go
  • cmd/clusterctl/config/crd/bases/clusterctl.cluster.x-k8s.io_providers.yaml
  • controllers/crdmigrator/test/t1/crd/test.cluster.x-k8s.io_testclusters.yaml
  • cmd/clusterctl/client/config/providers_client.go
  • cmd/clusterctl/client/repository/repository_github_test.go
  • CHANGELOG/v1.11.4.md
  • config/crd/bases/ipam.cluster.x-k8s.io_ipaddressclaims.yaml
  • api/core/v1beta2/condition_types.go
  • CHANGELOG/v1.12.3.md
  • config/crd/bases/cluster.x-k8s.io_machinedrainrules.yaml
  • CHANGELOG/v1.10.9.md
  • cmd/clusterctl/config/crd/bases/clusterctl.cluster.x-k8s.io_metadata.yaml
  • cmd/clusterctl/cmd/config_repositories_test.go
  • cmd/clusterctl/client/cluster/template_test.go
  • CHANGELOG/v1.12.1.md
  • .github/workflows/weekly-test-release.yaml
  • CHANGELOG/v1.12.2.md
  • cmd/clusterctl/hack/create-local-repository.py
  • bootstrap/kubeadm/internal/locking/control_plane_init_mutex.go
  • controllers/crdmigrator/test/t3/crd/test.cluster.x-k8s.io_testclusters.yaml
  • CHANGELOG/v1.11.7.md
  • CHANGELOG/v1.12.4.md
🚧 Files skipped from review as they are similar to previous changes (79)
  • cmd/clusterctl/client/config_test.go
  • bootstrap/kubeadm/config/crd/patches/webhook_in_kubeadmconfigtemplates.yaml
  • CHANGELOG/v1.10.10.md
  • CHANGELOG/v1.11.5.md
  • cmd/clusterctl/client/cluster/cert_manager_test.go
  • config/crd/patches/webhook_in_clusterclasses.yaml
  • config/crd/patches/webhook_in_machinedrainrules.yaml
  • config/crd/patches/webhook_in_ipaddressclaims.yaml
  • config/crd/patches/webhook_in_machines.yaml
  • bootstrap/kubeadm/config/manager/manager.yaml
  • api/ipam/v1alpha1/conversion.go
  • config/crd/patches/webhook_in_extensionconfigs.yaml
  • bootstrap/kubeadm/internal/cloudinit/utils.go
  • Dockerfile
  • api/core/v1beta1/machinehealthcheck_types.go
  • bootstrap/kubeadm/internal/cloudinit/disk_setup.go
  • cmd/clusterctl/cmd/version_checker.go
  • controllers/clustercache/cluster_cache_test.go
  • api/core/v1beta2/common_types.go
  • cmd/clusterctl/client/repository/repository_github.go
  • controllers/crdmigrator/crd_migrator.go
  • config/crd/patches/webhook_in_clusterresourcesets.yaml
  • api/controlplane/kubeadm/v1beta1/kubeadmcontrolplanetemplate_types.go
  • cmd/clusterctl/internal/test/fake_reader.go
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfig_test.go
  • cmd/clusterctl/cmd/describe_cluster.go
  • config/crd/patches/webhook_in_clusterresourcesetbindings.yaml
  • api/core/v1beta2/clusterclass_types.go
  • api/controlplane/kubeadm/v1beta1/kubeadm_control_plane_types.go
  • cmd/clusterctl/client/upgrade.go
  • api/controlplane/kubeadm/v1beta2/kubeadmcontrolplanetemplate_types.go
  • api/core/v1beta2/machine_types.go
  • config/crd/patches/webhook_in_clusters.yaml
  • .golangci-kal.yml
  • api/core/v1beta1/common_types.go
  • bootstrap/kubeadm/internal/cloudinit/cloudinit_test.go
  • api/bootstrap/kubeadm/v1beta1/kubeadmconfig_types.go
  • config/metrics/crd-metrics-config.yaml
  • bootstrap/util/configowner_test.go
  • cmd/clusterctl/client/config/imagemeta_client_test.go
  • api/core/v1beta1/conversion_test.go
  • api/controlplane/kubeadm/v1beta1/conversion.go
  • bootstrap/kubeadm/internal/setup/setup.go
  • bootstrap/kubeadm/internal/controllers/suite_test.go
  • api/runtime/hooks/v1alpha1/topologymutation_variable_types.go
  • api/core/v1beta1/machine_types.go
  • api/core/v1beta1/cluster_types.go
  • api/bootstrap/kubeadm/v1beta1/kubeadm_types.go
  • cmd/clusterctl/internal/test/fake_github.go
  • .github/workflows/weekly-security-scan.yaml
  • api/runtime/hooks/v1alpha1/topologymutation_types.go
  • controllers/clustercache/cluster_accessor_client.go
  • config/crd/bases/runtime.cluster.x-k8s.io_extensionconfigs.yaml
  • api/bootstrap/kubeadm/v1beta1/conversion.go
  • api/core/v1beta2/cluster_types.go
  • cmd/clusterctl/cmd/upgrade_apply.go
  • .github/workflows/release.yaml
  • config/crd/bases/cluster.x-k8s.io_machinedeployments.yaml
  • .golangci.yml
  • api/bootstrap/kubeadm/v1beta2/kubeadmconfig_types.go
  • api/controlplane/kubeadm/v1beta2/kubeadm_control_plane_types.go
  • config/crd/bases/addons.cluster.x-k8s.io_clusterresourcesetbindings.yaml
  • api/core/v1beta1/clusterclass_types.go
  • cmd/clusterctl/client/cluster/upgrader.go
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfigtemplate.go
  • cmd/clusterctl/client/cluster/template.go
  • config/crd/bases/cluster.x-k8s.io_machinehealthchecks.yaml
  • api/runtime/hooks/v1alpha1/lifecyclehooks_types.go
  • controllers/clustercache/cluster_accessor.go
  • cmd/clusterctl/Dockerfile
  • config/crd/bases/cluster.x-k8s.io_machinepools.yaml
  • bootstrap/kubeadm/internal/webhooks/kubeadmconfig.go
  • config/crd/bases/cluster.x-k8s.io_machinesets.yaml
  • bootstrap/kubeadm/main.go
  • controllers/clustercache/cluster_cache.go
  • bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go
  • config/crd/bases/cluster.x-k8s.io_clusters.yaml
  • config/crd/bases/cluster.x-k8s.io_machines.yaml
  • config/crd/bases/cluster.x-k8s.io_clusterclasses.yaml

Comment thread Makefile
Comment on lines +180 to +183
GOVULNCHECK_VER := v1.3.0
GOVULNCHECK := $(abspath $(TOOLS_BIN_DIR)/$(GOVULNCHECK_BIN))
GOVULNCHECK_DIR := hack/tools/govulncheck
GOVULNCHECK_TMP_DIR ?= $(GOVULNCHECK_DIR)/govulncheck.tmp
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n 'GOVULNCHECK_VER|GOVULNCHECK :=|verify-govulncheck:|\\.PHONY:.*GOVULNCHECK|go build -C .*govulncheck' Makefile

Repository: openshift/cluster-api

Length of output: 681


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Find GOVULNCHECK_BIN definition
echo "=== GOVULNCHECK_BIN definition ==="
rg -n 'GOVULNCHECK_BIN\s*:=' Makefile

# Check if verify-govulncheck is marked .PHONY
echo "=== .PHONY declarations involving GOVULNCHECK ==="
rg -B 5 'verify-govulncheck:' Makefile | head -20

# Find the build target containing line 1534
echo "=== Build target structure around line 1534 ==="
sed -n '1510,1540p' Makefile | cat -n

Repository: openshift/cluster-api

Length of output: 1864


Avoid stale govulncheck binaries across version bumps.

Line 181 defines a versionless tool path, and the $(GOVULNCHECK) build target (lines 1520–1534) outputs to that same versionless path. Since $(GOVULNCHECK) is a file target with no explicit prerequisites tracking GOVULNCHECK_VER, Make considers an existing binary up-to-date and skips rebuilding when the version changes. This allows verify-govulncheck to use an outdated scanner.

Proposed fix:

🔧 Solution
-GOVULNCHECK := $(abspath $(TOOLS_BIN_DIR)/$(GOVULNCHECK_BIN))
+GOVULNCHECK := $(abspath $(TOOLS_BIN_DIR)/$(GOVULNCHECK_BIN)-$(GOVULNCHECK_VER))

And update the build output path to match:

-	go build -C $(GOVULNCHECK_TMP_DIR) -o $(TOOLS_BIN_DIR)/$(GOVULNCHECK_BIN) ./cmd/govulncheck
+	go build -C $(GOVULNCHECK_TMP_DIR) -o $(GOVULNCHECK) ./cmd/govulncheck
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` around lines 180 - 183, The GOVULNCHECK target uses a versionless
path so Make doesn't rebuild when GOVULNCHECK_VER changes; change the
GOVULNCHECK variable and the build recipe to produce a versioned binary (e.g.,
include $(GOVULNCHECK_VER) in the filename or directory) and make the
$(GOVULNCHECK) file target depend on GOVULNCHECK_VER (or use the versioned
filename as the target), then update any references (including
verify-govulncheck) to point to the new versioned path so bumps to
GOVULNCHECK_VER force a rebuild of the scanner.

cloud-team-rebase-bot and others added 21 commits May 18, 2026 12:09
Squash follow-up OWNERS sync into the initial OpenShift-specific carry since it
updates the same initial ownership surface.

# Conflicts:
#	.github/workflows/pr-dependabot.yaml
#	.github/workflows/pr-golangci-lint.yaml
#	.github/workflows/pr-verify.yaml
#	OWNERS_ALIASES
Squash the OWNERS-only carries into a single update to keep ownership churn in
one focused commit.
Squash adjacent changes that iterate on OpenShift manifest tooling and
metadata sync behavior in the same Makefile-driven flow.
Squash adjacent Dockerfile updates that refine the 4.21 image carry and
manager binary naming.
Squash adjacent toolchain updates touching openshift/tools so kustomize
alignment and IPAM pinning are applied together.
…olicy: Ignore

Add functions to set the failurePolicy to Ignore for both mutating and validating webhooks handling IPAM resources.

During bootstrap, the bootstrap node's Kube API Server receives IPAM create requests but is unable
to reach the webhooks in the Cluster API namespace.

This is because the bootstrap node doesn't have a route to the pods as it doesn't have access to the pod networks.
If failurePolicy is set to Fail, the KAS cannot reach the webhook endpoints and the request fails, preventing creation of IPAddress and IPAddressClaim resources.

This causes a chicken-and-egg problem as it prevents IPAM provisioning
for the workers which won't start without their IP addresses being allocated.

Setting failurePolicy to Ignore allows the resources to be created even when the webhooks are
unreachable during bootstrap, matching what Machine API also does.

More context: https://redhat-internal.slack.com/archives/C0A2M43S199/p1765540108488539
Squash ART image consistency updates into a single carry commit.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Squash adjacent carries that iterate over OpenShift manifests generation,
IPAM kustomization, and Dockerfile image consistency.
… upstream rebase

Squash the post-rebase regeneration steps into a single carry commit so the
PR keeps one coherent update for generated manifests and dependency vendoring.
@cloud-team-bot cloud-team-bot Bot force-pushed the rebase-bot-master branch from fcbd711 to df52f1a Compare May 18, 2026 12:12
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 18, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: cloud-team-rebase-bot[bot]
Once this PR has been reviewed and has the lgtm label, please assign mdbooth for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 18, 2026

@cloud-team-rebase-bot[bot]: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-azure-capi-techpreview df52f1a link true /test e2e-azure-capi-techpreview
ci/prow/e2e-aws-ovn df52f1a link true /test e2e-aws-ovn
ci/prow/e2e-hypershift df52f1a link true /test e2e-hypershift

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. ok-to-test Indicates a non-member PR verified by an org member that is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.