10 Helm Chart Examples for Kubernetes Deployments
Discover 10 real-world Helm chart examples that every Kubernetes user should know in 2025. From simple Nginx deployments to full-stack applications with databases, monitoring, and ingress – complete with ready-to-use values.yaml snippets and best practices for production.
Introduction
Helm is the package manager for Kubernetes – think of it like apt, yum, or npm, but for your entire application stack. A Helm chart packages all the YAML manifests (Deployments, Services, ConfigMaps, etc.) into one reusable, versioned template with customizable values. Whether you're deploying a simple web server or a complex microservices platform, Helm makes it repeatable, upgradeable, and shareable.
In this guide, we walk through 10 practical, production-ready Helm chart examples with real code snippets you can copy and adapt today. Perfect for beginners and experienced users alike.
Example 1: Basic Nginx Web Server
The classic "Hello World" of Helm. This chart deploys a scalable Nginx with custom index.html, resource limits, and optional HTTPS.
Key features: autoscaling, custom config via ConfigMap, ingress ready.
# values.yaml
replicaCount: 3
image:
repository: nginx
tag: stable
resources:
limits:
cpu: 200m
memory: 256Mi
service:
type: ClusterIP
port: 80
ingress:
enabled: true
hosts:
- host: nginx.example.com
paths:
- path: /
pathType: Prefix
Example 2: PostgreSQL with Persistent Storage
Deploy a highly available PostgreSQL instance using the official Bitnami chart – perfect for stateful applications.
Includes volume permissions init container, automatic backups to S3, and metrics exporter.
# values.yaml
auth:
postgresPassword: "supersecret"
database: myappdb
primary:
persistence:
enabled: true
size: 20Gi
resources:
requests:
memory: 1Gi
cpu: 1000m
metrics:
enabled: true
Example 3: Redis Cluster (StatefulSet)
Production-grade Redis with sentinel for high availability, persistence, and password authentication.
# values.yaml
auth:
password: "redis123"
cluster:
enabled: true
slaveCount: 2
persistence:
enabled: true
size: 10Gi
resources:
limits:
memory: 2Gi
Example 4: Prometheus + Grafana Monitoring Stack
Full observability stack using the kube-prometheus-stack chart from Prometheus Operator.
Includes Alertmanager, Node Exporter, and pre-built Grafana dashboards.
prometheus:
prometheusSpec:
storageSpec:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 50Gi
grafana:
adminPassword: "prom-operator"
persistence:
enabled: true
size: 10Gi
Example 5: WordPress with MySQL (Full-Stack App)
Deploy a complete WordPress blog with separate MySQL database using Bitnami’s battle-tested charts.
Perfect example of Helm dependency management with subcharts.
# Chart.yaml dependencies
dependencies:
- name: mysql
version: 9.x.x
repository: https://charts.bitnami.com/bitnami
condition: mysql.enabled
# values.yaml
wordpressUsername: admin
wordpressPassword: "wordpress123"
mariadb:
enabled: false
externalDatabase:
host: mysql-prod.cluster.local
port: 3306
database: wordpress
user: wpuser
password: "secret"
Example 6: Jenkins Master with Persistent Volume
Deploy Jenkins CI/CD server with persistent Jenkins home, custom plugins, and RBAC.
persistence: enabled: true size: 20Gi agent: enabled: true rbac: create: true serviceType: LoadBalancer adminUser: admin adminPassword: "jenkins2025"
Example 7: HashiCorp Vault (Secrets Management)
Secure secrets storage with auto-unseal using AWS KMS or GCP KMS.
Production-ready with HA and UI access.
server:
ha:
enabled: true
replicas: 3
dataStorage:
size: 20Gi
injector:
enabled: true
ui:
enabled: true
serviceType: LoadBalancer
Example 8: Cert-Manager for Automatic TLS
Automatically provision Let’s Encrypt certificates using cert-manager.
installCRDs: true prometheus: enabled: true ingressShim: defaultIssuerName: letsencrypt-prod defaultIssuerKind: ClusterIssuer extraArgs: - --dns01-recursive-nameservers=8.8.8.8:53
Example 9: GitLab Runner (CI/CD Agents)
Register runners with your GitLab instance for fast parallel jobs.
gitlabUrl: "https://gitlab.com/"
runnerRegistrationToken: "glrt-xxxxxx"
runners:
cache:
cacheType: s3
s3BucketName: gitlab-runner-cache
config: |
[[runners]]
executor = "kubernetes"
[runners.kubernetes]
namespace = "{{ .Release.Namespace }}"
image = "ubuntu:22.04"
Example 10: Custom Application with Multiple Microservices
Real-world example: a voting app with frontend, backend API, Redis, and PostgreSQL all defined in one parent chart with subcharts.
Shows how to use Helm dependencies, share values between services, and manage complex deployments.
| Example | Chart Name / Source | Best For |
|---|---|---|
| Nginx | bitnami/nginx | Web servers, reverse proxy |
| PostgreSQL | bitnami/postgresql | Databases, stateful apps |
| Prometheus Stack | prometheus-community/kube-prometheus-stack | Monitoring & alerting |
| WordPress | bitnami/wordpress | Full-stack CMS apps |
| Vault | hashicorp/vault | Secrets management |
Conclusion
Helm transforms complex Kubernetes deployments into simple, repeatable packages. These 10 examples cover the most common real-world use cases—from stateless web apps to stateful databases, monitoring, CI/CD, and security. Start with the official Bitnami and community charts, then build your own custom charts as you grow. Mastering Helm is one of the highest-ROI skills in modern DevOps tooling. Happy helming!
Frequently Asked Questions
What is a Helm chart?
A Helm chart is a package containing Kubernetes YAML templates and a values.yaml file for configuration.
Where are official Helm charts stored?
Main repositories: Artifact Hub, Bitnami, Helm Hub, and individual project repos.
How do I install a Helm chart?
Use: helm install my-release bitnami/nginx --values my-values.yaml
What is the difference between helm install and helm upgrade?
install creates new release; upgrade updates existing one (great for CI/CD).
Can I create my own Helm chart?
Yes! helm create mychart generates a full template to customize.
Are Helm charts secure?
Use trusted sources and scan charts with tools like Trivy or ChartSecurity.
How do I version Helm charts?
Use semantic versioning in Chart.yaml (version: 1.5.0) and appVersion for your app.
What are Helm hooks?
Pre/post-install/upgrade/delete hooks to run jobs (database migrations, backups).
Can I use Helm with GitOps?
Yes – tools like ArgoCD and Flux manage Helm releases declaratively from Git.
How to override values in production?
Use separate values files: values-prod.yaml, values-staging.yaml, or Helm secrets plugins.
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0