I was working on deploying an application on Kubernetes with Helm v3, then I decided to do the same while using Helm v2 this time to validate the possibility of migration from helm2 to helm3.
In this article, I want to share with you some of the changes between v2 & v3, that I faced in my task when I verified the validation of my Chart and when I deployed my application with these two helm versions.
Helm v3 introduces some changes in:
- Adios Tiller
- Helm v2 vs v3 commands.
- Chart apiVersion.
- Chart dependencies.
- Helm package command.
- Route object in chart.
- helm search command.
- How to migrate from helm2 to helm3?
1. Adios Tiller:
In Helm v3 tiller is gone, and there is only Helm client 😊.
2. Helm v2 vs v3 commands:
Some commands are not supported or renamed in Helm v3:
Command | Helm2 | Helm3 |
---|---|---|
Initialize Helm client/server | init | |
Download a chart to your local directory | fetch | pull |
Given a release name, delete the release from Kubernetes | delete | uninstall |
Helm client environment information | env | |
Displays the location of HELM_HOME | home | |
Inspect a chart | inspect | show |
Uninstalls Tiller from a cluster | reset |
3. Chart apiVersion:
Helm decides to increment the chart API version to v2 in Helm3:
# Chart.yaml
-apiVersion: v1 # Helm2
+apiVersion: v2 # Helm3
...
4. Chart dependencies:
Helm v2 chart has a specific file called 'requirements.yaml' where dependencies are added under the dependencies section. With Helm v3 this section are moved from requirements.yaml to Chart.yaml.
More information about this change can be found in the official documentation.
5. Helm package command:
Running helm package command with Helm v2 will raise a directory name (foo) and Chart.yaml name (bar) must match
error if the Chart name does not match the Chart root folder name. With Helm v3 this constraint is not compulsory.
6. Route object in Chart:
Unlike the Helm v2, route object in Helm v3 chart requires host and status fields.
apiVersion: v1
kind: Route
metadata:
name: {{ include "toto.name" . }}
spec:
+ host: {{ .Values.host }}
to:
kind: Service
name: {{ include "toto.name" . }}
weight: 100
port:
targetPort: 'http'
wildcardPolicy: None
+status:
+ ingress: []
+ wildcardPolicy: None
7. helm search command:
With helm v2 you can use helm search [CHART_NAME]
command to search for a chart in both your repo list and in helm hub.
With Helm v3 you have to specifie where to look for your chart .
Usage:
helm search [command]
Available Commands:
hub search for charts in the Helm Hub or an instance of Monocular
repo search repositories for a keyword in charts
8. How to migrate from helm2 to helm3:
Helm team made a good helm plugin called helm-2to3
that facilitates :
- Migration of Helm v2 configuration, data, plugin and releases to Helm v3.
- Clean up Helm v2 configuration, release data, and Tiller deployment.
Here is full documentation about this plugin: https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/
Happy Helming folks 😊❤️️ !!!
Top comments (2)
Thank you for the breakdown Ridae. I will be migrating some charts soon and this helps me focus on the big changes.
My pleasure @david_j_eddy . I’d love if you could share with me the changes that you will find.