Skip to main content

Module 6: Writing Helm Charts

Overview

You have been writing raw YAML manifests for the Voting App. They work, but deploying to a new environment means editing every file: changing image tags, adjusting replica counts, updating resource limits. What if you could deploy the entire stack with one command, customize it with a single values file, and version your deployments? That is what Helm provides.

Helm is the package manager for Kubernetes. It transforms your collection of YAML files into reusable, parameterized, versionable deployment packages called charts.

What You Will Learn

  • Helm chart structure and conventions: Understand how charts organize templates, values, and metadata
  • Go template syntax for Kubernetes manifests: Write templates that render to valid YAML with configurable parameters
  • values.yaml patterns for parameterized deployments: Design configuration that works across dev, staging, and production
  • Chart dependencies for reusing community charts: Use Bitnami's redis and postgresql charts instead of maintaining your own
  • Lifecycle hooks for deployment automation: Run jobs before/after installs and upgrades for database migrations and setup tasks

Prerequisites

Before starting this module, ensure you have:

  • Helm 3 installed: Run brew install helm on macOS, or use the official installer
  • KIND cluster running with Voting App: Either keep your existing deployment from Module 5, or be ready to deploy fresh
  • Familiarity with Voting App architecture: You should understand the five components (vote, result, worker, redis, postgres) and how they connect

Verify Helm installation:

helm version

You should see version v3.x or later (Helm 4 is also supported).

Module Metadata

Difficulty: Intermediate

Estimated Time: 100 minutes

  • Reading: 15 minutes
  • Lab: 60 minutes
  • Quiz: 15 minutes
  • Review: 10 minutes