DEV Community

Cover image for ☸️ Some changes between Helm v2 and Helm v3 that you should know
Ridae HAMDANI
Ridae HAMDANI

Posted on • Edited on

☸️ Some changes between Helm v2 and Helm v3 that you should know

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
...
Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)

Collapse
 
david_j_eddy profile image
David J Eddy

Thank you for the breakdown Ridae. I will be migrating some charts soon and this helps me focus on the big changes.

Collapse
 
ridaehamdani profile image
Ridae HAMDANI

My pleasure @david_j_eddy . I’d love if you could share with me the changes that you will find.