Helm in 5 minuti
Cos’è Helm
Helm è un gestore di pacchetti open-source per Kubernetes.
Viene utilizzato per installare, aggiornare e gestire le applicazioni sui cluster Kubernetes.
Il concetto di Chart in Helm rappresenta il formato di pacchetto in cui Helm definisce un’applicazione. Nella pratica, è un insieme di file che serve a definire un’applicazione con le relative risorse, che ne permette il rilascio e l’installazione all’interno del cluster.
Struttura di un Chart
Un Chart è costituito da diversi componenti organizzati in una specifica struttura di cartelle:
- Il file Chart.yaml, che contiene i metadati, come il nome, la versione e la descrizione. Questo file viene utilizzato per descrivere il Chart e fornire informazioni sull’applicazione che esso rappresenta.
- Il file values.yaml, che contiene i parametri configurabili utilizzati per personalizzare l’installazione del grafico. Questo file serve a definire i valori utilizzati durante l’installazione dell’applicazione, come il numero di repliche, l’immagine da utilizzare e altre opzioni di configurazione.
- La cartella charts/, che può essere usata per memorizzare le dipendenze del Chart. Ad esempio, se l’applicazione richiede un database, è possibile includere il database come dipendenza. In questo modo ci si assicura che il database venga installato insieme all’applicazione quando il Chart viene deployato.
- La cartella templates/, che contiene i manifesti (o file YAML) che definiscono le risorse da installare. Questa directory viene utilizzata per definire gli oggetti Kubernetes necessari per l’esecuzione dell’applicazione, come Deployment, i Services e Ingress.
Esempio di struttura di un Chart
In generale, la struttura delle cartelle di un Chart è stata progettata per essere intuitiva e facile da usare. Organizzando i componenti in directory specifiche, è più facile gestire le applicazioni sui cluster Kubernetes e condividerle con altri.
Installare Helm
Helm può essere installato su diversi sistemi operativi, tra cui Windows, Mac e Linux. Per installare Helm sul proprio sistema operativo, è possibile seguire la guida all’installazione sul sito ufficiale di Helm.
Come creare un Chart
Una volta installato Helm, si può iniziare a costruire il proprio Chart di esempio utilizzando la riga di comando. Per farlo, eseguiamo il comando:
helm create [NOME_CHART]
Questo comando crea una nuova cartella con il nome del Chart specificato, che conterrà i file necessari per definire l’applicazione, compresi quelli descritti in precedenza.
Installare un Chart
Definita l’applicazione utilizzando il Chart, è possibile installarla sul cluster Kubernetes utilizzando il comando helm install:
helm install [NOME_CHART] [NOME_RELEASE]
Una release è un’istanza di un Chart in esecuzione in un cluster Kubernetes con un nome specifico. Quando un Chart viene installato, la libreria Helm crea una release per tenere traccia dell’installazione.
Questo significa che un singolo Chart può essere installato più volte nello stesso cluster e creare molte release diverse: ad esempio, è possibile installare tre database PostgreSQL eseguendo helm install tre volte e fornire un nome di release diverso.
Come aggiornare un’applicazione
Uno dei vantaggi dell’uso di Helm Chart è che consente di aggiornare e ripristinare facilmente l’applicazione. È possibile aggiornare l’applicazione modificando il file values.yaml e utilizzando il comando helm upgrade.
helm upgrade [NOME_RELEASE] [NOME_CHART]
Questo comando aggiorna il Chart e il nome della release specificati sul cluster.
E se volessi tornare indietro di una modifica?
Come il software versioning, è possibile tornare indietro di un “commit” anche nelle release, e per questo esiste il comando helm rollback:
helm rollback [NOME_RELEASE] [REVISIONE]
Ad esempio, un’applicazione potrebbe avere per la stessa release diverse revisioni, che corrispondono a diverse modifiche e aggiornamenti della stessa, ognuna con una revisione diversa:
helm history myapp
>>>
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Initial install
2 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Upgraded successfully
3 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Rolled back to 2
4 Mon Oct 3 10:15:13 2016 deployed alpine-0.1.0 1.0 Upgraded successfully
Semplice, no?
Risorse utili
- Manuale su Docker - Guida per cominciare bene con Docker e Kubernetes
- Manuale su Kubernetes - Guida per gestire e orchestrare i container