Kustomize vs Helm: differenze, vantaggi e confronto diretto

Che cos’è Helm e come funziona?

Helm è un package manager per Kubernetes, spesso paragonato a un gestore di pacchetti software.

Il suo obiettivo è semplificare la distribuzione e la gestione delle applicazioni attraverso pacchetti chiamati Helm Chart.

Un Chart raccoglie tutte le risorse Kubernetes necessarie per installare un’applicazione, insieme ai relativi template e parametri di configurazione. Il vantaggio principale è la possibilità di creare pacchetti riutilizzabili, personalizzabili attraverso file di configurazione.

Come funziona un Helm Chart?

Un Chart può avere una struttura simile alla seguente:

text
web-app/
├── Chart.yaml
├── values.yaml
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── ingress.yaml
└── charts/

I principali elementi sono:

  • Chart.yaml: contiene le informazioni sul pacchetto, come nome e versione.
  • values.yaml: definisce i parametri utilizzati per personalizzare l’applicazione.
  • templates/: contiene i template dei manifest Kubernetes.
  • charts/: può contenere le dipendenze da altri Chart.

Uno dei punti di forza di Helm è il motore di templating basato sulla sintassi dei template Go.

Questo permette di definire configurazioni dinamiche attraverso variabili. Ad esempio, nel template di un Deployment possiamo utilizzare:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: {{ .Values.replicaCount }}

Nel file values.yaml definiamo invece:

yaml
replicaCount: 3

Per modificare il numero di repliche è sufficiente intervenire sul file dei valori, senza dover modificare direttamente il template.

Installazione e gestione delle applicazioni

Helm mette a disposizione diversi comandi per gestire il ciclo di vita delle applicazioni.