Helm is the first application package manager running atop Kubernetes. It allows describing the application structure through convenient helm-charts and managing it with simple commands. Because it’s a huge shift in the way the server-side applications are defined, stored and managed.
Helm Charts provide “push button” deployment and deletion of apps, making adoption and development of Kubernetes apps easier for those with little container or microservices experience. Apps deployed from Helm Charts can then be leveraged together to meet a business need, such as CI/CD or blogging platforms.
Install Helm
- Use curl to create a local copy of the Helm install script
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > /tmp/get_helm.sh
cat /tmp/get_helm.sh
- Use chmod to modify access permissions for the install script
chmod 700 /tmp/get_helm.sh
Set the version to v2.8.2
DESIRED_VERSION=v2.8.2 /tmp/get_helm.sh
Ensure Helm uses the correct stable chart repo (the default one used by Helm has been decommissioned)
helm init --stable-repo-url https://charts.helm.sh/stable
Initialize Helm:
helm init --wait
Give Helm the permissions it needs to work with Kubernetes
kubectl --namespace=kube-system create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
Make sure our configuration is working properly
Create a Helm Chart
mkdir charts
cd charts
- Create the chart for httpd
helm create httpd
- Verify our directory was created correctly by running ls command
- Navigate to the httpd directory by using cd command “cd httpd
- view the files and directory cd httpd/
- This directory contains two files: Chart.yaml and values.yaml. We need to edit the values.yaml file.
- Open values.yaml
Under image, change the repository to httpd.
Change the tag to latest.
Under service, change type to NodePort.
replicaCount: 1
image:
repository: httpd
tag: latest
pullPolicy: IfNotPresent
service:
type: NodePort
port: 80
ingress:
enabled: false
annotations: {}
path: /
hosts:
- chart-example.local
tls: []
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
- Create Your Application Using Helm
- Back to directory httpd and run the command
helm install --name my-httpd ./httpd/
Copy the commands listed under the NOTES section of the output, and then paste and run them. It should return the private IP address and port number of our application.
- Let’s check to see if our pods have come online
kubectl get pods
kubectl get services

Finished
Thank you for reading
Osama