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 Hubarrow-up-right 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

spinner

Here's what happens when you run helm install:

  1. Template Rendering: Helm takes your Chart templates and merges them with values

  2. Manifest Generation: Produces valid Kubernetes YAML manifests

  3. API Communication: Sends manifests to Kubernetes API server

  4. Resource Creation: Kubernetes creates the resources (Pods, Services, etc.)

  5. 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:

Aspect
kubectl
Helm

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