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.
Newsletter di settore
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.
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.
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.
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.
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.
Helm funziona principalmente come uno strumento lato client che interagisce direttamente con l'apiserver di Kubernetes per gestire le distribuzioni delle applicazioni:
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.
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.
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.
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.
Un grafico Helm è una raccolta di file che descrivono un insieme correlato di risorse Kubernetes. La struttura del grafico comprende:
Gli sviluppatori Kubernetes, gli amministratori di sistema e altri professionisti delle operazioni IT (ITOps) delle organizzazioni enterprise utilizzano Helm per svolgere attività come:
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Scopri i servizi altamente innovativi di IBM Consulting per la gestione di ambienti complessi, ibridi e multicloud.
1. CNCF 2023 Annual Survey, Cloud Native Computing Foundation, 2023