---
title: "Helm v3 Beta 1 Released"
slug: "helm-v3-beta"
authorname: "Matt Farina"
author: "@mattfarina"
authorlink: "https://mattfarina.com"
date: "2019-08-27"
---

Helm v3 development has hit a new milestone with the release of the [first beta](https://github.com/helm/helm/releases/tag/v3.0.0-beta.1). This is an especially important milestone because it is the end of the effort to refactor Helm v3. The last of the _intended_ breaking changes has landed. From this point on, Helm v3 is focused on bug fixes, stability, and preparing it for a stable release.

If you are interested in Helm v3 now is a great time to test it out. If you find issues please file an issue if one has not already been filed.

## Notable changes since Helm v2

* Tiller has been removed. This simplifies the experience of using Helm. There is no more need to have cluster admin privileges or to install a Tiller in every namespace. With Tiller removed, Helm now uses the settings and access defined in the local kubeconfig file.
* A name is now required on install or you can use the `--generate-name` flag to have one automatically generated. This is a reverse of the Helm v2 behavior.
* The `helm init` command has been removed. It performed two primary functions. First, it installed Tiller. This is no longer needed. Second, it setup directories and repositories where Helm configuration lived. This is now automated. If the directory is not present it will be created.
* The Helm home directory used to be located off a users home directory. There is a standard known as the [XDG Base Directory Specification](https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) that describes a standard method to handle these directories. Helm now follows the XDG specification.
* The `stable` repository is no longer added by default. This repository will be deprecated during the life of Helm v3 and we are now moving to a distributed model of repositories that can be searched by the [Helm Hub](https://hub.helm.sh).
* The `helm search` command has been refactored to have sub-commands that can search the local repositories and the Helm Hub.
* Release names are now scoped to namespaces. In Helm v2 the names were scoped to the namespace Tiller was running in. When Tiller was running for an entire cluster the names were scoped to the cluster. Names are now scoped to the same namespace as the release.
* JSON schemas can now be imposed on chart values and bundled with the chart. The schemas can be used for validating chart values.
* A new API version of charts are available. This new `apiVersion` is `v2` and contains several changes including:
  * Requirements are now listed in the `Chart.yaml` file instead of the `requirements.yaml` file.
  * A `crd` directory has been added to charts for the placement of CRDs. These will be installed before the rendering of the templates is performed. Once the Kubernetes community has worked out more workflow details with CRDs more features can be added to Helm to support them.
* The `crd-install` hook has been removed and will not work for Helm v2 charts. A "legacy" plugin will be released by the Helm project to support v1 charts with the `crd-install` hook.
* Experimental feature gates are now supported. As new potential features are added to Helm they can be worked on as experiments and enabled using an environment variable.
* Pushing and pulling charts from OCI registries is now an experimental feature. The final details of this feature are being worked out with the OCI on the proper use of the API. To access this feature set the environment variable `HELM_EXPERIMENTAL_OCI=1` needs to be set.
* `helm serve` has been removed.
* Helm now supports library charts. These charts are not meant to be installed but can be depended on and referenced by other charts. These were inspired by the [common chart](https://github.com/helm/charts/tree/master/incubator/common) in the incubator repository.
* `helm test` received some major refactoring. This included the `test-success` hook's behavior coming in line with other hooks and the removal of the `test-failure` hook due to lack of use.
* Several CLI changes have happened for usability including:
  * `helm inspect` is now `helm show`
  * `helm fetch` is now `helm pull`
  * `helm delete` is now `helm uninstall`
  * Instead of using the `--purge` flag on `helm uninstall` the behavior is to use the `--keep-history` if you want to keep the history.

## Helm v3 Next Steps

The next steps in the road to a Helm v3 stable release will be to focus on fixing bugs and stability. More beta releases or release candidates will follow before making a final `3.0.0` release.
