Create a cluster
Create a FleetClusterJoin (FCJ) in the authenticated console (or with umkim cluster create) and attach it to a registry site. Choose the topology, nodes, and storage intent.
- Wait for the controller to issue the bootstrap material.
- Download the bundle only through the authenticated console, or use
umkim cluster bootstrap. - Treat the archive as sensitive: it contains enrollment material and must not be committed, pasted into tickets, or served from an unauthenticated location.
- Transfer it through an approved channel, run
sudo ./bootstrap.shon the first Rocky Linux 10 control node, and inspect the reported status. - When validation completes, select Provision in the console (or
umkim cluster provision). - When the cluster is Ready, bind a site ingress id if needed (
umkim cluster patch --ingress-id), then install Helm charts with FleetApp onto that cluster.
The public phase sequence is Pending → ScriptIssued → Enrolled → Validated → Provisioning → Ready. Do not retry a partial run without first inspecting the cluster and controller state.
On Ready single-node clusters, enable local RWX later via Operations or umkim cluster storage enable-local (see cluster storage). Enable KubeVirt at create or after Ready via Operations or umkim cluster platform enable-kubevirt (see Fleet KubeVirt platform).
HA clusters (ha_3_node): bootstrap on three nodes often takes ~20 minutes; hub finalize can run up to 90 minutes. Use umkim cluster wait --timeout 90m (default poll is 30 minutes).
To remove a cluster from the hub without wiping workloads, delete it with the default detach mode. Full K3s reset is opt-in (cleanupKubernetes=true). See playbooks/flows/cluster-delete.yml.
See the cluster-join lifecycle for phase meaning and deletion behavior.