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 helmon 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