Overview to Helm

What’s HELM?
- A helmsman or helm is a person who steers a ship, sailboat, submarine, other type of maritime vessel, or spacecraft.
- The package manager for Kubernetes, Helm is the best way to find, share, and use software built for Kubernetes.
In simpler words, Kubernetes is a steer/wheel of the ship and Helm is the person who helps in navigation using the Steer.
Use HELM, Why ???
Kubernetes works like magic 🧙🏻♀️ but believe me there is no magic, everything needs to configured. Writing and maintaining YAML manifests for all Kubernetes objects can be a time consuming and tedious task. Even for a simple deployment you would need at least 3 YAML manifests with duplication and hardcoded value and now think how difficult it could be when alot of complicated settings are present and you need to run the same for each and every system. Here comes the Helm, Helm simplify this process and create package which means no more maintaining these kind of random groups of YAML files for describing pods, replica sets, services, RBAC settings, etc. With helm, there is a structure and a convention for a software package that defines a layer of YAML templates and another layer that make change in the templates called values. These values are injected into templates, thus allowing a separation of configuration, and defines where changes are allowed. This whole package is called a Helm Chart.
Essentially, you create structured application packages that contain everything they need to run on a Kubernetes cluster including dependencies the application requires.
Describing Helm:
Helm has two parts : the Client (CLI) and the server(Tiller).
The Client lives in Local workspace and the server in Kubernetes cluster to execute whenever required. When you push the resources via CLI then the tiller make sure that the state like create, update, delete etc are properly done from the charts. To understand fully we need to know about 3 concepts and they are as follow:
1. Chart : deployable unit for Kubernetes bound applications.
Charts are used to pack all the required K8S components for an application to deploy, run and scale. It is also where dependencies are defined, and configurations are updated and maintained. In other word’s we can say that it as a package of pre-requisite Kubernetes resources.
Charts are compromised of several files at specific or well known locations.

2. Release : A Specific instance of chart which has been deployed using the cluster. when an application is installed by Helm, a release is being created.
Releases can be tracked with helm ls
3.Repository : Group of published charts which are made available for others OR a place where helm charts are held and maintained. In essence, these are a set of templates and configuration values stored as code, sometimes packed as a .tar.gz
file .
Installing Helm:
For Mac- brew install helm
For Windows - choco install kubernetes-helm
For Linux — scoop install helm
Benefits of Helm:
Manage Complexity: Charts describe even the most complex apps, provide repeatable application installation, and serve as a single point of authority.
Easy Updates: Take the pain out of updates with in-place upgrades and custom hooks.
Simple Sharing: Charts are easy to version, share, and host on public or private servers.
Rollbacks: Use helm rollback
to roll back to an older version of a release with ease.