Helm Package Management
Deze pagina beschrijft het gebruik van Helm als package manager voor Kubernetes binnen HappyHorizon. Je vindt hier uitleg over charts, values, repository management, commando's en troubleshooting.
Overzicht Charts
Een Helm Chart definieert een set Kubernetes resources voor een applicatie.
mychart/
├── Chart.yaml
├── values.yaml
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── ingress.yaml
└── charts/
Values
Configureer charts zonder templates aan te passen:
replicaCount: 3
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
Repository Management
helm repo list
helm repo add happyhorizon https://storage.googleapis.com/happyhorizon-helm-repo/
helm repo update
helm search repo happyhorizon
helm search repo happyhorizon/project-name --versions
Helm Commando's
Installatie & Management
helm install [RELEASE_NAME] [CHART]
helm install frontend ./frontend-chart -f custom-values.yaml
helm install project-name happyhorizon/project-name --namespace client-name --values custom-values.yaml
helm install project-name happyhorizon/project-name --dry-run --debug
helm list
helm status [RELEASE_NAME]
helm upgrade [RELEASE_NAME] [CHART]
helm upgrade project-name happyhorizon/project-name --values custom-values.yaml
helm rollback [RELEASE_NAME] [REVISION]
helm uninstall [RELEASE_NAME]
helm list -n client-name
helm status project-name -n client-name
helm history project-name -n client-name
Configuratie Management
Values Structuur
replicaCount: 2
image:
repository: ghcr.io/flashpointbv/project
tag: latest
pullPolicy: Always
service:
type: ClusterIP
port: 80
ingress:
enabled: true
hosts:
- host: example.com
paths: ["/"]
Values Overrides
helm install project-name happyhorizon/project-name --set replicaCount=3
helm install project-name happyhorizon/project-name --values production-values.yaml
helm install project-name happyhorizon/project-name -f common-values.yaml -f production-values.yaml
Best Practices
- Gebruik semantische versioning voor charts
- Documenteer wijzigingen in CHANGELOG.md
- Specificeer exacte versies van afhankelijkheden
- Definieer betekenisvolle standaardwaarden
- Documenteer alle configuratie-opties
- Implementeer value validatie
- Organiseer templates per resource type
- Gebruik consistente naamgeving
- Voeg relevante labels en annotations toe
- Definieer resource limieten
- Implementeer RBAC en network policies
Troubleshooting
Chart Debugging
helm template project-name happyhorizon/project-name --values custom-values.yaml
helm install project-name happyhorizon/project-name --dry-run --debug
helm lint project-name
Veelvoorkomende Problemen
| Issue | Oplossing |
|---|---|
| ImagePullBackOff | Controleer image repository/credentials |
| CrashLoopBackOff | Controleer configuratie/health checks |
| Values niet toegepast | Controleer syntax/override volgorde |
Resource Verificatie
kubectl get deployments -n client-name
kubectl get pods -n client-name
kubectl get services -n client-name
Voorbeeld Chart Structuur
apiVersion: v2
name: application
description: Voorbeeld applicatie chart
version: 1.0.0
appVersion: "1.16.0"
replicaCount: 2
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{- toYaml .Values.resources | nindent 12 }}