Skip to content

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.

  1. Wait for the controller to issue the bootstrap material.
  2. Download the bundle only through the authenticated console, or use umkim cluster bootstrap.
  3. Treat the archive as sensitive: it contains enrollment material and must not be committed, pasted into tickets, or served from an unauthenticated location.
  4. Transfer it through an approved channel, run sudo ./bootstrap.sh on the first Rocky Linux 10 control node, and inspect the reported status.
  5. When validation completes, select Provision in the console (or umkim cluster provision).
  6. 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.