Helm est souvent presente comme “apt-get pour Kubernetes”. Au-dela du deploiement de charts, Helm offre des capacites de lifecycle management avancees.
Structurer un chart pour la production
mychart/
|-- Chart.yaml
|-- values.yaml
|-- values-prod.yaml
|-- templates/
| |-- deployment.yaml
| |-- service.yaml
| |-- _helpers.tpl
| +-- NOTES.txt
+-- charts/
_helpers.tpl : les fonctions reutilisables
{{/*
Nom complet de l'application
*/}}
{{- define "mychart.fullname" -}}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Labels standards
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
Deploiement avec override de values
helm upgrade --install myapp ./mychart -f values.yaml -f values-prod.yaml --set image.tag=$CI_COMMIT_SHA
Hooks : actions avant/apres deploiement
# Migration DB avant le deploiement
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-migrate
annotations:
"helm.sh/hook": pre-upgrade,pre-install
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
containers:
- name: migrate
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
command: ["python", "manage.py", "migrate"]
restartPolicy: Never
Tests Helm
helm test myapp
Notre formation Kubernetes couvre Helm avec des ateliers sur chart reel.