Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Experimental Helm v3 mode #668

Closed
mumoshu opened this issue Jun 10, 2019 · 17 comments
Closed

feat: Experimental Helm v3 mode #668

mumoshu opened this issue Jun 10, 2019 · 17 comments

Comments

@mumoshu
Copy link
Collaborator

mumoshu commented Jun 10, 2019

Extracted from #122 (comment)

I believe we need it to start real-world testing with helm 3.

@jdolitsky
Copy link

Would love to see. @mumoshu how involved is this to implement?

@olivierboudet
Copy link
Contributor

I guess you already know but beta.2 is available :)

@manics manics mentioned this issue Sep 3, 2019
@costimuraru
Copy link

beta.3 available

mumoshu added a commit that referenced this issue Sep 7, 2019
Set `HELMFILE_HELM3=1` and run `helmfile` like `HELMFILE_HELM3=1 helmfile ...`.

When `HELMFILE_HELM3` is set, `test` and `template` behaves works differently so that it works with Helm 3.

Note that `helmfile diff` doesn't work as `helm-diff` called under the hood doesn't support Helm v3 yet.

Ref #668
mumoshu added a commit that referenced this issue Sep 7, 2019
Set `HELMFILE_HELM3=1` and run `helmfile` like `HELMFILE_HELM3=1 helmfile ...`.

When `HELMFILE_HELM3` is set, `test` and `template` behaves works differently so that it works with Helm 3.

Note that `helmfile diff` doesn't work as `helm-diff` called under the hood doesn't support Helm v3 yet.

Ref #668
@mumoshu
Copy link
Collaborator Author

mumoshu commented Sep 7, 2019

#841 is the first implementation for this!

Assuming you have helm v3 binary ~/bin/helm3b3, try it like:

HELMFILE_HELM3=1 helmfile --log-level=debug --helm-binary ~/bin/helm3b3 sync

// You don't need --helm-binary ~/bin/helm3b3 if you've fully migrated to helm v3 i.e. just running helm runs helm 3.

build, list, sync, lint, template, test, repos, charts, status, delete, destroy should just work. diff and apply won't work as they both use helm-diff which doesn't support helm 3 yet.

deps is tested but not working at least for stable/mysql chart. Any clue to this?

Updating dependency /var/folders/lx/53d8_kgd26vf5_drrg89wkvc0000gp/T/800498063
exec: /Users/mumoshu/bin/helm3b3 dependency update /var/folders/lx/53d8_kgd26vf5_drrg89wkvc0000gp/T/800498063
exec: /Users/mumoshu/bin/helm3b3 dependency update /var/folders/lx/53d8_kgd26vf5_drrg89wkvc0000gp/T/800498063:
err: unable to update deps: unable to resolve 1 deps: helm3b3 exited with status 1:
  Error: validation: chart.metadata.version is required
in ./helmfile.yaml: unable to update deps: unable to resolve 1 deps: helm3b3 exited with status 1:
  Error: validation: chart.metadata.version is required

mumoshu added a commit that referenced this issue Sep 7, 2019
Set `HELMFILE_HELM3=1` and run `helmfile` like `HELMFILE_HELM3=1 helmfile ...`.

When `HELMFILE_HELM3` is set, `test`, `template`, `delete`, `destroy` behaves differently so that it works with Helm 3.

Note that `helmfile diff` doesn't work as `helm-diff` called under the hood doesn't support Helm v3 yet.

Ref #668
mumoshu added a commit that referenced this issue Sep 7, 2019
Set `HELMFILE_HELM3=1` and run `helmfile` like `HELMFILE_HELM3=1 helmfile ...`.

When `HELMFILE_HELM3` is set, `test`, `template`, `delete`, `destroy` behave differently so that it works with Helm 3.

Note that `helmfile diff` doesn't work as `helm-diff` called under the hood doesn't support Helm v3 yet.

Ref #668
@mumoshu
Copy link
Collaborator Author

mumoshu commented Sep 7, 2019

#841 has been released as v0.83.0

@mumoshu mumoshu mentioned this issue Sep 7, 2019
@mumoshu
Copy link
Collaborator Author

mumoshu commented Sep 7, 2019

helm-3.0.0-beta.3 has a regression that makes helm diff upgrade --detailed-exitcode unable to work correctly helm/helm#6384

Update: The fix on helm v3 is in-progress at helm/helm#6385

Update: helm/helm#6385 has been merged

@mumoshu
Copy link
Collaborator Author

mumoshu commented Sep 7, 2019

The minimal change on helm-diff is at databus23/helm-diff#149. Clone it and run HELM_HOME=$HOME/Library/helm make install in the project root for testing with helm3 and #841.

Note that the plugins directory has changed from $HOME/.helm/plugins to $HOME/Library/helm/plugins in Helm 3 which requires you to set HELM_HOME=$HOME/Library/helm.

Also try running helm env w/ Helm 3 to see other additional Helm envvars that helps you understand where various confgiuration directories are located at.

@mumoshu
Copy link
Collaborator Author

mumoshu commented Sep 7, 2019

Probably we may need to set api version in the temporary Chart.yaml generated in helmfile deps to v1 once helm v3 becomes generally available: helm/helm#5907

@mumoshu
Copy link
Collaborator Author

mumoshu commented Sep 7, 2019

helmfile deps should work w/ helm 3 after #842

Two things has been addressed in the PR:

  1. Moved the contents of requirements.yaml to Chart.yaml
  2. requirements.lock is now Chart.lock

@costimuraru
Copy link

costimuraru commented Sep 7, 2019

I appreciate the great work you're doing, @mumoshu! Will definitely give this a try, given that we're currently using helmfile in tillerless mode, but we experience occasional freezes (timeouts when doing a sync)... probably has something to do with the helm-tiller plugin. We hope helmv3 will prove to be more robust over the time.

By the way, I wrote an article with our experience in using helmfile (we're using it at Adobe for a few projects) and the feedback has been great (both internally and externally). Hope it leads to an increased adoption of helmfile so keep up the good work. The article is on medium if you're curious - https://itnext.io/setup-your-kubernetes-cluster-with-helmfile-809828bc0a9f

@cdunford
Copy link
Contributor

What is the current status of helm 3 support?

@mumoshu
Copy link
Collaborator Author

mumoshu commented Feb 26, 2020

@cdunford It's fully supported by default. Just provide a helm binary of v3 and it should just work. Please note though that some charts are broken in terms of helm v3 compatibility as revealed in #1000

@mumoshu mumoshu closed this as completed Feb 26, 2020
@peon-pasado-zeitnot
Copy link

@cdunford It's fully supported by default. Just provide a helm binary of v3 and it should just work. Please note though that some charts are broken in terms of helm v3 compatibility as revealed in #1000

how about things like tiller namespace in helmfile? could you provide a working example of helmfile for helm 3, please?

@smeierhofer
Copy link

smeierhofer commented Mar 4, 2020

Lots of example Helm Charts in the official Helm Chart repo at https://github.com/helm/charts/tree/master/stable. Also, the helmfile readme has examples: https://github.com/roboll/helmfile

@peon-pasado-zeitnot
Copy link

from readme:
#default values to set for args along with dedicated keys that can be set by contributers, cli args take precedence over these helmDefaults: tillerNamespace: tiller-namespace #dedicated default key for tiller-namespace tillerless: false #dedicated default key for tillerless

is it also valid for helm3?

@smeierhofer
Copy link

Tiller doesn't exist in Helm 3 so probably don't use any of these if you are using Helm 3.

@mumoshu
Copy link
Collaborator Author

mumoshu commented Mar 4, 2020

Thanks! Yes, that's correct. tiller-namespace is ignored for Helmfile + Helm 3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants