După ce am construit propriul cluster Kubernetes, a venit timpul să lansăm containere cu aplicații. Pe lângă modalitatea clasică de a lansa un deployment, în ultimul timp a apărut și ceva care, probabil, va deveni parte din Kubernetes: HELM. Helm și Kubernetes reprezintă viitorul containerizării: cu Helm, clusterul Kubernetes poate fi folosit într-un mod mult mai rapid.
Ce este Helm?
Gândiți-vă la Helm ca la un manager de pachete: pacman în Arch Linux, apt-get în Ubuntu sau yum/dnf în Red Hat/Fedora. Helm este dezvoltat de cei de la Deis și ne ajută să gestionăm aplicațiile K8s. Cu Helm Charts a devenit o joacă lansarea, menținerea, actualizarea, revenirea la o versiune anterioară sau ștergerea aplicațiilor în Kubernetes.
Un chart este usor de creat, menținut, distribuit. Chart-urile sunt pachete de resurse Kubernetes preconfigurate.
Ultima versiune Helm este menținută de Cloud Native Computing Foundation (CNCF), în colaborare cu Microsoft, Google, Bitnami și comunitatea contributorilor Helm.
Helm este folosit pentru:
- căutarea și utilizarea software-ului popular împachetat sub forma Kubernetes charts
- distribuirea propriilor aplicații sub forma Kubernetes charts
- gestionarea inteligentă a fișierelor manifest Kubernetes
- gestionarea versiunilor pachetelor Helm
Din ce este compus Helm
Helm este compus din două părți: clientul (helm) și un server (tiller).
Serverul tiller rulează în interiorul clusterului K8s și gestionează instalările chart-urilor.
Chart-urile sunt pachete Helm care conțin cel puțin 2 lucruri:
- o descriere a pachetului (chart.yaml)
- unul sau mai multe template-uri care conțin fișierele manifest Kubernetes
Chart-urile pot fi stocate pe disc sau aduse din depozite chart (exact cum procedează Debian, Ubuntu sau Red Hat).
Instalarea Helm
Pentru a instala Helm trebuie:
- să avem acces la un cluster Kubernetes
- să decidem ce fel de configurări de securitate aplicăm instalării noastre (sau dacă este cazul să aplicăm astfel de setări)
- să instalăm și să configurăm cele 2 componente: Helm și Tiller.
Dacă vom instala Helm pe un cluster asupra căruai avem control complet (de exemplu, minikube sau un cluster contruit într-o rețea privată în care partajarea nu este o problemă), instalarea default, în care nu trebuie să ne facem griji asupra securității, este cea mai simplă.
Așadar, voi continua cu instalarea default, fără configurarea unor pași adiționali de securitate. Presupunem că avem un cluster configurat ca aici. Sunt mai multe modalități de instalare Helm, dar eu am ales-o pe cea care instalează Helm local, cu ajutorul unui script: vom descărca acest script, apoi îl vom rula.
$ curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Instalare Tiller
Tiller, partea de server din Helm, se instalează, de regulă, în interiorul clusterului Kubernetes. Dar , uneori, pentru dezvoltare, poate fi instalat și rulal local, apoi configurat să comunice remote cu un cluster Kubernetes.
Noi îl vom instala pe cluster. Cea mai simplă cale de a instala tiller pe cluster este să rulăm comanda helm init
. Această comandă va valida mediul local în care este instalat Helm și va face configurările necesare: se va conecta la clusterul la care se conectează comanda kubectl
(rulați comanda kubectl config view
), apoi va instala tiller în namespace-ul kube-system.
Așadar, după cum ni se sugerează la finalul instalării Helm, să rulăm comanda de inițializare și care instalează Tiller:
$ helm init
După rularea acestei comenzi, vom putea rula kubectl get pods --namespace kube-system
și să vizualizăm podul Tiller:
Acum, rularea comenzii helm version
ne va arăta la ce versiune se află Helm și Tiller (pentru a nu apărea necazuri ulterioare, este recomandat ca cele două să fie la aceeași versiune).
Pentru upgrade-ul Tiller, vom rula:
$ helm init --upgrade
Pentru a șterge Tiller (și opțional configurarea locală care, default, se află în ~/.helm):
$ helm reset
Instalarea unui chart
Helm are mai multe moduri de a instala un chart, dar cea mai simplă este cea din depozitul oficial Helm stable.
$ helm repo update
# această comandă se sigură că s-a actualizat cu întreaga listă de chart-uri $ helm search
# această comandă va afișa toate chart-urile din depozitul stable
# această comandă ne arată capabilitățile și modul de configurare a unui chart
$ helm inspect stable/mariadb
$ helm install stable/mariadb
În exemplul de mai sus am instalat/lansat chart-ul mysql. Output-ul este de forma:
$
helm install stable/mysql
NAME: exhaling-donkey
LASTE DEPLOYED: ....
NAMESPACE: default
STATUS: DEPLOYED
...
După cum veți vedea în imaginea de mai jos, după instalare ni se oferă câteva informații valoroare: numele deploymentului, statusul său, namespace-ul unde a fost instalat, resurse, dar și note de configurare:
Pentru a revedea ulterior aceste informații, trebuie să rulați comanda helm status
urmată de numele deploymentului:
$ helm status exhaling-donkey
Numele oferit de Helm este tot timpul de acest gen: exhaling-donkey, smiling-penguin, etc. Dar la instalarea unui chart putem să optăm pentru orice nume dorim:
$ helm install stable/mariadb --name numele_ales_de_noi
Putem să instalăm un chart de câte ori dorim în interiorul aceluiași cluster.
Informații despre aplicații
Pentru a vizualiza aplicațiile (chart-urile) instalate prin helm:
$ helm list
sau
$ helm ls
Ștergerea unei aplicații
Pentru a șterge un chart instalat cu Helm, nu trebuie decât să rulăm comanda helm delete
(putem să-i adăugăm și parametrul --purge
pentru a putea refolosi ulterior numele chart-ului):
$ helm delete /stable/mariadb --purge
Adăugare și ștergere repository
Pe lângă depozitul default stable, putem adăuga și alte repositories cu comanda:
$ helm repo add nume-repo https://adresa_IP_repo/charts
Cu comanda de mai jos vizualizăm depozitele curente:
$ helm repo list
Pentru a șterge un repo:
$ helm repo remove nume-repo https://adresa_IP_repo/charts
Obținerea ajutorului
Pentru a învăța mai multe despre comanda helm, folosim helm help
sau comanda care ne interesează urmată de flagul -h
sau de --help
:
$ helm help
$ helm delete -h
# informații despre cum poate fi folosită comanda helm delete
$ helm init -h
# informații despre cum poate fi folosită comanda helm init
$ helm get -h
# informații despre cum poate fi folosită comanda helm get
Articolul de față nu prezintă decât partea de suprafață a tot ceea ce se poate face cu Helm în Kubernetes - domeniul este mult prea vast și complex pentru a putea fi cuprins în doar câteva rânduri. Sper să fi reușit să va fi trezit interesul pentru Helm și să căutați să învățați mai mult.
Pentru a vedea informații complete despre Helm (inclusiv securizarea sa), consultați pagina oficială https://docs.helm.sh/.
Documentație Helm pe GitHub: https://github.com/kubernetes/helm/tree/master/docs
[…] al doilea rând, avem nevoie de Helm - este cea mai simplă modalitate de instalare și menținere a Operatorului […]