Build1 distinct publisher3 min readPublished
An RKE2 hub-and-spoke design runs Prometheus, Harbor, Vault and ArgoCD once for four clusters and documents in-cluster failover carefully, while the hub's own sizing and outage behaviour stay unwritten.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The taint is where this trade actually lands. The hub serves one tenant, itself, so it gets a single worker node, and the masters absorb whatever that worker cannot hold once the NoSchedule taint comes off [9]. The hub's tenant list is Prometheus, Grafana, Loki, ArgoCD, Harbor and Vault [1]. If the overflow is the log store and the registry, the three nodes running etcd are also serving image pushes and chunk writes. There is no resource figure to check that against: the only nodes sized anywhere in the write-up are the HAProxy pair at 1C/2G/30G each [7].
Two prep steps sharpen it. Swap is off across masters and workers, and the stated reason is that kubelet will not start with it enabled [19]. On an untainted hub master, that means a memory spike gets resolved by the kernel killing something on a box that also holds an etcd member. Then ufw is stopped and disabled [20], on every master and worker but not on the haproxy nodes, which never run the prep [18]. Consolidation puts the platform's secrets and images on those same nodes [4][5], with no host packet filter left in front of them. Disabling the host firewall is the cheapest line in any runbook and the one most likely to come back at review.
The roughly four-second VIP move is a claim about this author's Keepalived configuration, not a property of the pattern [13]. For the number to transfer, your VRRP advert interval and your haproxy health check have to match theirs, and it only ever covers the load balancer tier of one cluster. Every failure mode documented here sits inside a single cluster [28]. What a hub outage does to the spokes is not written down, and the dependencies are explicit: spoke image pulls go to hub Harbor [4], spoke secrets arrive from hub Vault through agents or sidecar injectors [5], and spoke deploys come from hub ArgoCD [6].
Count the machines. Hub: two HAProxy, three masters, one worker. Each spoke: two HAProxy, three masters, and eight workers, since the spoke worker range runs 01 to 08 at .80 through .87 [15][24]. Three byte-for-byte identical spokes [11] plus the hub is 45 nodes [25]. The claimed saving is 4x infrastructure, 4x maintenance and 4x dashboards [2]. Across four clusters, running the stack once removes three of the four copies, or 75 percent [27]. The copy that survives is the one carrying four clusters' metrics, logs and images, and it is the copy with one worker.
What is explicit here is genuinely explicit. Identical spoke topology means one template rather than three near-duplicates [11]. Each cluster gets its own join token, with reuse across clusters ruled out [17], so the one thing deliberately not shared is the credential that would make consolidation a blast radius. The network prep explains each knob instead of listing it, down to pod traffic stopping at the node boundary without ip_forward [22]. The consolidation trade is the part still asserted rather than sized. Two numbers would settle it: CPU and memory for the untainted hub masters, and a written answer for what a spoke can still do with the hub gone.
Ranked by verification strength, evidence, and original report placement.
The hub only needs to run shared tooling for one tenant, itself, so it gets a single worker node, and the masters pick up the slack once the NoSchedule taint is lifted.
The prep stops and disables ufw on the nodes it covers.
Instead of duplicating monitoring stacks, container registries, secret managers and GitOps controllers in every cluster, the design runs Prometheus, Grafana, Loki, ArgoCD, Harbor and Vault once in a central hub cluster, with all spoke clusters connected back to it.
Spoke clusters ship metrics to the hub via remote-write Prometheus and logs via Promtail to a central Loki, giving one Grafana and one set of dashboards covering all clusters.
Harbor runs in the hub, all spoke clusters pull images from that one place, and one vulnerability scan covers everything.
Vault runs in the hub with agents or sidecar injectors in each spoke, so a secret rotated once propagates everywhere.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 3, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Deleting kube-proxy moves your service traffic where your SIEM cannot follow it1 distinct publisher
build
One alert, two causes, four green dashboards: the day the stack agreed and was wrong1 distinct publisher
product
150 Jenkins masters, one control plane: the fix for CI sprawl was not a migration1 distinct publisher
product
One team swapped HPA thresholds for a demand forecast after a 45-minute GPU node wait1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Reproducible commands, one witness
The specificity is genuine: exact addresses, exact sysctl values, exact HAProxy backends — a reader could rebuild this from the page. What none of it establishes is behaviour. dev.to's author is describing diagrams drawn while planning, the only verification shown is a post-reboot check that modules loaded and swap is zero, and no metric, log or third party stands behind the failover or savings figures.
Nothing to count
A design document gives us no adoption to weigh. dev.to's post never says whether the four clusters serve traffic, who they serve, how long they have run, or what is deployed through ArgoCD, and no one else has picked the pattern up. Absent even a single operating detail, any number we put here would be invention.
Overstated by omission
Absolutes do the work in the reliability section — kubectl "never breaks", the VIP moves "within ~4 seconds" — while the concentration the design deliberately creates is never examined, and the hub's etcd masters quietly inherit the shared stack once the taint comes off. The savings pitch has the same shape: 4× is stated, the hub's own bill is not. The gap is less exaggeration than a set of missing paragraphs where the hard questions would go.
Reputation, not revenue
A practitioner publishing their own architecture under their own name on dev.to is trading in credibility, and self-authored designs tend to arrive with their strengths itemised and their failure modes implied. But there is no commercial pull anywhere in it: nothing is being sold, every tool named is free to run, and no pricing, licence or benchmark comparison is on the table.
Single-sourced by nature
We can be fairly sure what this design says and barely at all about how it behaves. One publisher, one author, no corroboration, no measurements — and the two things a reader would most want checked, failover timing and hub capacity, are exactly the two nobody has checked.