What steps did you take and what happened:
After migrating from infrastructure.cluster.x-k8s.io/v1alpha1 to v1alpha2, existing ProxmoxMachine objects no longer have status.addresses populated. As a result, Machine.status.addresses is also null, causing the RKE2 bootstrap controller to loop indefinitely on:
"No ControlPlane IP Address found for node registration"
This blocks every rolling update step — new VMs are never created in Proxmox because bootstrap data is never generated.
What did you expect to happen:
After migration to v1alpha2, CAPMOX should re-reconcile existing ProxmoxMachine objects and repopulate status.addresses automatically.
Environment:
- Proxmox version: 9.1.1
- Cluster-api-provider-proxmox version: v1.12.5
- Kubernetes version: (use
kubectl version): v1.34.4+rke2r1
- OS (e.g. from
/etc/os-release): Ubuntu 24.04.4 LTS
- CAPMOX version: v0.8.0 (ghcr.io/ionos-cloud/cluster-api-provider-proxmox:v0.8.0)
- CAPI version: v1beta2
- Bootstrap provider: RKE2 with registrationMethod: internal-first
- Trigger: migration of existing cluster from v1alpha1 → v1alpha2
Steps to reproduce
- Have a running cluster provisioned with CAPMOX v1alpha1
- Upgrade CAPMOX to v0.8.0 (which adds v1alpha2 support)
- Update manifests to use infrastructure.cluster.x-k8s.io/v1alpha2
- Trigger a rolling update (e.g. change a ProxmoxMachineTemplate field)
- Observe ProxmoxMachine.status.addresses is null on existing machines
kubectl get proxmoxmachine -n <namespace> -o json | \
jq '.items[] | {name: .metadata.name, addresses: .status.addresses}'
# → all null
Root cause
CAPMOX does not re-reconcile existing ProxmoxMachine objects after the API version migration. The status.addresses field is never populated unless a reconciliation is explicitly triggered
Workaround
Manually annotate each ProxmoxMachine to force reconciliation, then patch Machine.status.addresses:
kubectl annotate proxmoxmachine <name> -n <namespace> \
reconcile.cluster.x-k8s.io/requestedAt="$(date -u +%Y-%m-%dT%H:%M:%SZ)" --overwrite
kubectl patch machine <name> -n <namespace> \
--subresource=status --type=merge \
-p '{"status":{"addresses":[{"address":"<IP>","type":"InternalIP"}]}}'
What steps did you take and what happened:
After migrating from infrastructure.cluster.x-k8s.io/v1alpha1 to v1alpha2, existing ProxmoxMachine objects no longer have status.addresses populated. As a result, Machine.status.addresses is also null, causing the RKE2 bootstrap controller to loop indefinitely on:
"No ControlPlane IP Address found for node registration"
This blocks every rolling update step — new VMs are never created in Proxmox because bootstrap data is never generated.
What did you expect to happen:
After migration to v1alpha2, CAPMOX should re-reconcile existing ProxmoxMachine objects and repopulate status.addresses automatically.
Environment:
kubectl version): v1.34.4+rke2r1/etc/os-release): Ubuntu 24.04.4 LTSSteps to reproduce
Root cause
CAPMOX does not re-reconcile existing ProxmoxMachine objects after the API version migration. The status.addresses field is never populated unless a reconciliation is explicitly triggered
Workaround
Manually annotate each ProxmoxMachine to force reconciliation, then patch Machine.status.addresses: