What is Helm Chart in Kubernetes

What is Helm?
Consider helm as a package + Release manager. Let’s talk about the current difficulty in deploying applications in Kubernetes and how helm helps us to reduce the complexity
Why do we need Helm?
Kubernetes is awesome at managing complex infrastructure, But we as a human are suffering from the complexity
Let’s take a quick example:
— Consider a web application, A typical application is made up of a collection of objects that needs to be interconnected to make things work
Simple Web-application, consisting of the below objects
- deployments
- services
- PVC
- PV
- Secrets

— To create each and every object in Kubernetes, we need separate YAML files
— Each Object has to be customized based on the application
— Once created, We need to run the apply command to deploy the objects
Kubectl apply -f object.yaml
— This is from a creation perspective, Let’s consider deletion of the application, This again requires remembering all the objects that are related to the application and have to remove each and every object that is part of the application.
NOTE: In real-time, there can be 100’s objects and even more
Kubernetes just cares about the Objects and it will not know about the application and the number of objects that belongs to the application
Here Comes Helm!!
Helm acts as both Package and release manager and would help us to deploy, upgrade and uninstall an application, which includes all the objects that are part of the application
Let’s consider the same example: web-application
Installing would be as easy as a single command
Helm install web-app
If we have any customized values that need to be included will be added to the values.yaml
To upgrade
Helm upgrade web-app Helm rollback web-app Helm uninstall web-app
Thus, Allow us to efficiently manage our application that is deployed in the Kubernetes cluster
How helm managing the objects:
— It simply creates templates for all the objects that are part of the application
Template/deployment.yaml
Template/services.yaml
— All the values in the YAML files will be marked as variables {{.values.image}}
— These variables are declared in values.yaml file (One for each application)
— These allow us to change values in a single place by reducing the complexity
— Template + values.yaml is called Helm charts

Helm charts are considered as a whole application, We can create our own charts at the https://artifacthub.io
That’s it with the basics on what is helm and why it is needed to manage our application in Kubernetes