Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Cum se folosește Helm în Kubernetes

29 aprilie 2018 By Bobses 3 comentarii

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
$ helm inspect stable/mariadb
   # această comandă ne arată capabilitățile și modul de configurare a unui chart
$ 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

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Tutoriale Etichete: containere, docker, helm, k8s, kubernetes

Trackbacks

  1. Prometheus Operator: administrare Prometheus, Alertmanager și Grafana în Kubernetes | Despre Linux spune:
    20 iunie 2021 la 11:24

    […] al doilea rând, avem nevoie de Helm - este cea mai simplă modalitate de instalare și menținere a Operatorului […]

    Răspunde
  2. Minikube, cel mai simplu mod de a rula local Kubernetes | Despre Linux spune:
    30 iunie 2018 la 17:09

    […] Helm așa cum am descris aici. Dacă aveți probleme la funcționarea cu Minikube, este posibil să trebuiască să instalați […]

    Răspunde
  3. Kubernetes la DigitalOcean: un nou serviciu pus la dispoziție de platforma cloud | Despre Linux spune:
    5 mai 2018 la 11:43

    […] Mi-ar plăcea să văd că vor oferi suport și pentru Helm. […]

    Răspunde

Lasă un răspuns Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}