

In this article we are going to see more about Helm charts and how to utilize it to achieve productivity in your Kubernetes deployment.
Contents
- Helm Chart Introduction
- Helm Installation
- Creation of our own Helm charts & Package deployment
- Real-Time deployment upgrade
- Push our Helm Charts to Artifact Hub
- Import Helm charts from Artifact Hub & Package deployment
Helm Chart
In simple words, Helm is like a RPM in Redhat Enterprise Linux (RHEL) and APT in Ubuntu Linux. It is a package manager which is used to install required packages.
Helm uses a packaging format called charts. A chart is a collection of files that describe a related set of Kubernetes resources.
We can either create our own chart or we can import it from Artifact hub which is an open source project from Cloud Native Computing Foundation which contains a set of ready-made charts.
In this article, we are going to see both.
Why Helm?
- More simpler than YAML manifests
- Boosts productivity
- Reduces Complexity & promotes uniformity in environments
- Simplifies deployment
Ok. Lets jump into the practical to create our own Helm charts.
Requirements:
- Minikube setup or EKS or any Kubernetes Cluster setup
Helm Installation
For helm installation, refer to this site .
Helm Charts creation
- First step is to create one folder or directory which will acts as your workspace. Here, we named our directory/Workspace as "helm".
- Then create one folder inside your workspace, this folder will have our charts in future. Here we named this folder as "myweb".
- Then create one YAML file named as Chart.yaml and copy the below code to it.
apiVersion: v1
name: myweb
version: 0.2
appVersion: 1.1
description: This is Helm chart for my web
- Then create one folder named "templates" inside your chart folder.
With this work location, run the following command in commandline.
kubectl create deployment mydeployment --image=vimal13/apache-webserver-php --dry-run -o yaml >mydeployment.yml
For our simple understanding, we use image which contains HTTPD server which will be used for deploying web pages. After run this command, It won't create deployment, but will generate a deployment yaml file for that corresponding image.
You can found this in below figure.

After this, run the following command in your workspace in order to create a deployment using our Helm charts.
helm install myweb myweb\
Here, myweb will be a chart name and myweb\ is the folder name. Output will be like

You can view/list the charts by using below command.
helm list
By running this, it will list all charts like this...

Finally, We had created a helm chart. In background, it will automatically create a deployment using the Helm chart. You can found this using the below code.
kubectl get deploy
Output will be like..

Finally, the deployment named mydeployment is created.
Real-Time deployment upgrade
Ok, Now we are going to see how to upgrade the deployment such as scaling up/down the replicas,etc using helm charts.
Step 1: Goto the deployment.yml file and edit the replica value.

Here, We had changed the number of replicas from one to two.
Step 2: Upgrade our chart by running the below code.
helm upgrade myweb myweb\

The above figure shows that our chart is successfully upgraded and We can verify it by using kubectl command in the above figure. Old pod was created 14 minutes ago. After the upgradation, the second pod is launched 21 seconds ago.
Everytime going to deployment.yml file and changing values would be a tedious task. But, We can also do this real time upgrade without going to the deployment.yml by using values.yaml file.
For this, Our first step is to create values.yaml file inside myweb folder like this.

Step 2: Create the variable name called replicacount and assign the no. of required replicas.

Step 3: Replace the hardcoded values deployment.yml by the variable name in values.yaml file like this..

Step 4: Run the following command.
helm upgrade myweb myweb\
Our output would be like this..

One pod is now going to create. In this way, we can upgrade the values in deployment.yml file without going into that file.
And also we can see the chart history which shows all upgradation of chart by running the below command.
helm history myweb
Output would be like...

In this way, we can see the whole history of chart like how many time,its values been changed or how many times it had been upgraded.
Pushing helm charts to Artifact Hub
We already know that Artifact Hub is an open source developed by CNCF community, if we push our charts to that Artifact hub so that other people can download our chart and will get the same deployment or environment like ours.
Step 1: Create an index file inside myweb folder by running the below command
helm repo index .
Step 2: Create a git repository without Readme.md and push all your files by run the following commands.
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin
Step 3: In Github, goto settings > pages > select branch > save
There, you will get an URL like this..

Step 4: Goto Artifact hub > control panel > Add repositories > Enter URL & fill necessary fields > Click Add
Now, you will have your helm repository like this..

That's it.
Importing Helm charts from repositories
Now, we are going to see how to import/download the charts from Artifact Hub for our package deployment.
Step 1: Goto Artifact hub

Step 2: Search your required package, here we chosen Wordpress.

Step 3: Click Install & Copy the commands

Step 4: Run the commands in your local Command prompt/shell

Our final output would be..

Finally, Wordpress and MySQL are deployed using Helm charts imported/downloaded from Artifact Hub.
. . . . . .
Thank you all for your reads. Stay tuned to my upcoming articles!!
Written by
Sri Vishnuvardhan
Building production-grade geospatial platforms that combine GIS, remote sensing, cloud infrastructure, AI, and platform engineering to transform spatial data into scalable, real-world intelligence.
Enjoyed this article?
Subscribe to get notified when new articles on DevOps, Cloud, and platform engineering are published.
You'll receive a welcome email with a confirmation link. No spam — unsubscribe anytime.
Have a project in mind?
I work on cloud-native platforms, DevOps automation, and geospatial intelligence systems. Let's talk.
