Skip to content

Cluster join

Topology Control nodes Workers
single_node 1 none
ha_3_node 3 0+ optional
Phase Meaning
Pending CR created
ScriptIssued Bootstrap tarball + WG peers ready
Enrolled Nodes called enrollment API
Validated Local K3s playbooks succeeded
Provisioning Hub Ansible Job (OCM join, platform MW)
Ready ManagedCluster Available; edge registry upserted

Reconciler allocates overlay /32s, generates wg-umkim configs, builds bootstrap.sh tarball in Secret fleet-cluster-{name}-bootstrap, optional kubevirt bridge script, enrollment token.

sudo ./bootstrap.sh installs packages, brings up WireGuard, enrolls, installs SSH mesh keys, runs local Ansible for K3s + Calico (+ optional storage), posts progress → Validated.

Nodes are a working K3s cluster on the management LAN with overlay connectivity, but not yet an OCM spoke.

POST /clusters/{name}/provision starts Job fleet-cluster-provision-{name}:

  1. clusteradm join on bootstrap node
  2. Spoke ingress bootstrap (Traefik NodePorts) when enabled
  3. Hub: accept ManagedCluster, approve CSRs, labels, phase4-platform-bootstrap and phase6-spoke-ingress ManifestWorks
  4. Upsert fleet-edge-clusters; begin overlay health probes → Ready

DELETE /fleet/api/v1alpha1/clusters/{name} — async (202). Default detach keeps K3s and user workloads; removes OCM registration, ManifestWorks, hub WG peers, edge entry, and FCJ CR. Optional cleanupKubernetes=true resets K3s on nodes.