Part 1: Introduction and Installation
Series Navigation: β Back to Series Overview | Part 2: Creating Your First Chart β
Introduction
When I first started deploying applications to Kubernetes, I maintained separate YAML files for each environmentβdevelopment, staging, and production. Each file was a near-identical copy with small variations in replica counts, resource limits, or image tags. It was tedious, error-prone, and didn't scale. One forgotten change in staging could break production deployments.
That's when I discovered Helm. Instead of managing dozens of YAML files, I could define my application once as a template and use values to customize deployments. Helm became my package manager for Kubernetesβsimilar to how npm manages Node.js packages or apt manages Debian packages.
In this first part of the series, I'll share what I've learned about Helm's fundamentals, architecture, and how to get started. We'll use a TypeScript Node.js application as our example throughout the series.
What is Helm?
Helm is the package manager for Kubernetes. It helps you define, install, and upgrade Kubernetes applications. At its core, Helm manages Chartsβpackages of pre-configured Kubernetes resources.
Think of a Helm Chart like a recipe. The recipe (chart) defines the ingredients (Kubernetes resources) and instructions (templates) needed to create a meal (deployed application). You can customize the recipe by adjusting valuesβmore servings, different spicesβwithout rewriting the entire recipe.
Key Concepts
From my experience working with Helm, these concepts are fundamental:
1. Charts A Chart is a bundle of information necessary to create an instance of a Kubernetes application. It contains:
Template files (Kubernetes YAML with placeholders)
Default configuration values
Dependencies on other charts
Metadata and documentation
2. Releases When you install a Chart into Kubernetes, it creates a Release. A Release is a specific instance of a Chart running in your cluster. You can have multiple Releases from the same Chartβfor example, one for your web app and another for a worker service.
3. Repositories Chart repositories are locations where Charts can be stored and shared. Artifact Hub hosts thousands of community Charts. You can also host private repositories for internal Charts.
4. Values Values are the configuration parameters that customize a Chart. Instead of hardcoding settings in templates, you use placeholders that get replaced with values at deployment time.
Helm Architecture
Understanding Helm's architecture helped me design better deployment workflows. Helm v3 (the current version) simplified the architecture significantly from v2.
How Helm Works
Here's what happens when you run helm install:
Template Rendering: Helm takes your Chart templates and merges them with values
Manifest Generation: Produces valid Kubernetes YAML manifests
API Communication: Sends manifests to Kubernetes API server
Resource Creation: Kubernetes creates the resources (Pods, Services, etc.)
Release Tracking: Helm stores release information as Kubernetes Secrets for tracking
Helm v3 vs Helm v2
If you're new to Helm, you only need to worry about v3. But if you've heard of Tiller, here's what changed:
Helm v2 required a server-side component called Tiller running in your cluster. This created security concerns and added complexity.
Helm v3 (released November 2019):
β No Tiller - client-only architecture
β Improved security with namespace-scoped releases
β Release information stored as Kubernetes Secrets
β Better upgrade strategies with three-way merge
β Chart dependency management improvements
Always use Helm v3 for new projects.
Installing Helm
Installing Helm is straightforward. I'll show you multiple methods based on your operating system.
macOS
Using Homebrew (my preferred method):
Expected output:
Linux
Using script (recommended):
Using package managers:
Windows
Using Chocolatey:
Using Scoop:
Binary Download
For any platform, you can download binaries directly:
Helm Configuration
After installation, Helm stores configuration in your home directory:
Shell Completion
I highly recommend setting up shell completionβit saves significant typing:
After setting up, reload your shell and you can use Tab to autocomplete Helm commands and flags.
First Steps with Helm
Let's verify everything works and explore basic commands.
Adding a Chart Repository
Chart repositories are like npm registriesβthey host published Charts. Let's add the official Bitnami repository:
Output:
Searching for Charts
Installing a Chart
Let's install a simple chart to test our setup:
Inspecting a Release
Cleaning Up
Understanding Chart Structure
Before we create our own Chart in the next part, let's look at what's inside a Chart:
A basic Chart structure:
Chart.yaml
Metadata about the Chart:
values.yaml
Default configuration values:
Templates
Template files use Go templating with special functions:
Common Helm Commands
Here are the commands I use daily:
Helm vs. kubectl
You might wonder: "Why use Helm when I can use kubectl?"
Here's my perspective from managing production deployments:
Complexity
Apply individual YAML files
Manage complete applications
Templating
None (requires external tools)
Built-in with Go templates
Versioning
Manual Git tags
Chart and release versions
Rollback
Manual kubectl commands
Single helm rollback command
Configuration
Multiple files or tools
Centralized values files
Reusability
Copy-paste YAML
Package and share Charts
Dependencies
Manual ordering
Automatic dependency management
Both tools are essential. I use:
kubectl: For ad-hoc operations, debugging, and simple deployments
Helm: For managing complex applications, multi-environment deployments, and team collaboration
What's Next?
Now that you have Helm installed and understand the basics, you're ready to create your first Chart. In the next part, we'll:
Create a Helm Chart for a TypeScript Node.js application
Learn about Chart structure and organization
Write templates for Deployment and Service
Customize deployments with values
Test and debug our Chart
The hands-on approach in Part 2 will solidify these concepts and prepare you for more advanced topics.
Series Navigation: β Back to Series Overview | Part 2: Creating Your First Chart β
Key Takeaways
β Helm is the package manager for Kubernetes, managing Charts, Releases, and Repositories
β Helm v3 simplified architecture by removing Tiller
β Charts are packages of Kubernetes resources with templates and values
β Installation is straightforward with package managers
β Understanding basic commands is essential for daily workflows
β Helm complements kubectl for production deployments
Last updated