Skip to content

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 }}

Gerelateerde Documentatie

Externe Bronnen