ð helm-charts
Use when understanding and creating Helm charts for packaging and deploying Kubernetes applications.
Overview
Understanding and creating Helm charts for Kubernetes applications.
Chart Structure
mychart/
âââ Chart.yaml # Chart metadata
âââ values.yaml # Default values
âââ charts/ # Chart dependencies
âââ templates/ # Template files
â âââ NOTES.txt # Usage notes
â âââ deployment.yaml
â âââ service.yaml
â âââ _helpers.tpl # Template helpers
â âââ tests/ # Test files
âââ .helmignore # Files to ignore
Chart.yaml
apiVersion: v2
name: my-app
description: A Helm chart for my application
type: application
version: 1.0.0
appVersion: "1.0.0"
keywords:
- web
- api
maintainers:
- name: Your Name
email: you@example.com
dependencies:
- name: postgresql
version: "12.1.0"
repository: "https://charts.bitnami.com/bitnami"
condition: postgresql.enabled
values.yaml
replicaCount: 3
image:
repository: myapp
pullPolicy: IfNotPresent
tag: "1.0.0"
service:
type: ClusterIP
port: 80
ingress:
enabled: false
className: "nginx"
hosts:
- host: myapp.local
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 80
Common Commands
Create Chart
helm create mychart
Install Chart
# Install from directory
helm install myrelease ./mychart
# Install with custom values
helm install myrelease ./mychart -f custom-values.yaml
# Install with value overrides
helm install myrelease ./mychart --set image.tag=2.0.0
Upgrade Chart
helm upgrade myrelease ./mychart
# Upgrade or install
helm upgrade --install myrelease ./mychart
Validate Chart
# Lint chart
helm lint ./mychart
# Dry run
helm install myrelease ./mychart --dry-run --debug
# Template rendering
helm template myrelease ./mychart
Manage Releases
# List releases
helm list
# Get release status
helm status myrelease
# Get release values
helm get values myrelease
# Rollback
helm rollback myrelease 1
# Uninstall
helm uninstall myrelease
Dependencies
Chart.yaml
dependencies:
- name: redis
version: "17.0.0"
repository: "https://charts.bitnami.com/bitnami"
condition: redis.enabled
tags:
- cache
Update Dependencies
helm dependency update ./mychart
helm dependency build ./mychart
helm dependency list ./mychart
Chart Repositories
# Add repository
helm repo add bitnami https://charts.bitnami.com/bitnami
# Update repositories
helm repo update
# Search charts
helm search repo nginx
# Search hub
helm search hub wordpress
Best Practices
Version Conventions
- Chart version: Semantic versioning (1.2.3)
- App version: Application version (v1.0.0)
Default Values
Provide sensible defaults in values.yaml:
# Good defaults
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
# Allow customization
config: {}
env: {}
Documentation
Include NOTES.txt for post-installation instructions:
Thank you for installing {{ .Chart.Name }}.
Your release is named {{ .Release.Name }}.
To learn more about the release, try:
$ helm status {{ .Release.Name }}
$ helm get all {{ .Release.Name }}