Cos'è Helm?

Un uomo e una donna che guardano uno schermo

Autori

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è Helm?

Helm è un gestore di pacchetti per Kubernetes che semplifica la distribuzione e la gestione delle applicazioni.

Invece di creare e gestire manualmente decine di file di configurazione separati, Helm raggruppa tutto il necessario per un'applicazione in un unico pacchetto riutilizzabile, chiamato grafico Helm.

Helm aiuta a ridurre la complessità del lavoro con Kubernetes, la piattaforma open source che automatizza l'implementazione e il funzionamento di applicazioni containerizzate su più server. Sebbene Kubernetes sia potente, spesso richiede una configurazione estesa e dettagliata scritta in file YAML, che specifica come devono essere eseguite le applicazioni, come si connettono e di quali risorse necessitano.

La gestione manuale di queste configurazioni da parte di sviluppatori, amministratori di sistema e ingegneri DevOps, in particolare in più ambienti come sviluppo, test e produzione, può diventare rapidamente dispendiosa in termini di tempo e soggetta a errori. Helm affronta questa sfida introducendo la standardizzazione, la possibilità di riutilizzo e il controllo delle versioni, con caratteristiche che includono rollback e personalizzazione specifica per l'ambiente.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Cos'è la containerizzazione?

Prima di immergersi in Helm, è essenziale comprendere la containerizzazione, le basi di Kubernetes e i moderni strumenti cloud-native .

La containerizzazione racchiude, in un'unità leggera e portatile chiamata container, un'applicazione con tutto ciò di cui ha bisogno per l'esecuzione (codice, librerie e configurazione). Questa funzionalità consente al software di funzionare in modo uniforme in vari ambienti, dal laptop di uno sviluppatore a un ambiente cloud di produzione.

I container sono in genere basati su Linux e sono più veloci ed efficienti delle tradizionali macchine virtuali. Sono adatti anche per le architetture di microservizi, in cui le applicazioni sono suddivise in componenti più piccoli e implementabili indipendentemente, scalabili in base alle necessità. In Kubernetes, questi workload containerizzati vengono eseguiti su un cluster, un gruppo di macchine costituito da un piano di controllo che gestisce il sistema, e nodi di lavoro che eseguono le applicazioni in tutta l'infrastruttura.

Docker, una piattaforma open source rilasciata al pubblico nel 2013, è lo strumento di containerizzazione più utilizzato. La containerizzazione è attualmente una parte fondamentale dell'ecosistema open source cloud-native, che consente uno sviluppo più rapido, implementazioni più affidabili e una maggiore flessibilità operativa.

Kubernetes gestisce i container su larga scala automatizzando la distribuzione, il ridimensionamento e la gestione delle risorse. Tuttavia, la gestione diretta delle configurazioni di Kubernetes può essere complessa e soggetta a errori. Helm gioca un ruolo fondamentale in questo contesto, semplificando, standardizzando e ottimizzando la distribuzione e la manutenzione delle applicazioni.

Sviluppo di applicazioni

Sali a bordo: sviluppo di applicazioni Enterprise nel cloud

In questo video il Dr. Peter Haumer illustra l'aspetto del moderno sviluppo di applicazioni aziendali nell'hybrid cloud, mostrando diversi componenti e pratiche, tra cui IBM Z Open Editor, IBM Wazi e Zowe. 

L'evoluzione di Helm

Deis (successivamente acquisita da Microsoft) ha creato Helm nel 2016 come uno dei primi strumenti per semplificare la gestione delle applicazioni Kubernetes. Nel 2018, il team ha donato il progetto alla Cloud Native Computing Foundation (CNCF), che lo ha trasformato in un progetto CNCF completo nel 2020.

Lo sviluppo open source di Helm viene gestito attivamente su GitHub, dove collaboratori di tutto il mondo partecipano alla sua evoluzione. Il sito ufficiale, helm.sh, fornisce documentazione completa (documenti), download e risorse per aiutare gli utenti a iniziare e rimanere aggiornati.

Un traguardo fondamentale è stato il rilascio di Helm 3 alla fine del 2019. Questa versione ha rimosso il componente Tiller da Helm 2, migliorando la sicurezza e semplificando il controllo degli accessi, interagendo direttamente con le application programming interface (API) di Kubernetes. Helm 3 ha inoltre migliorato i processi di aggiornamento, la gestione delle dipendenze e il supporto per i grafici delle librerie, rendendolo più sicuro, flessibile e facile da usare nelle aziende.

Helm ha sperimentato una massiccia adozione in tutto l'ecosistema cloud-native. Secondo recenti sondaggi del CNCF, Helm è il gestore di pacchetti Kubernetes preferito, con un'adozione del 75% tra le organizzazioni che utilizzano Kubernetes.1

Artifact Hub (che ha sostituito l'originale Helm Hub) contiene migliaia di grafici e i principali vendor di software forniscono abitualmente i grafici Helm come metodo di distribuzione principale di Kubernetes.

Come funziona Helm?

Helm semplifica la gestione delle applicazioni Kubernetes raggruppando i manifesti Kubernetes (file di configurazione), i modelli di configurazione e i metadati in pacchetti riutilizzabili chiamati diagrammi Helm. Questi grafici contengono tutte le specifiche necessarie per generare i file YAML appropriati per le risorse Kubernetes, come distribuzioni, servizi, controller di ingresso, volumi persistenti, configMaps e segreti che compongono un'applicazione. 

“YAML” è un acronimo che sta per "YAML Ain't Markup Language" o "Yet Another Markup Language". Si tratta di un formato di dati facile da usare per scrivere file di configurazione, che offre un modo chiaro e strutturato per rappresentare informazioni leggibili sia dalle persone che dai programmi.

Quando viene installato un grafico, Helm applica automaticamente queste risorse al cluster Kubernetes di destinazione, con il supporto di versioning, rollback e gestione delle dipendenze incorporato.

Architettura e componenti di Helm

Helm funziona principalmente come uno strumento lato client che interagisce direttamente con l'apiserver di Kubernetes per gestire le distribuzioni delle applicazioni:

  • Client Helm
  • Grafico Helm
  • Release Helm
  • Repository Helm

Cliente Helm

Un client Helm è uno strumento da riga di comando (CLI) che interagisce con i cluster Kubernetes e gestisce grafici e release. Sviluppatori e operatori utilizzano quotidianamente questo strumento. A differenza di kubectl, lo strumento di comando nativo di Kubernetes, Helm gestisce intere applicazioni anziché singoli componenti.

Grafico Helm

Un grafico Helm è un formato di packaging che contiene tutte le definizioni delle risorse necessarie per eseguire un'applicazione su Kubernetes. I grafici includono modelli, valori di configurazione predefiniti e metadati.

Release Helm

Una versione di Helm è un'istanza di un grafico in esecuzione in un cluster Kubernetes. Ogni release ha un nome univoco e può essere gestita in modo indipendente.

Repository Helm o repo Helm

I repository Helm sono raccolte di grafici che possono essere condivise e distribuite, simili agli app store o alle librerie di pacchetti in altri ecosistemi.

Com'è strutturato un grafico Helm?

Un grafico Helm è una raccolta di file che descrivono un insieme correlato di risorse Kubernetes. La struttura del grafico comprende:

  • I modelli Helm sono manifesti Kubernetes basati che si adattano a diversi ambienti di implementazione come sviluppo, staging e produzione, utilizzando parametri configurabili.
  • I file dei valori (values.yaml) sono valori di configurazione predefiniti che possono essere sottoposti a override per distribuzioni diverse. I valori possono essere forniti in formato YAML o JSON.
  • I metadati del grafico (chart.yaml) descrivono il nome, la versione, la versione API, le dipendenze e i maintainer del grafico.
  • La documentazione include contenuti leggibili dall'uomo (ad esempio, file readme, guide rapide o istruzioni per l'uso) che aiutano gli utenti a capire come distribuire e utilizzare il grafico.

Benefici di Helm per le organizzazioni

Gli sviluppatori Kubernetes, gli amministratori di sistema e altri professionisti delle operazioni IT (ITOps) delle organizzazioni enterprise utilizzano Helm per svolgere attività come:

  • Efficienza operativa
  • Attenuazione dei rischi
  • Governance e conformità
  • Produttività degli sviluppatori

Efficienza operativa

Helm riduce significativamente la complessità operativa associata alla gestione delle distribuzioni Kubernetes. Automatizzando e standardizzando la gestione della configurazione, Helm semplifica i workflow che altrimenti comporterebbero una modifica manuale YAML complessa e soggetta a errori.

Questa efficienza diventa particolarmente importante quando le organizzazioni scalano i loro ambienti cloud-native e adottano tecnologie emergenti, come l'edge computing e i workload di intelligenza artificiale (AI) e machine learning (ML).

Attenuazione dei rischi

Le funzionalità di rollback integrate di Helm forniscono reti di sicurezza cruciali per le implementazioni di produzione. Se un aggiornamento fallisce o causa problemi, i team possono tornare istantaneamente alla versione precedente con un solo comando. Questa funzione riduce il tempo medio di ripristino (MTTR) per gli incidenti legati all'implementazione, che è un requisito essenziale per le applicazioni ad alta disponibilità e i servizi di inferenza AI in tempo reale.

Governance e conformità

I grafici Helm e gli schemi possono essere sottoposti a controllo di versione e a revisione del codice come qualsiasi altro artefatto software. Questo approccio fornisce tracce di audit per le implementazioni e garantisce che le modifiche siano sottoposte a processi di approvazione adeguati. Molte organizzazioni utilizzano Helm con i workflow GitOps per migliorare la governance, il che le aiuta a soddisfare i requisiti di conformità nei settori regolamentati che adottano architetture cloud-native.

Produttività degli sviluppatori

Eliminando la complessità di Kubernetes, Helm consente agli sviluppatori di concentrarsi sulla logica delle applicazioni piuttosto che sulla configurazione dell'infrastruttura. I team possono usare autonomamente implementazioni che utilizzano grafici preapprovati, riducendo le dipendenze dai team della piattaforma e accelerando la velocità di sviluppo necessaria per iniziative competitive di AI e trasformazione digitale.

Casi d’uso di Helm

  • Gestione del ciclo di vita delle applicazioni
  • Implementazione di software di terze parti
  • Ambienti multitenant
  • Integrazione e scalabilità CI/CD
  • Workload AI/ML e GPU
Gestione del ciclo di vita delle applicazioni

Le organizzazioni usano comunemente Helm per gestire applicazioni personalizzate in ambienti di sviluppo, staging e produzione. Un singolo grafico può essere configurato con limiti di risorse, repliche e caratteristiche diversi per ogni ambiente.

Implementazione di software di terze parti

L'installazione e la gestione di software di terze parti, come database, strumenti di monitoraggio o componenti CI/CD, è più semplice con Helm. Invece di seguire una documentazione di installazione complessa, i team possono installare configurazioni pronte per la produzione con un solo comando di installazione di Helm.

Ambienti multitenant

Helm eccelle negli scenari in cui la stessa applicazione deve essere implementata più volte con configurazioni diverse in namespace separati. Le piattaforme SaaS, ad esempio, utilizzano spesso Helm per gestire le implementazioni delle loro applicazioni specifiche per i clienti.

Integrazione e scalabilità CI/CD

Helm si integra perfettamente con le pipeline di integrazione continua e di distribuzione continua, fungendo da meccanismo di distribuzione nelle delivery pipeline automatizzate. Le piattaforme di e-commerce utilizzano Helm per gestire la scalabilità stagionale, distribuire rapidamente altre istanze di applicazioni durante i periodi di punta del traffico e ridimensionare durante le ore non di punta, il tutto gestito tramite le versioni di Helm.

Workload AI/ML e GPU

Helm è una soluzione ideale per la gestione dei workload di intelligenza artificiale (AI) e machine learning (ML), che spesso richiedono configurazioni complesse, tra cui risorse GPU, storage specializzato, componenti model-serving e sistemi di monitoraggio. Le organizzazioni utilizzano Helm per standardizzare la distribuzione delle pipeline di ML, garantendo ambienti uniformi per i workload di addestramento e inferenza in entrambi i cluster di sviluppo e produzione.

Helm e approcci alternativi a confronto

Helm e Kustomize a confronto

Kustomize è un'altra soluzione ampiamente utilizzata per la gestione delle configurazioni di Kubernetes, anche se adotta un approccio diverso da Helm. Mentre Helm utilizza il templating per generare i manifesti, Kustomize utilizza un approccio dichiarativo con patch e sovrapposizioni per modificare le configurazioni di base.

Kustomize è più semplice e richiede una curva di apprendimento più bassa, ma manca delle funzionalità di gestione dei pacchetti, di versioning e di rollback di Helm. Molte organizzazioni utilizzano entrambi gli strumenti, facendo gestire a Kustomize le varianti di configurazione e ad Helm il ciclo di vita complessivo dell'applicazione.

Helm e operatori Kubernetes a confronto

Gli operatori Kubernetes sono controller specifici dell'applicazione che estendono le API Kubernetes per gestire applicazioni complesse. Mentre Helm si concentra sul packaging e sulla distribuzione, gli operatori forniscono una gestione continua del ciclo di vita. Sono in grado di gestire attività operative specifiche dell'applicazione, come backup, scalabilità e aggiornamenti.

Helm è più adatto per la distribuzione di applicazioni generali e workload più semplici. Allo stesso tempo, gli operatori eccellono nella gestione di applicazioni stateful con requisiti operativi complessi. Molte organizzazioni utilizzano Helm per distribuire autonomamente gli operatori.

Soluzioni correlate
IBM Concert

Semplifica la gestione delle applicazioni e ottieni insight fruibili generati dall'AI con IBM Concert, una piattaforma di automazione della tecnologia basata su AI generativa.

Esplora IBM Concert
Software e soluzioni di Application Performance Management

Collega la full stack observability con la gestione automatizzata delle risorse delle applicazioni per risolvere i problemi di prestazioni prima che influiscano sull'esperienza del cliente.

Esplora le soluzioni di Application Performance Management
Servizi di gestione delle applicazioni per il cloud ibrido

Scopri i servizi altamente innovativi di IBM Consulting per la gestione di ambienti complessi, ibridi e multicloud.

Esplora i servizi di gestione delle applicazioni
Prossimi passi

Attraverso l'AI, IBM Concert scopre insight di importanza chiave sulle operazioni e fornisce raccomandazioni specifiche per migliorare le applicazioni. Scopri come Concert può migliorare il tuo business.

Esplora Concert Partecipa a un tour autoguidato
Note a piè di pagina

1. CNCF 2023 Annual Survey, Cloud Native Computing Foundation, 2023