vps cluster docs

0008. Use k3s’s bundled Traefik, configured through a HelmChartConfig — do not deploy our own

Context

The cluster needs an ingress controller: it terminates TLS for every public host, routes to services by Ingress, and hosts the KEDA HTTP interceptor’s routes. k3s installs and manages one by default (Traefik, as a packaged Helm chart in kube-system, reconciled by k3s itself with failurePolicy: reinstall).

The question is whether to accept that or take ownership of the controller, which is the usual recommendation for a production cluster: you want to pin the version and not have your ingress change under you when the node’s Kubernetes distribution is upgraded.

Two facts about this cluster push against the usual recommendation. There is exactly one node, so a botched ingress rollout is a total outage with no second path in; and the whole platform is expressed as ArgoCD Applications, so a second controller would be one more thing to keep in sync with a distribution that is already managing one.

Decision

Keep the k3s-bundled Traefik, and configure it through a single HelmChartConfig.

Alternatives rejected

Consequences

Evidence

k8s/platform/traefik/traefik-config.yaml (the single HelmChartConfig), k8s/platform/traefik/tlsstore.yaml, inventory/ports.yaml (the ServiceLB NodePorts and why they close by firewall), docs/upgrade-policy.md, and docs/networking.md.