Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Troubleshooting

ClusterClass is rejected

If the API server rejects ClusterClass, KubeadmControlPlaneTemplate, or Cluster.spec.topology, check the CAPI manager feature gates:

kubectl -n capi-system get deployment capi-controller-manager \
  -o jsonpath='{.spec.template.spec.containers[0].args}'

kubectl -n capi-kubeadm-control-plane-system \
  get deployment capi-kubeadm-control-plane-controller-manager \
  -o jsonpath='{.spec.template.spec.containers[0].args}'

Both must include ClusterTopology=true.

Machine waits for bootstrap data

Check the owning Machine and bootstrap Secret:

kubectl describe machine "${MACHINE_NAME}" -n "${NAMESPACE}"
kubectl get secret -n "${NAMESPACE}"

StackitMachine intentionally does not contain user data directly. Bootstrap data comes from the CAPI bootstrap Secret.

STACKIT CLI might also be valueable to check server logs during boot: stackit server log <server-id>

Cloud resources remain after a failed e2e run

Run direct cleanup by e2e tags:

make cleanup-stackit

Then verify no tagged STACKIT VMs or load balancers remain.