Back to Home
Kubernetes
Kubernetes package management with Helm charts and templates
helmchartsreleasespackagestemplatevalues
Helm Package Manager
Kubernetes package management with Helm.
Repository Management
# Add repository
helm repo add bitnami https://charts.bitnami.com/bitnami
# Update repositories
helm repo update
# List repositories
helm repo list
# Search for charts
helm search repo nginx
helm search hub nginx
Installing Charts
# Install a chart
helm install my-release bitnami/nginx
# Install with custom values
helm install my-release bitnami/nginx -f values.yaml
# Install with set values
helm install my-release bitnami/nginx --set service.type=LoadBalancer
# Install in namespace
helm install my-release bitnami/nginx -n my-namespace
# Dry run
helm install my-release bitnami/nginx --dry-run
Managing Releases
# List releases
helm list
helm list -A # All namespaces
# Upgrade release
helm upgrade my-release bitnami/nginx
# Rollback release
helm rollback my-release 1
# Uninstall release
helm uninstall my-release
# Get release status
helm status my-release
# Get release history
helm history my-release
Working with Charts
# Show chart values
helm show values bitnami/nginx
# Show chart info
helm show chart bitnami/nginx
helm show all bitnami/nginx
# Download chart
helm pull bitnami/nginx
helm pull bitnami/nginx --untar
# Create new chart
helm create my-chart
# Package chart
helm package my-chart
# Lint chart
helm lint my-chart
Helm Template
# Render templates locally (without installing)
helm template my-release bitnami/nginx
# Render with custom values
helm template my-release ./my-chart -f values.yaml
# Render specific template file
helm template my-release ./my-chart -s templates/deployment.yaml
# Render with set values
helm template my-release ./my-chart --set replicaCount=3
# Render and save to file
helm template my-release ./my-chart > rendered.yaml
# Render with namespace
helm template my-release ./my-chart -n production
# Debug: show computed values
helm template my-release ./my-chart --debug
# Validate rendered output against cluster
helm template my-release ./my-chart | kubectl apply --dry-run=client -f -
Chart Template Syntax
# values.yaml
replicaCount: 3
image:
repository: nginx
tag: "1.25"
service:
type: ClusterIP
port: 80
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-app
labels:
app: {{ .Chart.Name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Chart.Name }}
template:
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: {{ .Values.service.port }}
Common Template Functions
# Default value
{{ .Values.env | default "production" }}
# Conditional
{{- if .Values.ingress.enabled }}
# ingress config here
{{- end }}
# Range (loop)
{{- range .Values.env }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end }}
# Include named template
{{ include "mychart.labels" . | nindent 4 }}
# toYaml
{{ toYaml .Values.resources | nindent 12 }}