helm create mychart | Create new chart |
helm package mychart | Package chart |
helm lint mychart | Lint chart |
helm template mychart | Render templates |
helm dependency update | Update dependencies |
helm show values repo/chart | Show default values |
helm show chart repo/chart | Show chart info |
helm install myrelease repo/chart | Install chart |
helm install myrelease . -f values.yaml | Install with custom values |
helm install myrelease . --set key=value | Install with set values |
helm install myrelease . --dry-run | Dry run install |
helm upgrade myrelease repo/chart | Upgrade release |
helm upgrade --install myrelease repo/chart | Install or upgrade |
helm rollback myrelease 1 | Rollback to revision |
helm uninstall myrelease | Uninstall release |
helm list | List releases |
helm list -A | List all namespaces |
helm status myrelease | Show release status |
helm history myrelease | Show release history |
helm get values myrelease | Get release values |
helm get manifest myrelease | Get release manifest |
helm repo add name url | Add repository |
helm repo list | List repositories |
helm repo update | Update repositories |
helm repo remove name | Remove repository |
helm search repo keyword | Search in repos |
helm search hub keyword | Search Artifact Hub |
mychart/
âââ Chart.yaml # Chart metadata
âââ values.yaml # Default values
âââ charts/ # Dependencies
âââ templates/ # Kubernetes manifests
â âââ deployment.yaml
â âââ service.yaml
â âââ ingress.yaml
â âââ _helpers.tpl # Template helpers
â âââ NOTES.txt # Post-install notes
â âââ tests/
âââ .helmignore apiVersion: v2
name: mychart
version: 1.0.0
appVersion: "1.16.0"
description: My application chart
type: application
keywords:
- web
- app
maintainers:
- name: John Doe
email: john@example.com
dependencies:
- name: postgresql
version: "12.x.x"
repository: "https://charts.bitnami.com/bitnami"
condition: postgresql.enabled replicaCount: 1
image:
repository: nginx
tag: "1.21"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: false
hosts:
- host: chart.local
paths:
- path: /
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {} {{ .Values.replicaCount }}
{{ .Values.image.repository }} {{ .Release.Name }}
{{ .Release.Namespace }}
{{ .Chart.Name }}
{{ .Chart.Version }}
{{ .Capabilities.KubeVersion }} {{- if .Values.ingress.enabled }}
# ingress config
{{- end }}
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }} {{- range .Values.ingress.hosts }}
- host: {{ .host }}
{{- end }}
{{- range $key, $value := .Values.env }}
- name: {{ $key }}
value: {{ $value | quote }}
{{- end }} {{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 2 }}
{{- end }} {{ .Values.name | quote }}
{{ .Values.name | upper }}
{{ .Values.name | lower }}
{{ .Values.name | title }}
{{ .Values.name | trim }}
{{ .Values.name | default "default" }} {{ include "mychart.fullname" . }}
{{- include "mychart.labels" . | nindent 4 }} {{ required "A valid name is required!" .Values.name }} resources:
{{- toYaml .Values.resources | nindent 2 }} {{ .Values.config | indent 4 }}
{{ .Values.config | nindent 4 }} {{/*
Create a default fully qualified app name.
*/}}
{{- define "mychart.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}