Helm Alpha.3: The biggest release yet!

10 Aug 2016

Helm v2.0.0-Alpha.3 has many new features and improvements. It marks our biggest release yet. The Helm team owes a tremendous debt of gratitude to our outstanding community, which has been a source of ideas, issues, fixes, features, and encouragement. Thank you!

Alpha.3 also includes the first set of released binaries which means you no longer have to compile the project to start kicking the tires. Check out "Getting Involved" section for details.

Features

The headliner features are:

  • A new helm upgrade command can upgrade releases in place. We suggest using Kubernetes Deployments for maximum impact.
  • A vastly improved helm status command shows you information about the current state of your releases.
  • Helm now has commands for getting information about a release using helm get, helm get values, helm get hooks, and helm get manifest.
  • By default, releases are still stored in memory. But they may now optionally be stored in Kubernetes ConfigMaps instead. In subsequent releases, ConfigMaps will become the default.
  • The new helm inspect command allows users to preview chart information before installing a chart: helm inspect kube-charts/alpine-0.1.0
  • Tiller now installs into the kube-system namespace, but can install charts into any namespace it has write access to.
  • Helm supports hooks for pre-install, post-install, pre-upgrade, post-upgrade, pre-delete, and post-delete. With these, you can now attach Kubernetes jobs to release events.

But that is not all!

Template System Changes

There have been several changes to the template system. The most important changes are:

  • Extra files supplied in a chart are now accessible using the {{.Files}} object. For example, to load the file foo/info.yaml into a template, you may use {{.Files.Get("foo/info.yaml"}}
  • The new {{.Template}} object provides access to information about the current template.
  • All values are accessible in templates as {{.Values.someValue}}. Global values are available in {{.Values.global.someValue}}. The existing pre-defined top level template namespaces are now {{.Values}}, {{.Files}}, {{.Release}}, {{.Template}}, and {{.Chart}}.
  • A new template function called include can now be used to import another template in place. This is preferable to the Go built-in template directive. include can be chained: {{include "foo.tpl" | indent 4}}.

Notable Changes and Fixes

  • Tiller, the Helm server, now runs as a Kubernetes Deployment instead of a Replication Controller.
  • A helm delete now reaps related resources. So deleting a Deployment will result in deletion of its ReplicaSet and its Pods.
  • A release name can be re-used with helm install --replace. For CI/CD systems, we've also added a --name-template flag to helm install to make it easier to predictably auto-generate releases.
  • Install values can now be passed on the command line with helm install --set NAME=VALUE.
  • helm lint now has a --strict flag.

Numerous other bugs and fixes have been applied, and both Helm and Tiller are more stable.

For Helm Developers

Previous versions of Helm did development using scripts/local-cluster.sh. We now recommend using Minikube. We've also improved tooling for test coverage, CI/CD, and linting.

Coming Soon to a Cluster Near You...

The next release will be v2.0.0-alpha.4. While Alpha 4 is largely focused on stability, a few exciting features are on the roadmap:

  • helm rollback to roll back to an older version of a release.
  • Provenance and cryptographic integrity checks with helm package --sign and helm install --verify.
  • An overhaul of the Kubernetes Chart Repository (Check it out. The change is already underway!)

Getting Involved

Alpha.3 also includes pre-compiled binaries. Head on over to the release page to download binaries for your architecture and follow the Helm quickstart to get started.

If you are interested in hacking on Helm, want to create charts, or simply have questions; find us in the Kubernetes #helm slack channel

Feel free to jump into the issue queue or join our weekly developer call on Thursday at 9:30-10:00 Pacific. Zoom: https://engineyard.zoom.us/j/366425549 (Calendar Invite)

Posted in Helm, Annoucement

triangle square circle

Did you enjoy this post?