Skip to content

CanUpdateMachine is not being called for v1beta1 api #13257

@kotyara85

Description

@kotyara85

What steps did you take and what happened?

Hey there,
We're running a deprecated apis v1beta1 with v1.12.2
The extension is registered correctly, but cp controller fails to connect to capi-core -

I only see CanUpdateMachineSet, but not CanUpdateMachine and UpdateMachine

Here's the extension -

apiVersion: v1
items:
- apiVersion: runtime.cluster.x-k8s.io/v1beta2
  kind: ExtensionConfig
  metadata:
    annotations:
      kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"runtime.cluster.x-k8s.io/v1beta2","kind":"ExtensionConfig","metadata":{"annotations":{"runtime.cluster.x-k8s.io/inject-ca-from-secret":"capi-system/default"},"name":"capi-runtime-extension"},"spec":{"clientConfig":{"service":{"name":"capi-runtime-extension","namespace":"capi-system","port":9443}},"namespaceSelector":{"matchExpressions":[{"key":"kubernetes.io/metadata.name","operator":"In","values":["cluster-local-stage-demo"]}]}}}
      runtime.cluster.x-k8s.io/inject-ca-from-secret: capi-system/default
    creationTimestamp: "2026-01-22T04:01:38Z"
    generation: 2
    name: capi-runtime-extension
    resourceVersion: "2005994"
    uid: 591d4b4f-f7a7-4bff-add3-733fb50e272e
  spec:
    clientConfig:
      caBundle: <REDACTED>
      service:
        name: capi-runtime-extension
        namespace: capi-system
        port: 9443
    namespaceSelector:
      matchExpressions:
      - key: kubernetes.io/metadata.name
        operator: In
        values:
        - cluster-local-stage-demo
  status:
    conditions:
    - lastTransitionTime: "2026-01-22T04:01:38Z"
      message: ""
      observedGeneration: 2
      reason: Discovered
      status: "True"
      type: Discovered
    - lastTransitionTime: "2026-01-22T04:01:38Z"
      message: ""
      observedGeneration: 2
      reason: NotPaused
      status: "False"
      type: Paused
    deprecated:
      v1beta1:
        conditions:
        - lastTransitionTime: "2026-01-22T04:01:38Z"
          status: "True"
          type: Discovered
    handlers:
    - failurePolicy: Fail
      name: can-update-machine.capi-runtime-extension
      requestHook:
        apiVersion: hooks.runtime.cluster.x-k8s.io/v1alpha1
        hook: CanUpdateMachine
      timeoutSeconds: 10
    - failurePolicy: Fail
      name: can-update-machineset.capi-runtime-extension
      requestHook:
        apiVersion: hooks.runtime.cluster.x-k8s.io/v1alpha1
        hook: CanUpdateMachineSet
      timeoutSeconds: 10
    - failurePolicy: Fail
      name: update-machine.capi-runtime-extension
      requestHook:
        apiVersion: hooks.runtime.cluster.x-k8s.io/v1alpha1
        hook: UpdateMachine
      timeoutSeconds: 10
    - failurePolicy: Fail
      name: before-cluster-upgrade.capi-runtime-extension
      requestHook:
        apiVersion: hooks.runtime.cluster.x-k8s.io/v1alpha1
        hook: BeforeClusterUpgrade
      timeoutSeconds: 10
kind: List
metadata:
  resourceVersion: ""

What did you expect to happen?

Call to webhook work

Cluster API version

v1.12.2

Kubernetes version

1.34.4

Anything else you would like to add?

No response

Label(s) to be applied

/kind bug
One or more /area label. See https://github.com/kubernetes-sigs/cluster-api/labels?q=area for the list of labels.

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.needs-priorityIndicates an issue lacks a `priority/foo` label and requires one.needs-triageIndicates an issue or PR lacks a `triage/foo` label and requires one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions