jx: Boot fails with Helm 3

Summary

When using Helm 3, the jx boot command fails. It should be specified as a requirement that only Helm 3 is supported and the error message should be clearer, at least until jx is adapted to use it.

Steps to reproduce the behavior

Install Helm 3

jx boot

The output:

...
error: initializing helm with config: {jx true false true false  }: failed to run 'helm init --client-only' command in directory '', output: 'Error: unknown flag: --client-only'

Expected behavior

jx boot works

Actual behavior

jx boot fails

Jx version

The output of jx version is:

NAME               VERSION
jx                 2.0.979
Kubernetes cluster v1.13.11-gke.14
kubectl            v1.16.2
git                2.20.1 (Apple Git-117)
Operating System   Mac OS X 10.14.6 build 18G1012

Jenkins type

  • Serverless Jenkins X Pipelines (Tekton + Prow)
  • Classic Jenkins

Kubernetes cluster

Any

Operating system / Environment

MacOS

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 19
  • Comments: 18 (7 by maintainers)

Most upvoted comments

Would be great to have Helm3 support sooner rather than later. It seems like it would solve some big problems with Helm2 due to tiller and JX’s home grown tillerless option, which has problems with custom CRDs and deploying to multiple namespaces.

Running into the same thing. Any temporary workarounds for this other than downgrading?

here’s the way you can use helm 3 with boot: https://jenkins-x.io/docs/labs/boot/

@ankitm123 @deanesmith although I found the proposal really great, I think that for now we should just be able to skip the helm init when using helm 3. This clearly a blocking issue for a lot of folks.

Hi @ankitm123, please review the aforementioned proposal document. I believe this is WIP right now and your feedback in comments could prove useful. There may be tasks where your development contributions could become quite valuable.

This is going to be investigated. We’re not ready to support Helm 3 so better handling is needed. Described here - https://github.com/jenkins-x/jx/issues/6181

The issues with a helm version 3.0.0 that I saw:

  • Using the JX_HELM3 doesn’t work. Even if I create a symbolic link from helm to helm3.
  • The init command does not exist with helm version 3.0.0
  • The template command does not have --name parameter, because it was changed to mandatory field
  • The upgrade command has a problem with existing resources. It complains about existing resource conflict: kind: XXX, namespace: XXX, name: XXX

If jx need to support version 2 and 3 of the helm, there could be an option to create 2 versions of helm_cli.go. Maybe extending Environment with helmVersion could help with defining the helm version or users could leverage helmMajorVersion in jx-requirement.yaml to adjust jx behavior. I think the best option could be to stick to the templating of charts.