saverioriotto.it

Che cos'è Helm e perché è importante per le implementazioni di Kubernetes

Il rapido successo di Kubernetes ha creato un insieme di strumenti per semplificare la complessità dello sviluppo e della distribuzione delle applicazioni.

Che cos'è Helm e perché è importante per le implementazioni di Kubernetes

Helm è uno strumento per la creazione di pacchetti open source che consente di installare e gestire il ciclo di vita delle applicazioni Kubernetes. Analogamente agli strumenti di gestione pacchetti di Linux, come APT e Yum, Helm viene usato per gestire i Charts per Kubernetes, che sono pacchetti di risorse Kubernetes preconfigurate.

Perché Helm?

La versione iniziale di Helm è stata il risultato di una combinazione di sforzi da parte di Deis (una società di utensili per container, ora parte di Microsoft) e Google. Nel giugno 2018, Helm è stato adottato come progetto ufficiale CNCF.

Il riconoscimento CNCF è importante per due motivi:

 - Apre il supporto del progetto a una più ampia comunità open source
 - Consolida efficacemente Helm come standard per la gestione dei pacchetti Kubernetes

Mentre il problema della gestione delle applicazioni su Kubernetes può essere complesso, Helm stesso è abbastanza semplice da usare, se comprendi alcuni concetti chiave:

Charts

Un chart Helm è semplicemente una raccolta di file modello YAML organizzati in una struttura di directory specifica. I charts sono in qualche modo analoghi ai file DEB e RPM. Tuttavia, poiché sono basati su testo, sono versionabili e semplici da gestire con gli strumenti SCM familiari.

~>tree demo-chart/
demo-chart/
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── rbac.yaml
│   └── service.yaml
└── values.yaml

Releases

Helm è più di un semplice formato, è anche lo strumento utilizzato per installare i charts Helm.

Estendendo l'analogia sopra, per installare NGNIX su un sistema basato su Debian avresti eseguito apt install nginx. Allo stesso modo, per installare NGINX in un cluster Kubernetes, puoi semplicemente eseguire helm install nginx.

Ogni installazione di un chart Helm nel cluster viene definita rilascio. Tuttavia, a differenza dei tradizionali gestori di pacchetti del sistema operativo, con Helm è facile avere più versioni installate su un singolo cluster, ognuna con la propria configurazione specifica.

Repositories

Le chart di Helm possono inoltre essere pubblicate nei repository. Questi possono essere repository privati ​​per uso interno o ospitati pubblicamente, come hub.kubeapps.com. Ancora una volta, come yum e apt, possono essere cercati per scoprire cosa è disponibile.

helm search nginx
NAME                       	CHART VERSION	APP VERSION	DESCRIPTION                                       
stable/nginx-ingress       	0.23.0       	0.15.0     	An nginx Ingress controller that uses ConfigMap...
stable/nginx-ldapauth-proxy	0.1.2        	1.13.5     	nginx proxy with ldapauth                         
stable/nginx-lego          	0.3.1        	           	Chart for nginx-ingress-controller and kube-lego  
stable/gcloud-endpoints    	0.1.2        	1          	DEPRECATED Develop, deploy, protect and monitor...

Le chart di Helm pubbliche possono essere un'ottima risorsa, sia per iniziare rapidamente a funzionare, sia per sperimentare nuove tecnologie.

Perché Helm è importante per le distribuzioni di Kubernetes?

Helm oltre a svolgere le precedenti funzioni, può effettivamente svolgere un ruolo molto più grande nell'ottimizzazione dell'integrazione CI / CD di un'organizzazione con Kubernetes.

Come accennato, ogni distribuzione di un chart è una versione di Helm. Helm mantiene automaticamente una cronologia delle versioni. Se qualcosa va storto con una distribuzione, tornare al tuo stato precedente può essere semplice come il rollback del helm RELEASE_NAME.

Helm fornisce inoltre diversi hook di integrazione della pipeline CI / CD, in modo da poter configurare le azioni da eseguire, ad esempio, prima dell'inizio dell'installazione o al termine di un aggiornamento. È anche possibile configurare i controlli di integrità per l'esecuzione di Helm e verificare che una distribuzione sia stata completata correttamente.




Commenti
* Obbligatorio