← All work
active · 2 min read

Kubernetes Platform

Declarative cluster platform using Helm and Kustomize: MetalLB, Traefik ingress, cert-manager, Harbor registry, and Democratic CSI storage on bare-metal Proxmox.

KubernetesHelmKustomizeGitOps
Status
active
Active since
Aug 2025
Last updated
July 2026
Changes shipped
53

The substrate everything else runs on; declaratively managed and continuously extended.

This is the substrate everything else here runs on: a bare-metal cluster built up from load balancing, ingress, certificate management, a container registry, and persistent storage, each an upstream component wired together declaratively with Helm and Kustomize.

How it works

Kubernetes platform layers A bare-metal Proxmox base runs a multi-node Kubernetes cluster with a Cilium CNI. A platform-services layer provides load balancing, ingress, certificate management, a registry, and storage. Workloads on top are reconciled continuously from git by GitOps. Workloads reconciled from git by GitOps Platform services MetalLB · Traefik · cert-manager · registry · CSI storage Kubernetes multi-node · Cilium CNI Bare-metal Proxmox

The discipline is that nothing is configured by hand. Each overlay pulls an upstream Helm chart through Kustomize and layers environment-specific patches on top; scripting is confined to env-var substitution, never deployment logic. The whole tree is reconciled continuously from git by a GitOps controller, so the cluster can be reasoned about, and rebuilt, from its manifests alone. It’s the boring, dependable base that makes the more interesting projects above it possible.

Key decisions

  • Kustomize over upstream Helm charts, not bespoke manifests: helmCharts: overlays let me track upstream releases while keeping every environment difference as a reviewable patch, so upgrades are a version bump rather than a hand-merge.
  • GitOps reconciliation as the only deploy path: desired state lives in git and a controller converges the cluster to it; there is no out-of-band kubectl apply in the normal loop, so drift is visible and the cluster is rebuildable.
  • Secrets stay out of git: an external secrets operator pulls from a dedicated secret store at runtime, so manifests are fully shareable and no credential is ever committed.
  • Upstream images only, no repackaged vendor images: official charts or minimal bases, which keeps the supply chain legible and the registry scannable.

Recent changes

  • Add cluster api dns san
  • Retire orphan runner alert folder
  • Relocate gatus to k8s deploy
  • Add loki ruler truenas maintenance alert
  • Fix umami collect reachability
  • Deploy umami analytics