Skip to content

Latest commit

 

History

History
122 lines (105 loc) · 6.46 KB

cost-comparison.md

File metadata and controls

122 lines (105 loc) · 6.46 KB

Cost comparison — all providers × options

Monthly cost of the reference dev cluster on every provider and Kubernetes flavour in this repo, plus each provider's plan menu so you can re-size.

Method & caveats

  • Reference dev cluster = 1 control-plane-equivalent (~4 vCPU / 8 GB) + 3 workers (~4 vCPU / 16 GB, the tested mip-infra shape) + ~240 GB data storage
    • public IPs. 3 workers because Argo CD redis-ha needs 3 schedulable nodes.
  • UpCloud figures are exact, computed from the live price API (GET /1.3/price, zone fi-hel2): credits/hr × €0.01 × 730 h.
  • Exoscale & Hetzner figures are estimates from vendor pricing pages (mid-2026) — these stacks are not live-tested. Flagged ⚠️ where a specific number was uncertain at research time.
  • VAT: UpCloud/Exoscale quoted incl. the listed currency basis; Hetzner is EXCL. VAT — add 19% for VAT-liable EU billing.
  • Billing model matters more than sticker price (see notes): UpCloud Cloud Native and all hourly plans stop billing compute when powered off; Hetzner bills stopped-but-not-deleted servers; managed control planes have free dev tiers.
  • OpenShift: no cost row — it's a stub (managed ROSA/ARO or self-hosted OKD would be priced when implemented).

Reference dev cluster — totals (24/7, EUR/month)

Provider × option Control plane 3× workers Storage IPs/other Total 24/7 Tested
Lima (local) self-managed RKE2 (your workstation) 0.00 0.00 0.00 0.00 €0 — needs ≥ 4 free vCPU / ~16 GiB RAM for the default shape ✅
Hetzner self-managed RKE2 (cx33 + 3× cx43) 8.49 47.97 13.73 2.40 ≈ 72.6 ⚠️ excl VAT ⚠️
Hetzner self-managed, ARM (cax21 + 3× cax31) 10.49 62.97 13.73 2.40 ≈ 89.6 ⚠️ excl VAT ⚠️
UpCloud UKS managed (free dev CP + 3× 4xCPU-8GB) 0.00 195.54 incl 3.51 ≈ 199 ✅
UpCloud self-managed RKE2 (CN-4x8 + 3× CN-4x16) 34.76 221.61 52.36 14.04 ≈ 323 ✅
Exoscale SKS managed (free starter CP + 3× extra-large) 0.00 409.53 incl — ≈ 410 ⚠️ ⚠️
Exoscale self-managed RKE2 (large + 3× extra-large) 67.89 409.53 24.00 ~few ≈ 501 ⚠️ ⚠️

Same cluster, dev usage with power-off (~176 h/mo ≈ 8 h × 22 workdays), where the billing model allows it:

Provider × option Total (dev usage) Why
UpCloud self-managed RKE2 ≈ 128 Cloud Native compute billed only while on; storage + IPv4 bill 24/7. make down overnight.
UpCloud UKS ≈ 150–200 scale node group to 0 to save (deletes/recreates nodes); free CP already
Hetzner self-managed ≈ 73 (no saving) Hetzner bills stopped servers; delete to save. Already cheapest 24/7.
Exoscale (either) ≈ 410–500 (little saving) premium instance pricing dominates

Ranking for a dev cluster: Hetzner self-managed is ~4× cheaper than UpCloud self-managed and ~7× cheaper than Exoscale, and its "workers" are actually 8 vCPU. UpCloud wins on the power-off workflow (clean stop/resume with preserved IPs) and is the tested, production-faithful option. UKS (free control plane) roughly halves UpCloud self-managed at 24/7. Exoscale is the premium option (Swiss data residency is its selling point).

Per-provider plan menus

UpCloud (fi-hel2, exact from price API; €/mo = credits/hr × €0.01 × 730)

Plan vCPU RAM €/mo Notes
CLOUDNATIVE-2xCPU-4GB 2 4 16.29 hourly, no storage included
CLOUDNATIVE-2xCPU-8GB 2 8 26.07 hourly
CLOUDNATIVE-4xCPU-8GB 4 8 34.76 hourly (tested CP)
CLOUDNATIVE-4xCPU-16GB 4 16 73.87 hourly (tested worker)
2xCPU-4GB (general) 2 4 32.59 storage included; UKS node option
4xCPU-8GB (general) 4 8 65.18 storage included; UKS node option
Block storage — MaxIOPS 0.23 /GB
Block storage — Standard 0.09 /GB Longhorn data
Public IPv4 3.51 per address
UKS control plane — Development 0 non-HA, ≤30 nodes
UKS control plane — Production 60.83 HA, hourly

Exoscale (ch-gva-2, estimates, excl VAT)

Plan (type) vCPU RAM €/mo
standard.medium 2 4 34.31
standard.large 4 8 67.89
standard.extra-large 4 16 136.51
standard.huge 8 32 ~270
Block storage ~0.10 /GB ⚠️
NLB (network LB) ~25
SKS control plane — Starter 0 (non-HA)
SKS control plane — Pro ~30 ⚠️ (HA + SLA)

Hetzner (estimates, excl VAT — add 19%, post-June-2026)

Plan (server_type) vCPU RAM Disk €/mo
cx23 2 4 40 5.49
cx33 4 8 80 8.49
cx43 8 16 160 15.99
cx53 16 32 320 29.49
cax21 (ARM) 4 8 80 10.49
cax31 (ARM) 8 16 160 20.99
cpx42 (AMD) 8 16 320 69.49
ccx23 (dedicated) 4 16 160 85.99
Volume 0.0572 /GB
Primary IPv4 ~0.50–0.71 ⚠️
Load balancer LB11 ~7.49 ⚠️
Managed Kubernetes N/A — Hetzner has none
Traffic 20 TB/server included, then €1/TB

Notes that change the decision

  • Hetzner has no managed Kubernetes — its only options are self-managed (our hetzner-rke2, or the kube-hetzner module). No managed row exists.
  • Free managed control planes (UpCloud UKS dev, Exoscale SKS starter) make managed cheaper than self-managed on the same cloud for dev, because you drop a whole control-plane node and its storage. The trade-off is the fidelity gap documented in why-self-managed.md (Cilium, no RKE2, managed-LB vs MetalLB).
  • The power-off workflow only pays off on UpCloud in this repo — it's why the tested stack uses Cloud Native plans. Elsewhere, delete-and-recreate is the cost lever.
  • Storage inclusion differs: UpCloud Cloud Native plans include no disk (you add block storage — hence the storage column); general/UKS plans and Hetzner/Exoscale instances include a root disk, so only the extra Longhorn/data volume is charged.
  • All estimates should be re-checked on the vendor calculators before budgeting: UpCloud · Exoscale · Hetzner (and apply VAT).