Helm in 5 minuti
Tags: kubernetes, openshift, helm
Published: 2023-10-03 14:22:24

---
title: Helm in 5 minuti
published: true
date: 2023-07-27 00:00:00 UTC
tags:
  - "kubernetes"
  - "openshift"
  - "helm"
canonical_url: 
---

# Cos’è Helm

Helm è un gestore di pacchetti open-source per [Kubernetes](https://www.theredcode.it/tags/kubernetes/).

Viene utilizzato per **installare** , **aggiornare** e **gestire** le applicazioni sui cluster [Kubernetes](https://www.theredcode.it/tags/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](https://www.theredcode.it/tags/kubernetes/) necessari per l’esecuzione dell’applicazione, come Deployment, i Services e Ingress.

![](https://theredcode.it/img/chart-esempio.png)

_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](https://www.theredcode.it/tags/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](https://helm.sh/docs/intro/install/)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](https://www.theredcode.it/tags/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](https://www.theredcode.it/tags/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](https://en.wikipedia.org/wiki/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](https://amzn.to/3cSVvUG) - Guida per cominciare bene con Docker e Kubernetes
- [Manuale su Kubernetes](https://amzn.to/44bLfyR) - Guida per gestire e orchestrare i container