Skip to main content

Technical foundations

This page covers how I build and maintain the infrastructure and applications documented on this site. For the personal side, see the welcome page or about me.

How I build: Infrastructure as Code (IaC) and GitOps

My approach is Infrastructure as Code for provisioning and GitOps for day 2 operations. It is declarative, versioned, reviewable, and reproducible. Remaining gaps are host imaging, base network config, and automated preflight tests.

PracticeWhat it meansTooling here
IaCInfra is defined declaratively in code, version-controlled, applied by automation.Kubespray (Ansible) for cluster build and OS tuning
GitOpsDesired cluster state lives in Git; controllers reconcile the running state to match.FluxCD for manifests and Helm releases

Additional pieces that make it reproducible and safe:

  • SOPS + age stores secrets as encrypted text in Git.
  • Pinned manifests and Helm for Calico, MetalLB (FRR), Ingress-NGINX, cert-manager with Cloudflare DNS-01, PostgreSQL, and your apps.
  • Runbooks and rollback complete the loop for safe change.

How I keep Kubernetes "boring"

  • Kubespray with Ansible for a single, repeatable build path.
  • One container network interface (CNI) and one ingress across sites.
  • GitOps for every add-on and every application.
  • Image automation so new versions move from build to cluster through Git, not by hand edits on the cluster.
  • Local registry and chart mirrors for control and resilience.
  • Backups automated and restore tests proven end to end.
  • Clear service level objectives for API, DNS, and ingress, with automated checks.

Conventions

Commands

  • Shell commands are in blocks; replace values in <angle-brackets>.

Paths

  • File paths are relative to repo sections unless noted.
  • Links prefer a single canonical source.
  • Formatting is automated with Prettier and linters.

Admonitions

note

General info worth calling out.

tip

Helpful advice or best practice.

info

Background or reference details.

warning

Heads up: something to watch for.

danger

Risky or destructive; proceed with care.


How I create the Sphere

Publishing is automatic once I commit a change.

Authoring

  • Notes turned into Markdown with One Markdown.
  • Authored in Obsidian.
  • Published with Docusaurus and local full-text search.

Build and publish

  • Built on a private GitLab runner (local-first).
  • CI deploys the compiled site to Cloudflare Pages using Wrangler Direct Uploads.
  • Public site served at https://sphere.muppit.au with TLS and CDN caching.
  • Web Analytics enabled in Cloudflare for privacy-first visitor stats.
  • No GitHub mirror. The repository stays on my local Kubernetes cluster.

Contributing and corrections

This site is statically built through an automated process. If something is incorrect or could be improved, please message me with a short note and the page link. I read every suggestion and update pages regularly.


If there is something specific you want on Kubernetes or related practices, ask for it. I am converting a lot of notes and will prioritise what helps most. If you use a different method and want to share it, message me and I will add it with credit.