@jldeen
Hands on Helm
Jessica Deen
Senior Cloud Advocate | Azure
@jldeen
1. Why Helm?
2. v3 Overview
3. Breaking Changes
4. New Features
5. Helm 2 > 3 Migration
6. Get Involved!
@jldeen
The package manager for Kubernetes
Helm is the best way to find, share, and use software built for Kubernetes.
@jldeen
Find, share, and use software built for k8s
@jldeen
@jldeen
• Must be ready for mainstream majority
• Prove stability, security, healthy
governance, and strong community
• Scored 198% on the certification test
• CNCF TOC voted by supermajority to
make Helm a top-level project
Graduation Requirements
@jldeen
• Based on community best practices
• Dramatic simplification
• Architectural changes(security as
priority)
v3 overview
@jldeen
Demo: Helm 3 end-to-end
@jldeen
• Helm is almost as old as Kubernetes
• Predates CRDs and K8s RBAC
• Simpler, more secure: focus on
production use-cases
Major Refactor
@jldeen
• Inheriting security controls from
kubeconfig
• Using K8s RBAC to limit access &
resources
• Replacing custom APIs for charts and
deployments with secrets
Making Helm more K8s Native
@jldeen
• Simpler & more flexible architecture,
security, & upgrades
• Now uses Kubernetes API directly
• Renders charts client-side; storing in
release
• Lowering the barrier of entry for
contributors
Farewell, Tiller
@jldeen
helm delete
helm inspect
helm fetch
helm search
--purge is now default (to override: helm
uninstall –keep-history)
CLI Changes
helm uninstall
helm show
helm pull
helm search repo
(vs helm search hub)
@jldeen
Warning! Breaking Changes!
(see https://v3.helm.sh/docs/faq/ for full details
@jldeen
Don’t worry!
• We intend to support Helm 2 charts
• You *should* be able to replace the
Helm 2 binary with the Helm 3 binary IF
you take the following considerations
into account
@jldeen
Namespace Changes
• Helm will no longer create a
namespace if it doesn’t already exist
@jldeen
Namespace Changes
• Release metadata is stored in the same
namespace as the release
• Templated resources with namespace
set will be installed into said
namespace prior to the application of
`--namespace` flag
@jldeen
CRD Installation
• `crd-install` ignored in Helm 3
• Useful warning message if CRDs are
present in templates directory
• Replaced with CRDs directory at chart
root
@jldeen
CRD Installation
@jldeen
Chart Dependency
Management
• Old style: requirements.yaml &
requirements.lock
• New style: Chart.yaml and Chart.lock
(breaking change if you use helm
dependency subcommands)
@jldeen
Release Metadata
• No longer stored in Tiller namespace
• Stored as secret in release namespace
• Double base64 encoded JSON blob
Not backwards compatible with Helm 2
release metadata
https://github.com/helm/helm-2to3
@jldeen
Deprecated Function(s)
• {{ .Release.Time }} deprecated in favor
for `now` function
@jldeen
--generate-name
• Old style: auto-generated unless
overridden
• New style: error unless auto-generation
requested
@jldeen
Demo: Helm 2 to 3
Migration
@jldeen
Get involved!
• Upgrade to Helm 3
• https://v3.helm.sh/docs/faq
• helm.sh for community calls
• Feedback on new use cases &
workflows
• Test for backwards-compat with
existing charts!
@jldeen
- Senior Cloud Advocate | Azure
- DevOps, Containers, Open Source
- CNCF Ambassador | K8s & Helm
Who am I?
@jldeen
Thank you!

Hands-on Helm