Taming Kubernetes HPA with HpaTuner

Recently I had a lot of fun writing: HPATuner

First My GO skills are very naive but I wouldn’t allow GO to stop me from writing a controller specially when its made so easy by KubeBuilder. Also it does promise to solve a lot of the issues we have been trying to solve over the years (see the github README for more details).

But the most fun was when I tried to add decent functional test coverage and add proper CI/CD process. This was specially needed because we are not a GO team and people trying to maintain it should have enough confidence making future changes.

  • I learned to use Kind to write functional integration tests. Up until now I always treated as a play thing not realizing how powerful it can be.
  • I learned how powerful Docker-In-Docker in a kubernetes pod to build/test K8s components
  • Once you get comfortable dealing with k8s api and controller constructs, the possibilities are endless! I am already thinking some other custom controller to solve some cross cutting concerns we have across PODs. You haven’t truly appreciated powers of k8s until you have written a controller for it. I love k8s even more now 🙂 (lol if thats possible)
  • Last but not least, I learned my initial impression of GO being a weired language is still true 🙂 , but how powerful it is doing functional coding in a staticically typed language. I have switched to groovy/python because I didn’t like Java’s awkward functional constructs but I always missed the static typing. I could get used to GO once i get past my mental barrier of dealing with pointers. The fact that its natively compiled is also quite impressive.

Lastly we are not a GO Shop so couldn’t find anyone yet to do a proper code review for the project. Anyone in k8s/GO world in my network want to spend some time giving some feedback/pointers for improvement will be much appreciated. In return this hpatuner can be a very powerful adition to your k8s platform!