Architecture

Three console layers sit on one physical hub. Workload clusters are never K3s agents of the hub — they register to OCM over WireGuard and receive platform bits via ManifestWork.

UMKIM fleet architectureHUBK3s · OCM · DCM · HarborConsole · fleet-site · fleet-edgenot a ManagedClusterWireGuard overlaySITE AFleetSite · DNS zones · exposureCluster (K3s + OCM)FleetClusterJoin → ReadyCluster (K3s + OCM)providers · ManifestWorkSITE BFleetSite · placement regionCluster (K3s + OCM)spoke Traefik NodePortApp via FleetAppRoutehub Traefik → overlay → spoke

Layers

LayerObjectRole
InfrastructureHub inventory hostK3s, OCM, DCM, Harbor, console, controllers — not a ManagedCluster
SiteFleetSiteLogical datacenter: DNS zones, WAN exposure, region metadata
ClusterManagedCluster + FleetClusterJoinStandalone K3s data plane, fleet.site label, capabilities, ingress

Network planes

Each node has a management LAN address for the K3s API, etcd, and Calico. Greenfield clusters also run wg-umkim — a /32 on the fleet overlay so the hub reaches spoke NodePorts without public routing. DCM service providers listen on NodePorts on that overlay IP.

Controllers on the hub

ControllerRole
fleet-siteSites, FleetClusterJoin bootstrap, edge ConfigMaps, provider jobs; backup/restore CRs (unstable)
fleet-edgeFleetAppRoute reconcile: hub Traefik fragments, spoke Ingress ManifestWorks, ACME
fleet-edge-route-syncPolls DCM catalog instances → creates/updates/prunes FleetAppRoute
fleet-failover-controllerStandby failover: patches FleetAppRoute.status.activeCluster
fleet-console-authSession RBAC, org quotas, proxy to DCM and fleet-site APIs

Deep dives live on the docs site: fleet model, network planes, hub install lifecycle.