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][video], which was part of the [Summer of Nix][son] 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][do].
- That cluster is stood up using a [Terraform] configuration in
main.tf and terraform.tfvars.
- The Kubernetes configuration in
k8s/deployment.yaml
- The [GitHub Actions][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
[actions]: https://github.com/features/actions [deployment]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment [docker]: https://docker.com [do]: https://digitalocean.com [go]: https://golang.org [hub]: https://hub.docker.com [kubernetes]: https://kubernetes.io [nix]: https://nixos.org [son]: https://www.youtube.com/playlist?list=PLt4-lkyRrOMWyp5G-md1wtTcbBaOxZk [terraform]: https://terraform.io [video]: https://www.youtube.com/watch?v=LjyQ7baj-KM&t=2809s