Nozioni di base di Helm

Completato

Durante la distribuzione, il controllo delle versioni e l'aggiornamento delle applicazioni, è necessario assicurarsi di avere le versioni corrette delle librerie software e delle configurazioni in modo che l'applicazione funzioni come previsto.

Si supponga che il team di sviluppo decida di distribuire il sito Web aziendale del negozio per animali in Kubernetes. Nell'ambito del processo, il team crea file basati su YAML di distribuzione, servizio e ingresso. Si decide di impostare come hardcoded e gestire manualmente le informazioni in ogni file per ogni ambiente di destinazione. La gestione di tre file per ogni ambiente è tuttavia complicata e la complessità aumenta man mano che l'applicazione si espande.

A diagram that shows a container deployed to a Kubernetes node using a deployment, a service, and an ingress YAML file.

È possibile usare Helm per semplificare il processo di distribuzione delle applicazioni ed evitare impostazioni e variabili di distribuzione hardcoded.

Che cos'è Helm?

Helm è uno strumento di gestione pacchetti per Kubernetes che combina tutte le risorse e le informazioni di distribuzione dell'applicazione in un unico pacchetto di distribuzione.

A diagram shows a containerized app deployed to a Kubernetes cluster using a Helm chart.

Helm può essere considerato analogo a Gestione pacchetti di Windows in Windows, ad Advanced Package Tool (apt) in Linux o a Homebrew in macOS. Si specifica il nome dell'applicazione da installare, aggiornare o rimuovere e Helm gestisce il processo.

Con Helm non si è tuttavia limitati all'installazione di una singola app alla volta. Helm consente di creare file di script YAML leggibili basati su modelli per gestire la distribuzione dell'applicazione. Questi file modello consentono di specificare tutte le dipendenze, i mapping di configurazione e i segreti necessari per gestire correttamente la distribuzione di un'applicazione.

Helm usa quattro componenti per gestire le distribuzioni delle applicazioni in un cluster Kubernetes:

  • Client Helm
  • Chart Helm
  • Versioni Helm
  • Repository Helm

Che cos'è il client Helm?

Il client Helm è un oggetto binario installato nel client responsabile della creazione e dell'invio dei file manifesto necessari per distribuire un'applicazione Kubernetes. Il client è responsabile dell'interazione tra l'utente e il cluster Kubernetes.

A diagram shows the communication between three Helm components to create a Helm release; the client, chart, and repository.

Il client Helm è disponibile per tutti i principali sistemi operativi e viene installato nel computer client. In Azure il client Helm è preinstallato in Cloud Shell e supporta tutte le funzionalità di sicurezza, identità e autorizzazione di Kubernetes.

Nota

Questo modulo presuppone l'uso di Helm v3. È possibile eseguire il comando helm version per controllare la versione di Helm in esecuzione nel dispositivo client. Se si esegue Helm v2, tenere presente che alcuni parametri dei comandi in questo modulo saranno diversi.

Che cos'è un chart Helm?

Un chart Helm è un pacchetto di distribuzione basato su modello che descrive un set correlato di risorse Kubernetes. Contiene tutte le informazioni necessarie per creare e distribuire i file manifesto per l'esecuzione di un'applicazione in un cluster Kubernetes.

Un chart Helm è costituito da diversi file e cartelle che descrivono il chart. Alcuni componenti sono obbligatori e altri facoltativi. Ciò che si sceglie di includere dipende dai requisiti di configurazione delle app.

L'elenco seguente descrive i componenti di file e cartelle di un chart Helm con gli elementi obbligatori in grassetto:

File/Cartella Descrizione
Chart.yaml File YAML contenente le informazioni sul chart.
values.yaml Valori di configurazione predefiniti per il chart.
templates/ Cartella contenente i modelli di distribuzione per il chart.
LICENSE File di testo normale contenente la licenza per il chart.
README.md File markdown contenente le istruzioni su come usare il chart.
values.schema.json** File di schema per applicare la struttura al file values.yaml.
charts/ Cartella contenente tutti i chart secondari del chart principale.
crds/ Definizioni di risorse personalizzate.
templates/Notes.txt File di testo contenente le note sull'utilizzo del modello.

Che cos'è una versione Helm?

Una versione di Helm è l'applicazione o il gruppo di applicazioni distribuito tramite un chart. Ogni volta che si installa un chart, nel cluster viene creata una nuova istanza di un'applicazione. Ogni istanza ha un nome di versione che consente di interagire con l'istanza dell'applicazione specifica.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The release is highlighted.

Si supponga, ad esempio, di avere installato due istanze di Nginx nel cluster Kubernetes usando un chart. Si decide quindi di aggiornare la prima istanza di Nginx, ma non la seconda. Poiché le due versioni sono diverse, è possibile aggiornare la prima versione senza alcun effetto sulla seconda.

Che cos'è un repository Helm?

Un repository Helm è un server HTTP dedicato che archivia le informazioni nei chart Helm. Il server ospita un file che descrive i chart e dove scaricarli.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The repository is highlighted.

Il progetto Helm ospita numerosi chart pubblici e ci sono molti repository da cui è possibile riutilizzare i chart. I repository Helm consentono di individuare e riutilizzare i pacchetti Helm in modo più semplice.

Vantaggi dell'uso di Helm

Helm offre numerosi vantaggi che semplificano la distribuzione delle applicazioni e migliorano la produttività nel ciclo di vita di sviluppo e distribuzione delle applicazioni native del cloud. Con Helm sono disponibili versioni delle applicazioni con le caratteristiche seguenti:

  • Ripetibile
  • Affidabile
  • Gestibile in ambienti diversi e complessi
  • Riutilizzabili tra team di sviluppo diversi

Un chart Helm standardizza la distribuzione di un'applicazione grazie all'uso di una logica di modelli in pacchetti con parametrizzazione in base a valori di input definiti. Questa struttura di pacchetti basati su modelli fornisce un approccio indipendente dall'ambiente alla distribuzione e alla condivisione di applicazioni cloud native.