Cluster join
Topologies
Section titled “Topologies”| Topology | Control nodes | Workers |
|---|---|---|
single_node |
1 | none |
ha_3_node |
3 | 0+ optional |
Phases
Section titled “Phases”| 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 |
A. Issue script
Section titled “A. Issue script”Reconciler allocates overlay /32s, generates wg-umkim configs, builds bootstrap.sh tarball in Secret fleet-cluster-{name}-bootstrap, optional kubevirt bridge script, enrollment token.
B. Bootstrap on nodes
Section titled “B. Bootstrap on nodes”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.
C. Provision
Section titled “C. Provision”POST /clusters/{name}/provision starts Job fleet-cluster-provision-{name}:
clusteradm joinon bootstrap node- Spoke ingress bootstrap (Traefik NodePorts) when enabled
- Hub: accept ManagedCluster, approve CSRs, labels,
phase4-platform-bootstrapandphase6-spoke-ingressManifestWorks - Upsert
fleet-edge-clusters; begin overlay health probes → Ready
Cluster delete
Section titled “Cluster delete”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.