This Infrastructure

Why make a personal website and stick it on some random shared web hosting environment or a Digital Ocean server when I can just as easily be extremely complicated and show off some infrastructure design?

This website (and several others that I also host) are hosted as part of a geographically distributed Kubernetes cluster run entirely using DevOps and GitOps best practices.

The entirety of the lifecycle of this website involves tools that I have created and maintain:

  • Development occurs anywhere I want, without installing a single package other than Docker using Devenv.
  • On commit, a CI pipeline is triggered that completes all of the syntax, acceptance, and unit testing for the application.
  • A custom-built kubernetes operator watches the Gitlab pipelines for completion and redeploys the application on success.
  • The kubernetes Deployment, Service, and Ingress are controlled by ArgoCD and are automatically deployed, updated, and self-healed.
  • The application is deployed to one of three Kubernetes worker nodes in 3 different geographical areas.
  • DNS is hosted at Cloudflare, which points to a highly available Digital Ocean load balancer.

This is absolutely overkill for a simple personal website that gets a few hits a week, and isn't something I'd recommend unless you're serious about uptime, high availability, and require substantial capacity to serve an appropriate number of simultaneous hits.

All of that being said, this whole thing is costing me less than $25 a month (entirely offset by fees hosting other sites), which isfar less than some "robust" shared hosting plans...let alone something that is fault tolerant and spanning datacenters over a thousand miles apart.

Regardless of the cost and regardless of the overkill, I've done this to show off just some of the things that i'm experienced with and highlight some of the things that I truly enjoy doing within the DevOps and Infrastructure world.

Repositories

All of the code used the build and deploy the infrastructure that this server lives on is open source, minus of course the GitOps secret values (deploy tokens, application encryption keys, etc).

I'm currently still cleaning up some of the repositories to be committed, so once they're uploaded to Gitlab the links will appear below.

Right now you can find the application code at my Gitlab application group.