Skip to content

Core-infra sizing and scaling

This documents the target portable K3s profiles. It does not describe the current AKS core-infra shape.

Scope

First target: core-services-single, one private K3s server VM for Forgejo, Harbor, OpenBao, Envoy Gateway, Cilium, cert-manager, Tailscale, backup tooling, and a small number of core operators. This is intended to be a stable core-services cluster that can run for months with only routine dependency updates. No platform app workloads.

Compute requirements

Vendor docs use GB. The resulting VM sizes below use GiB as the infrastructure target unit.

Service Published CPU minimum Published memory minimum Reference Notes
K3s server 2 cores 2 GB K3s requirements Baseline only. Workloads are excluded. K3s server sizing also lists 2 CPU / 4 GB for 0-350 agents.
K3s server with simple workload 6% of 1 core in test 1596 MB with SQLite/Kine K3s resource profiling Test included K3s packaged components, monitoring, and example app. It excludes our workloads, image management overhead, logging, and management agents.
Harbor 2 CPU 4 GB Harbor prerequisites Harbor recommended is 4 CPU / 8 GB. This is the largest published numeric requirement in this stack.
Forgejo Not published Not published Forgejo recommendations, Forgejo Docker install Official docs give database and data-volume guidance, not fixed CPU/RAM minimums. PostgreSQL or MySQL is recommended for high activity.
OpenBao Not published Not published OpenBao storage, OpenBao Raft, OpenBao Helm modes Official docs give storage-mode guidance, not fixed CPU/RAM minimums. For Raft, avoid burstable CPU/storage and use SSD-backed storage.

Math:

Basis CPU Memory Interpretation
Published hard minimum subtotal, K3s server + Harbor minimum 4 CPU 6 GB Leaves Forgejo, OpenBao, controllers, logs, and image pulls unbudgeted.
Published recommended subtotal, K3s 0-350 agent sizing + Harbor recommended 6 CPU 12 GB Still excludes Forgejo/OpenBao/controllers. Round up for operational headroom.

Storage requirements

Service or volume Published minimum Published recommended Reference Core core-services-single target
K3s datastore/root disk Not published SSD recommended K3s requirements, K3s resource profiling 80-100 GiB root disk
Harbor 40 GB 160 GB Harbor prerequisites 160 GiB registry PV
Forgejo Not published Not published Forgejo Docker install 50 GiB minimum, 100 GiB preferred
OpenBao data and audit Not published SSD, non-burstable storage for Raft OpenBao storage, OpenBao Raft 30 GiB minimum, 50 GiB preferred

Resulting VM sizes

Profile VM size Storage Use
Minimum first core VM 4 vCPU / 8 GiB RAM 100 GiB root, 160 GiB Harbor, 100 GiB Forgejo, 30-50 GiB OpenBao Use only if runners and Harbor scanning are off-node or rare. Leaves less operational headroom.
Recommended first core VM 8 vCPU / 16 GiB RAM 100 GiB root, 160 GiB Harbor, 100 GiB Forgejo, 30-50 GiB OpenBao Default for a stable setup that should run for months with minimal resizing.
core-services-ha starter 3 servers, 2-4 vCPU / 4-8 GiB RAM each SSD-backed state and explicit workload PVs Only if workloads run mostly on separate agents.
core-services-ha with workloads on servers 3 servers, 4-8 vCPU / 8-16 GiB RAM each SSD-backed state and explicit workload PVs Use when core workloads can run on server nodes.

Scale-up triggers

  • Move runners off the server VM when builds compete with Harbor, Forgejo, or K3s.
  • Move Harbor blobs to object storage before local registry backup/restore becomes slow.
  • Leave core-services-single when OpenBao becomes a production runtime dependency.
  • Promote to HA when core service RTO/RPO cannot tolerate single-VM restore time.