Files
PFVCluster/docs/k8s
mrcharles 174deea2a9 docs(k8s): add Talos architecture, distro decision, and bootstrap plan
Author the docs/k8s/ directory capturing the pfv-k8s control-plane design:

- README.md: TL;DR of all decisions (distro, runtime, cnode count, admin
  access, identity, tenancy, registry, storage)
- DISTRO-DECISION.md: Talos vs k3s analysis. Recommend Talos because the
  ITAR/classified requirement makes its immutable, API-only, measured-boot
  posture structurally easier to certify than SCAP-hardened Debian. k3s was
  only ever a plan (no cluster deployed), so cutover cost is ~zero.
- ARCHITECTURE.md: target arch with mermaid diagrams covering control
  plane, LAN-only network with Tailscale subnet-router admin, Cilium CNI,
  OIDC to Keycloak, per-tenant vcluster isolation (incl. ITAR tenant),
  Harbor pull-through cache on D3 SSD, bootstrap sequence, and DR.

Gardening: register docs/k8s/ in docmap.md, update STATUS.md with the new
k8s section and the three pending user decisions (cnode count, host spread,
Tailscale pattern).

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-07-28 11:50:56 -05:00
..

Kubernetes Architecture & Build Plan

Status: Draft for review. Companion to ../proxmox/K8S.md (which captured the storage/host analysis from the Proxmox audit). This directory takes the next step: which distro, how to build it, how to operate it.

Last updated: 2026-07-28

Documents in this directory

Document Purpose
DISTRO-DECISION.md Talos vs k3s analysis. Recommendation: Talos, with rationale grounded in the ITAR/classified requirement.
ARCHITECTURE.md Target architecture: control plane, network, identity, storage, tenant isolation. Mermaid diagrams included.

TL;DR

Decision Recommendation Why
Distro Talos Linux (not k3s) Immutable, API-only, measured-boot-capable. Intrinsically close to a STIG/CIS posture, where k3s-on-Debian requires constant re-certification. The k3s plan was reasonable before the ITAR/classified requirement was on the table.
Runtime containerd (Talos default) Only runtime Talos supports; also the secure default. Non-decision.
Cnode count 3 (down from 5) Standard HA. Tolerates 1 failure. Frees 2 VMs for tenant worker capacity. Re-evaluate if a regulator mandates 5.
Admin access Tailscale subnet router on existing tailscale-router VM Cluster nodes stay LAN-only (no internet egress = stronger ITAR posture). Operator reaches Talos API from anywhere via Tailscale.
Cluster network LAN mTLS only All cnode/wnode traffic on Proxmox LAN. No Tailscale on cluster nodes themselves.
Identity OIDC to Keycloak on Cloudron (production) Already planned. Talos API + Kubernetes API both trust Keycloak tokens.
Multi-tenancy vcluster (per tenant) inside Talos host cluster Strong workload isolation. One vcluster per tenant: ITAR, non-ITAR, SLP, RackRental.
Local registry Harbor on D3 SSD (tsys5, 445 GB free) Avoids needless round-trips to Docker Hub / Cloudron. Adds image-signing (Cosign) capability for supply-chain integrity.
Storage classes local-fast, nfs-hdd, nfs-ssd Per ../proxmox/K8S.md §6. Unchanged.

What this directory does NOT cover (deferred)

  • ETL tooling choice (GDAL/PostGIS/xarray/Dask) — affects RWX vs RWO design.
  • HPC job scheduler (Jobs / Argo Workflows / Volcano) — affects taint/label strategy.
  • vcluster per-tenant policy templates.
  • Solar-aware scale-out (PowerEdge 19xx/2950 hosts) — capacity planning only.

These are tracked as future session work in ../../STATUS.md.

Open question for the user

  1. Cnode count: confirm 3 vs 5. Recommendation is 3 (rationale in ARCHITECTURE.md §2). If your ITAR counsel requires 2-failure tolerance on the control plane, keep 5.