real-world-devops-with-nix icon indicating copy to clipboard operation
real-world-devops-with-nix copied to clipboard

An example project for building containers with Nix and deploying them to Kubernetes

Real world DevOps with Nix

This example project is meant to demonstrate the power of Nix in a DevOps context. You can see this repo in action in my talk Real world DevOps with Nix, which was part of the Summer of Nix video series in 2022.

Moving parts

  • A very simple "TODOs" web service written in Go in cmd/todos/main.go. This service is built to be deployed on a Kubernetes cluster running on Digital Ocean.
  • That cluster is stood up using a Terraform configuration in main.tf and terraform.tfvars.
  • The Kubernetes configuration in k8s/deployment.yaml defines the Kubernetes Deployment for the service.
  • The GitHub Actions pipeline

Some other things to note:

  • The Kubernetes configuration for the Digital Ocean cluster, named real-world-devops-with-nix, is provided under the KUBE_CONFIG environment variable in the CI pipeline. To get that configuration as a base64 string:

    doctl kubernetes cluster kubeconfig show real-world-devops-with-nix | base64