Kustomize vs Helm: differenze, vantaggi e confronto diretto

Ad esempio, l’ambiente di sviluppo potrebbe utilizzare due repliche e risorse limitate, mentre quello di produzione potrebbe richiedere più repliche, maggiori risorse computazionali e configurazioni di sicurezza più restrittive.

Duplicare tutti i file YAML per ogni ambiente rende la gestione difficile e aumenta il rischio di errori. È proprio in questo scenario che entrano in gioco Kustomize e Helm.

Che cos’è Kustomize e come funziona?

Kustomize è uno strumento nativo dell’ecosistema Kubernetes che permette di personalizzare i manifest YAML senza utilizzare un sistema di templating.

Il suo approccio si basa su due concetti fondamentali: Base e Overlay.

La Base contiene la configurazione comune dell’applicazione, mentre gli Overlay introducono modifiche specifiche per ciascun ambiente. In questo modo è possibile mantenere una configurazione principale e applicare soltanto le differenze necessarie, evitando di duplicare interi file.

Un esempio pratico di Kustomize

Immaginiamo di dover distribuire un’applicazione chiamata web-app in tre ambienti:

  • Development.
  • Staging.
  • Production.

Possiamo organizzare i file in questo modo:

text
web-app/
├── base/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── kustomization.yaml
│
└── overlays/
    ├── development/
    │   └── kustomization.yaml
    ├── staging/
    │   └── kustomization.yaml
    └── production/
        └── kustomization.yaml

La directory Base contiene i manifest comuni, mentre ogni Overlay definisce le personalizzazioni necessarie.

Ad esempio, possiamo utilizzare una configurazione differente per il numero di repliche:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 2

Nell’ambiente di produzione, attraverso un’apposita patch, possiamo aumentare il numero di repliche:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 5

Kustomize combina automaticamente le configurazioni e genera i manifest finali.