Never Lose Your Bearings Again with Helm and Kubernetes (and other nautical puns)

By Mike Sigsworth

Elevator Pitch

Use Docker, they said. It’ll be easy, they said!

What they don’t tell you is how hard it is to set up a CI/CD pipeline to deploy across multiple clusters, handle rollbacks of failed deployments, develop a common pattern of organizing Kubernetes templates, etc.

Helm to the rescue!

Description

Kubernetes is hard. There… I said it.

Several months ago my team and I made the leap to Docker. We started migrating apps to .NET Core so we could run on Linux containers, and we hadn’t really considered the effect this would have on the rest of the application lifecycle. We just knew containers were awesome and we wanted to be awesome.

The honeymoon phase with Docker ended abruptly when we started to tackle the deployment problem. Getting our apps to run in Kubernetes was no walk in the park. We had to understand a whole new networking model, not to mention a plethora of new terminology like Pods, Services, and Ingress to name a few. It was daunting. And how do you organize and deploy this mess in your CI/CD pipeline? With a bunch of giant scripts calling kubectl? Oh hell no…

Enter Helm…

Helm is essentially apt/yum/homebrew/chocolatey for Kubernetes. It seeks to bring clarity and structure to how you manage and deploy applications to Kubernetes. In this talk you will learn the basics of Helm, how to install, monitor, and rollback applications using Helm, and finally how to package your own applications for Helm.

By the end you should have a clear understanding of what problems Helm solves and how it will bring sanity back to managing your Kubernetes clusters.

Notes

Full disclosure: I am not an infrastructure guy. I am a developer. I feel much more at ease writing code than I do worrying about networking, monitoring, load balancers, backups, and all that other super important stuff that keeps my code alive after it’s left my CI/CD pipeline. But I have to at least know how to deploy my applications, more specifically, how my CI/CD pipeline will deploy my applications.

When my team and I started containerizing all of our applications, we thought the hard part was going to be migrating to .NET Core and getting things to run in Linux. Boy were we wrong!

I am currently in the process of setting up a new CI/CD pipeline to work with Kubernetes, and Helm has recently entered as a bit of a savior. I feel strongly that Helm will become a de facto tool used by anyone with a Kubernetes cluster. Developers should know how it affects them, and how they can leverage it to package their applications to simply deployment and rollback of their containerized apps.

While I am not an expert yet in Helm, I plan to be by the time I present this talk at PrDC, and I will have had several months of real-world, production experience using k8s and Helm to deploy a large suite of .NET microservices.