Helm is a widely used package manager for Kubernetes that allows you to deploy applications and services in a cluster. Helm has a unique architecture that may not seem obvious at first, but makes a lot of sense once you understand it!
The client is a command-line tool that you use to interact with Helm. It lets you manage chart repositories, download and publish charts, and communicate with the Helm Library for Kubernetes operations.
The Library is the backend that handles the requests from the client, talks to the Kubernetes API, and performs all the actions like installing, upgrading, or uninstalling a chart in the cluster.
This architecture is very different from Helm version 2, which used to have a component called the Tiller (instead of the Library).
tubelight Tiller acted as a “server” to the client CLI and had to be deployed in the K8s cluster itself. This introduced significant security and operational challenges for K8s admins, and the Helm team decided to move to a more robust, completely on-client architecture. Hence, the Library replaced the Tiller in Version 3.
You install Helm on your local workstation to use it. It learns about your K8s clusters from your Kubeconfig file. It stores all the release information in K8s itself, so even if you uninstall Helm from your laptop, you’re not going to lose any state data.
This means that Helm only exists on user machines, and no part of it has to be installed on K8s. And yet, all state is preserved inside the cluster.