Platform engineering — Sydney, Australia
Infrastructure that puts itself back the way it was written.
Dev Dan Group runs a small, self-hosted Kubernetes platform on bare metal. There is no console to click. Every host, workload, policy and certificate is declared in a Git repository, and the cluster continuously pulls itself back into line with it.
Approach
Everything is a commit.
The operating system is built from Ansible playbooks rather than by hand, so a rebuild is a re-run instead of an archaeology exercise. Once the node is up, FluxCD takes over: it watches the repository and applies what it finds there. Nobody applies manifests from a laptop.
That constraint is the point. A change that is not in Git does not survive the next reconcile, which means the repository is an accurate record of the platform rather than an aspirational one — and the commit history doubles as the change log.
The platform is built against the guidance in the ASD Information Security Manual. It is aligned to those controls by design; it is not accredited or independently assessed, and nothing here claims otherwise.
Stack
Open source, all the way down.
K3s
Lightweight Kubernetes on bare metal. No cloud provider, no managed control plane.FluxCD
GitOps delivery. The cluster pulls from Git; changes are never pushed to it.Ansible
Declarative host build and hardening, versioned alongside the workloads.Kyverno
Policy as code. Admission rules live in the repo with everything else.SOPS + age
Secrets are committed encrypted and only decrypted inside the cluster.cert-manager
TLS certificates issued and renewed automatically over DNS-01.MetalLB + ingress-nginx
Load balancer addresses and HTTP routing without a cloud load balancer.external-dns
DNS records are created from the services that need them, not by hand.Longhorn
Replicated block storage with snapshots, running on the node's own disks.VolSync + Kopia
Scheduled, deduplicated volume backups to separate local storage.CloudNativePG
PostgreSQL as a Kubernetes resource, managed by its own operator.OpenTelemetry + Splunk
Logs, metrics and audit events collected centrally and retained long term.OAuth2 Proxy
Single sign-on in front of anything that shouldn't be open.
The loop
Declare, reconcile, correct.
-
01
Declare
Desired state is written as YAML and committed. Review happens in the pull request, before anything reaches the cluster. -
02
Reconcile
The cluster compares itself to the repository on a fixed interval and applies the difference. No manual deploy step exists. -
03
Correct
Anything that drifts is pulled back to what the repository says. A change made by hand is undone within the interval.