A local k8s cluster is handy for personal playground and study purposes. It is also useful to abstract infrastructure as a code removing the need to install it locally or through docker. I ran it using a cluster of raspberry pis running k3s. For the hardware setup I followed the Pi Dramble guide.
- Setup the raspberries following the Raspberry Pi setup
- Install k3s on the cluster using Ansible
- Set up prometheus and grafana in arm to have monitoring
- Set up ELK stack on k3s ARM for logging
- K8s auto update script to update the K8S infrastructure on a CI/CD pipeline
To have a running haskell pod, I used the base Haskell image that uses Nix.
Sources: Jeff Geerling YT video