What is a helm chart?
It is a package manager for your Kubernetes cluster. It used to install, upgrade, rollback release, and also uninstall on the Kubernetes cluster.
|
Helm Charts Kubernetes Deployment |
What do these charts for?
You have seen Kubernetes pods, ReplicaSet, Deployments, services, and other objects each one required a YAML file in defining in the declarative method. Charts will have all these yaml files for all objects together as a package. Charts will have :
a. NAME
b. DESCRIPTION
c. VERSION
Templates will have placeholders for each Kubernetes kind object YAML file, that can be rendered using values.yaml file. Which will have parameters. It is greater flexibility and replaces and reuses the parameters required for your microservices project that need to deploy on the Kubernetes. You can use as many apps need to deploy you can have different values files
helm install --values value-app1.yaml
Installation methods for Linux Operating System we have three options:
Install using package manager snap
Using script: get_helm.sh
Binary download the tar file move to bin
Prerequisites
* Kubernetes cluster up and running.
* Have good knowledge on Kubernetes deployment, replica set, and pods
* Basic understanding of YAML syntax
Installing Helm on Linux
To install Helm on Ubuntu using binary:
1. Download the latest version of Helm binary using the following command:
wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz
|
helm Charts download on Linux box |
check the latest version on the
official website for the "helm charts"
2. Next, untar the Helm binary installer file using the tar command:
tar xvf helm-v3.6.1-linux-amd64.tar.gz
3. Move the linux-amd64/helm file to the /usr/local/bin directory:
sudo mv linux-amd64/helm /usr/local/bin
There will be no output if the command was executed correctly.
4. Confirmation of helm installation by checking the version
helm version
The execution output as follows:
|
helm version check in Linux |
Creating Helm Charts
To create "charts" using helm package manager as the following command:
helm create mytest
Creates 'mytest' folder in the current directory, you see the directory structure as :
# tree mytest/
mytest/
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
Helm will be a ready-made tool for huge application pods running environments. In the example charts it will be nginx image-based deployment. Most of the common strategies used for Kubernetes deployment and scaling in a declarative way is completely templatized which can be reusable by rending the charts with custom values. As more images used in the project then values.yaml file will grow.
YAML files validation
To validate the changes after updating any of the yaml file you need to check the YAML syntax using :
helm lint ./mytest
The lint command execution output
|
The helm lint example |
Dry-run Validate
Rendering
Here we get all good then we can proceed to dry-run
Which will do a rendering of all the values to the templates and shows the output you can verify.
helm install --dry-run --debug ./mytest/ --generate-name
Install the actual deployment
Generally, we can run the following:to install
helm install web-test ./mytest/
But if you want to change any specific change you can use the --set option to override the value at the time of installing it will be considered. Example if you see service.YAML file type will be rendered from values.yaml file as type: ClusterIP, that can be overridden when you use --set service.type=NodePort
helm install web-test ./mytest/ --set service.type=NodePort
Same thing you can do by changing inside the values.YAML file as well.
Check the application url that is running with notes instruction tells the URL creation commands.
Screen 1 Nginx app accessed
Verify the helm installed deployment successful using list command as:
helm list
How to uninstall the release package?
Using the uninstall followed by the name of the application release will delete that.
helm uninstall web-test
Enable Auto-Completion for Helm CLI
To use the auto-completion on for helm commands you can do the following:
source <(helm completion bash)
test this functionality by typing the 'helm cr<tab key>' it should complete with 'helm create'.