There are three main versions of Helm: Helm 2, Helm 3, and Helm Classic. Each version has its own set of features and capabilities, and there are some key differences between them.
1. Helm 2
Released in 2014: The original version of Helm.
Focus: Packaged charts, simpler syntax, Kubernetes client interaction.
Key features:
- Package installation, release management, templating.
- Dependencies between charts.
- Hooks for pre-install, post-install, pre-uninstall, and post-uninstall actions.
Limitations:
- Limited extensibility and security features.
- Doesn't support Kubernetes namespaces.
- Not compatible with newer features of Kubernetes.
2. Helm 3
Released in 2019: A major overhaul of Helm with significant improvements.
Focus: Increased flexibility, improved security, enhanced extensibility.
Key features:
- Package installation, release management, templating (Go templates).
- Namespaces support, advanced dependency management.
- Hooks with improved lifecycle management.
- Plugins for extending functionality.
- Built-in secret management features.
- Support for newer Kubernetes features and APIs.
Limitations:
- Not backwards compatible with Helm 2 charts.
- Some Helm 2 plugins may not work with Helm 3.
3. Helm Classic
Also known as Tiller: An older component of Helm 2 that ran as a server in the Kubernetes cluster.
Function: Provided centralized authentication and authorization for Helm releases.
Status: Deprecated and removed in Helm 3 due to security concerns.
4. Key differences between versions
Syntax: Helm 3 uses Go templates for templating, while Helm 2 uses its own templating language.
Extensibility: Helm 3 offers a robust plugin system for extended functionality, while Helm 2 plugin options are more limited.
Security: Helm 3 prioritizes security with built-in secret management and improved authentication/authorization compared to Helm 2.
Kubernetes compatibility: Helm 3 supports newer Kubernetes features and APIs, while Helm 2 is designed for older versions.
Backwards compatibility: Helm 3 charts are not compatible with Helm 2, while Helm 2 charts can be converted to Helm 3 with some effort.
5. Recommendation
In most cases, Helm 3 is the recommended version. It offers better features, security, and extensibility than Helm 2. However, if you have existing Helm 2 deployments or require compatibility with older Kubernetes versions, then Helm 2 might be necessary. Helm Classic is no longer recommended due to security concerns.