{"id":34735,"date":"2019-10-31T22:00:06","date_gmt":"2019-10-31T19:00:06","guid":{"rendered":"https:\/\/prohoster.info\/blog\/znakomstvo-s-helm-3\/"},"modified":"2019-10-31T22:00:06","modified_gmt":"2019-10-31T19:00:06","slug":"znakomstvo-s-helm-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/znakomstvo-s-helm-3","title":{"rendered":"Introducere \u00een Helm 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Introducere \u00een Helm 3\" src=\"\/wp-content\/uploads\/2019\/05\/6de0e2887ddcc802f1dd71c902325401.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><b>Nota traduc\u0103torului.<\/b>: 16 mai a acestui an - un moment semnificativ \u00een evolu\u021bia managerului de pachete pentru Kubernetes - Helm. \u00cen aceast\u0103 zi a fost prezentat primul release alpha al viitoarei versiuni majore a proiectului - 3.0. Lansarea sa va aduce schimb\u0103ri substan\u021biale \u0219i foarte a\u0219teptate \u00een Helm, \u00een care mul\u021bi din comunitatea Kubernetes \u00ee\u0219i pun mari speran\u021be. Ne num\u0103r\u0103m printre ace\u0219tia, deoarece folosim activ Helm pentru desf\u0103\u0219urarea aplica\u021biilor: l-am integrat \u00een instrumentul nostru pentru implementarea CI\/CD. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex> \u0219i ocazional contribuim la dezvoltarea upstream. Aceast\u0103 traducere reune\u0219te 7 articole de pe blogul oficial Helm, care sunt legate de primul release alpha al Helm 3 \u0219i vorbesc despre povestea proiectului \u0219i func\u021bionalit\u0103\u021bile principale ale Helm 3. Autorul acestora este Matt \u201ebacongobbler\u201d Fisher, angajat Microsoft \u0219i unul dintre principalii mentori ai Helm.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>15 octombrie 2015 a fost ziua \u00een care a fost lansat proiectul, acum cunoscut drept Helm. La doar un an dup\u0103 \u00eenfiin\u021bare, comunitatea Helm s-a al\u0103turat Kubernetes, lucr\u00e2nd activ la Helm 2. \u00cen iunie 2018, Helm <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cncf.io\/blog\/2018\/06\/01\/cncf-to-host-helm\/\">a devenit parte integrant\u0103 a CNCF<\/a><\/noindex> ca proiect \u00een dezvoltare (incubating). S\u0103 ne revenim \u00een prezent - \u0219i acum se apropie primul release alpha al noului Helm 3. <i>(acest release <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/releases\/tag\/v3.0.0-alpha.1\">deja a avut loc<\/a><\/noindex> la mijlocul lunii mai - n.red.)<\/i>.<\/p>\n<p>\u00cen acest material, voi povesti despre cum au \u00eenceput toate, cum am ajuns la aceast\u0103 etap\u0103, voi prezenta unele caracteristici unice disponibile \u00een primul release alpha al Helm 3 \u0219i voi explica cum ne propunem s\u0103 ne dezvolt\u0103m \u00een continuare.<\/p>\n<p>Sumar:<\/p>\n<ul>\n<li>povestea cre\u0103rii Helm;<\/li>\n<li>un r\u0103mas bun bl\u00e2nd de la Tiller;<\/li>\n<li>repozitoarele chart-urilor;<\/li>\n<li>managementul release-urilor;<\/li>\n<li>modific\u0103rile \u00een dependen\u021bele chart-urilor;<\/li>\n<li>library charts;<\/li>\n<li>ce urmeaz\u0103?<\/li>\n<\/ul>\n<p><\/p>\n<h2>Povestea cre\u0103rii Helm<\/h2>\n<p><\/p>\n<h3>Na\u0219terea<\/h3>\n<p>\nHelm 1 a \u00eenceput ca un proiect Open Source, creat de compania Deis. Eram o mic\u0103 startup, <noindex><a rel=\"nofollow\" href=\"https:\/\/blogs.microsoft.com\/blog\/2017\/04\/10\/microsoft-acquire-deis-help-companies-innovate-containers\/\">care a fost absorbit\u0103<\/a><\/noindex> de Microsoft \u00een prim\u0103vara anului 2017. Un alt proiect Open Source al nostru, tot sub numele Deis, avea un instrument <code>deisctl<\/code>, care era folosit (printre altele) pentru instalarea \u0219i operarea platformei Deis \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/coreos\/fleet\">clusterele Fleet.<\/a><\/noindex>Pe atunci, Fleet era una dintre primele platforme pentru orchestrarea containerelor.<\/p>\n<p>La mijlocul anului 2015, am decis s\u0103 schimb\u0103m direc\u021bia \u0219i am migrat Deis (la acel moment redenumit \u00een Deis Workflow) de la Fleet la Kubernetes. Unul dintre primele lucruri a fost revizuirea instrumentului de instalare. <code>deisctl<\/code>L-am folosit pentru instalarea \u0219i gestionarea Deis Workflow \u00een clusterul Fleet.<\/p>\n<p>Helm 1 a fost creat dup\u0103 modelul unor cunoscu\u021bi manageri de pachete, cum ar fi Homebrew, apt \u0219i yum. Scopul s\u0103u principal a fost simplificarea sarcinilor precum ambalarea \u0219i instalarea aplica\u021biilor \u00een Kubernetes. Helm a fost prezentat oficial \u00een 2015 la conferin\u021ba KubeCon din San Francisco.<\/p>\n<p>Prima noastr\u0103 \u00eencercare cu Helm a avut succes, \u00eens\u0103 nu f\u0103r\u0103 limit\u0103ri serioase. Acesta lua un set de manifesturi Kubernetes, condimentate cu generatoare ca blocuri YAML de intrare. <i>(front-matter)<\/i>*, \u0219i \u00eencarc\u0103 rezultatele \u00een Kubernetes.<\/p>\n<p><i>* <b>Nota traduc\u0103torului.<\/b>: Din prima versiune Helm, sintaxa YAML a fost aleas\u0103 pentru a descrie resursele Kubernetes, iar la redactarea configura\u021biilor au fost sus\u021binute \u0219abloanele Jinja \u0219i scripturile Python. Mai multe despre aceasta \u0219i despre arhitectura primei versiuni Helm am scris \u00een capitolul \u201eIstoricul Helm\u201d <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417079\/\">acest material<\/a><\/noindex>.<\/i><\/p>\n<p>De exemplu, pentru a \u00eenlocui un c\u00e2mp \u00een fi\u0219ierul YAML, era necesar s\u0103 ad\u0103uga\u021bi urm\u0103toarea construc\u021bie \u00een manifest:<\/p>\n<pre><code class=\"plaintext\">#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my\/pod.yaml<\/code><\/pre>\n<p>\nUnii ar spune c\u0103 este grozav c\u0103 ast\u0103zi exist\u0103 \u0219abloane, nu-i a\u0219a?<\/p>\n<p>Din multe motive, acest instalator timpuriu pentru Kubernetes necesita o list\u0103 rigoros definit\u0103 de fi\u0219iere manifest \u0219i executa doar o mic\u0103 secven\u021b\u0103 fix\u0103 de evenimente. A fost at\u00e2t de greu de utilizat, \u00eenc\u00e2t echipa de R&amp;D de la Deis Workflow a avut de suferit c\u00e2nd au \u00eencercat s\u0103 \u00ee\u0219i transfere produsul pe aceast\u0103 platform\u0103 \u2014 totu\u0219i, semin\u021bele ideii fuseser\u0103 deja plantate. Prima noastr\u0103 \u00eencercare a devenit o oportunitate excelent\u0103 de \u00eenv\u0103\u021bare: ne-am dat seama c\u0103 suntem cu adev\u0103rat dedica\u021bi cre\u0103rii de instrumente pragmatice care rezolv\u0103 problemele cotidiene ale utilizatorilor no\u0219tri.<\/p>\n<p>Baz\u00e2ndu-ne pe experien\u021ba gre\u0219elilor anterioare, am \u00eenceput dezvoltarea Helm 2.<\/p>\n<h3>Crearea Helm 2<\/h3>\n<p>\nLa sf\u00e2r\u0219itul anului 2015, echipa Google ne-a contactat. Lucraser\u0103 la un instrument similar pentru Kubernetes. Deployment Manager pentru Kubernetes era un port al unui instrument existent care fusese utilizat pentru Platforma Google Cloud. \u201eNu vrem s\u0103 discut\u0103m c\u00e2teva zile despre asem\u0103n\u0103rile \u0219i diferen\u021bele?\u201d, au \u00eentrebat ei.<\/p>\n<p>\u00cen ianuarie 2016, echipele Helm \u0219i Deployment Manager s-au \u00eent\u00e2lnit \u00een Seattle pentru a-\u0219i \u00eemp\u0103rt\u0103\u0219i ideile. Negocierile s-au \u00eencheiat cu un plan ambi\u021bios: de a combina cele dou\u0103 proiecte pentru a crea Helm 2. \u00cempreun\u0103 cu Deis \u0219i Google, la echipa de dezvoltatori s-au al\u0103turat b\u0103ie\u021bii din <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/skippbox\">SkippBox<\/a><\/noindex> <i>(acum parte din Bitnami \u2014 nota trad.)<\/i>, \u0219i am \u00eenceput lucr\u0103rile la Helm 2.<\/p>\n<p>Am dorit s\u0103 p\u0103str\u0103m simplitatea utiliz\u0103rii Helm, dar s\u0103 ad\u0103ug\u0103m urm\u0103toarele:<\/p>\n<ul>\n<li> \u0219abloane de charturi pentru personalizare;<\/li>\n<li> gestionare intra-cluster pentru echipe;<\/li>\n<li> un depozit de charturi de prim\u0103 clas\u0103;<\/li>\n<li> un format stabil al pachetelor cu capacitate de semnare;<\/li>\n<li> o ferm\u0103 angajament fa\u021b\u0103 de versiunea semantic\u0103 \u0219i p\u0103strarea compatibilit\u0103\u021bii \u00eentre versiuni.<\/li>\n<\/ul>\n<p>\nPentru a atinge aceste obiective, \u00een ecosistemul Helm a fost ad\u0103ugat un al doilea element. Acest component intra-cluster a fost numit Tiller \u0219i se ocupa cu instalarea charturilor Helm \u0219i gestionarea acestora.<\/p>\n<p>De la lansarea Helm 2 \u00een 2016, Kubernetes a \u00eenregistrat c\u00e2teva inova\u021bii semnificative. A ap\u0103rut controlul accesului bazat pe roluri (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/422801\/\">RBAC<\/a><\/noindex>), care, \u00een cele din urm\u0103, a \u00eenlocuit controlul accesului bazat pe atribute (ABAC). Au fost introduse noi tipuri de resurse (Deployments erau \u00eenc\u0103 \u00een faza beta la acea vreme). Au fost inventate Defini\u021biile de Resurse Personalizate (initial numite Resurse Ter\u021be sau TPR-uri). \u0218i, cel mai important, a ap\u0103rut un set de bune practici.<\/p>\n<p>Pe fondul acestor schimb\u0103ri, Helm a continuat s\u0103 serveasc\u0103 cu credin\u021b\u0103 utilizatorii Kubernetes. Dup\u0103 trei ani \u0219i multe ad\u0103ugiri noi, a devenit clar c\u0103 era timpul pentru modific\u0103ri semnificative \u00een baza de cod pentru ca Helm s\u0103 poat\u0103 satisface \u00een continuare nevoile \u00een cre\u0219tere ale ecosistemului \u00een dezvoltare.<\/p>\n<h2>un r\u0103mas bun bl\u00e2nd de la Tiller<\/h2>\n<p>\n\u00cen timpul dezvolt\u0103rii Helm 2, l-am introdus pe Tiller ca parte a integr\u0103rii noastre cu Deployment Manager de la Google. Tiller a jucat un rol important pentru echipele care lucrau \u00een cadrul aceluia\u0219i cluster: le permitea diferitelor speciali\u0219ti care operau infrastructura s\u0103 interac\u021bioneze cu acela\u0219i set de versiuni.<\/p>\n<p>Deoarece controlul accesului bazat pe roluri (RBAC) a fost activat implicit \u00een Kubernetes 1.6, lucrul cu Tiller \u00een produc\u021bie a devenit mai complicat. Datorit\u0103 num\u0103rului mare de posibile politici de securitate, pozi\u021bia noastr\u0103 a fost de a oferi implicit o configura\u021bie permisiv\u0103. Aceasta permitea \u00eencep\u0103torilor s\u0103 experimenteze cu Helm \u0219i Kubernetes f\u0103r\u0103 a fi nevoie s\u0103 se familiarizeze mai \u00eent\u00e2i cu set\u0103rile de securitate. Din p\u0103cate, aceast\u0103 configura\u021bie permisiv\u0103 putea oferi utilizatorului prea multe permisiuni, de care nu avea nevoie. Inginerii DevOps \u0219i SRE au trebuit s\u0103 studieze pa\u0219ii suplimentari de operare pentru a instala Tiller \u00eentr-un cluster multi-utilizator.<\/p>\n<p>Afl\u00e2nd cum comunitatea folose\u0219te Helm \u00een situa\u021bii specifice, am \u00een\u021beles c\u0103 sistemul de gestionare a versiunilor Tiller nu trebuia s\u0103 se bazeze pe un component intra-cluster pentru a men\u021bine st\u0103rile sau a func\u021biona ca un hub central cu informa\u021bii despre versiune. \u00cen schimb, am putea s\u0103 ob\u021binem pur \u0219i simplu informa\u021bii de la serverul API Kubernetes, s\u0103 gener\u0103m chart-ul pe partea clientului \u0219i s\u0103 p\u0103str\u0103m un registru al instal\u0103rii \u00een Kubernetes.<\/p>\n<p>Principala func\u021bie a lui Tiller putea fi realizat\u0103 \u0219i f\u0103r\u0103 Tiller, a\u0219a c\u0103 una dintre primele noastre decizii referitor la Helm 3 a fost abandonarea complet\u0103 a lui Tiller.<\/p>\n<p>Odat\u0103 cu plecarea lui Tiller, modelul de securitate Helm s-a simplificat radical. Helm 3 acum suport\u0103 toate metodele moderne de securitate, identificare \u0219i autorizare ale actualului Kubernetes. Permisiunile Helm sunt definite folosind <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/organize-cluster-access-kubeconfig\/\">fi\u0219ierul kubeconfig<\/a><\/noindex>. Administratorii cluster-ului pot restric\u021biona drepturile utilizatorilor cu orice grad de detaliere. Lans\u0103rile continu\u0103 s\u0103 fie p\u0103strate \u00een cadrul cluster-ului, iar restul func\u021bionalit\u0103\u021bii Helm r\u0103m\u00e2ne neschimbat\u0103.<\/p>\n<h2>Repositoarele de chart-uri<\/h2>\n<p>\nLa un nivel \u00eenalt, un repository de chart-uri este un loc \u00een care pot fi stocate \u0219i partajate chart-urile. Clientul Helm \u00eempacheteaz\u0103 \u0219i trimite chart-uri \u00een repository. Cu alte cuvinte, un repository de chart-uri este un server HTTP primitiv cu un fi\u0219ier index.yaml \u0219i c\u00e2teva chart-uri \u00eempachetate.<\/p>\n<p>De\u0219i exist\u0103 anumite avantaje \u00een faptul c\u0103 API-ul unui repository de chart-uri r\u0103spunde cerin\u021belor esen\u021biale pentru stocare, acesta are \u0219i c\u00e2teva dezavantaje:<\/p>\n<ul>\n<li> Repozi\u021biile charturilor sunt slab compatibile cu majoritatea implement\u0103rilor de securitate necesare \u00een medii de produc\u021bie. Un API standard pentru autentificare \u0219i autorizare este extrem de important \u00een scenariile de produc\u021bie.<\/li>\n<li> Instrumentele Helm pentru urm\u0103rirea provenien\u021bei chartului, utilizate pentru semnare, verificarea integrit\u0103\u021bii \u0219i provenien\u021bei chartului, sunt o parte op\u021bional\u0103 a procesului de publicare a Chart-ului.<\/li>\n<li> \u00cen scenariile multi-utilizator, acela\u0219i chart poate fi \u00eenc\u0103rcat de alt utilizator, dubl\u00e2nd volumul de spa\u021biu necesar pentru stocarea aceluia\u0219i con\u021binut. Pentru a rezolva aceast\u0103 problem\u0103, au fost dezvoltate repozitorii mai inteligente, totu\u0219i acestea nu fac parte din specifica\u021bia formal\u0103.<\/li>\n<li> Utilizarea unui singur fi\u0219ier index pentru c\u0103utare, stocarea metadatelor \u0219i ob\u021binerea charturilor a complicat dezvoltarea implement\u0103rilor sigure multi-utilizator.<\/li>\n<\/ul>\n<p>\nProiect <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/docker\/distribution\">Docker Distribution<\/a><\/noindex> (cunoscut \u0219i sub numele de Docker Registry v2) este succesorul Docker Registry \u0219i reprezint\u0103, de fapt, un set de instrumente pentru ambalarea, trimiterea, stocarea \u0219i livrarea imaginilor Docker. Multe servicii majore de cloud ofer\u0103 produse bazate pe Distribution. Datorit\u0103 aten\u021biei sporite, proiectul Distribution a beneficiat de \u00eembun\u0103t\u0103\u021biri timp de mul\u021bi ani, cele mai bune practici \u00een materie de securitate \u0219i teste \u00een condi\u021bii 'de lucru', transform\u00e2ndu-l \u00eentr-unul dintre cei mai de succes eroi neobserva\u021bi ai lumii Open Source.<\/p>\n<p>Dar \u0219tia\u021bi c\u0103 proiectul Distribution a fost dezvoltat pentru a distribui orice form\u0103 de con\u021binut, nu doar imagini de containere?<\/p>\n<p>Datorit\u0103 eforturilor <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opencontainers.org\/\">Open Container Initiative<\/a><\/noindex> (sau OCI), charturile Helm pot fi gazduite pe orice instan\u021b\u0103 Distribution. Deocamdat\u0103, acest proces este experimental. Lucr\u0103rile de suport pentru autentificare \u0219i alte func\u021bii necesare pentru Helm 3 sunt \u00eenc\u0103 \u00een desf\u0103\u0219urare, dar suntem foarte \u00eenc\u00e2nta\u021bi de oportunitatea de a \u00eenv\u0103\u021ba din descoperirile realizate de echipele OCI \u0219i Distribution \u00een ace\u0219ti ani. D gracias mentoratului \u0219i ghid\u0103rii lor, \u00eenv\u0103\u021b\u0103m ce \u00eenseamn\u0103 operarea unui serviciu de \u00eenalt\u0103 disponibilitate la scar\u0103 mare.<\/p>\n<p>O descriere mai detaliat\u0103 a unor modific\u0103ri viitoare \u00een repozitoarele charturilor Helm este disponibil\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.bacongobbler.com\/post\/2019-01-25-distributing-with-distribution\/\">la link<\/a><\/noindex>.<\/p>\n<h2>Gestionarea versiunilor<\/h2>\n<p>\n\u00cen Helm 3, starea aplica\u021biei este urm\u0103rit\u0103 \u00een interiorul clusterului de un pair de obiecte:<\/p>\n<ul>\n<li> objektul release \u2014 reprezint\u0103 o instan\u021b\u0103 a aplica\u021biei;<\/li>\n<li> secretul versiunii de lansare reprezint\u0103 starea dorit\u0103 a aplica\u021biei \u00eentr-un moment specific (de exemplu, lansarea unei noi versiuni).<\/li>\n<\/ul>\n<p>\nApel <code>helm install<\/code> creeaz\u0103 obiectul de lansare \u0219i secretul versiunii de lansare. Apelul <code>helm upgrade<\/code> necesit\u0103 un obiect de lansare (pe care \u00eel poate modifica) \u0219i creeaz\u0103 un nou secret pentru versiunea de lansare, con\u021bin\u00e2nd valori noi \u0219i un manifest preg\u0103tit.<\/p>\n<p>Obiectul Release con\u021bine informa\u021bii despre lansare, unde lansarea este o instalare specific\u0103 a unui chart numit \u0219i a valorilor sale. Acest obiect descrie metadatele de nivel superior despre lansare. Obiectul Release este p\u0103strat pe durata \u00eentregului ciclu de via\u021b\u0103 al aplica\u021biei \u0219i de\u021bine toate secretele versiunii release, precum \u0219i toate obiectele create direct de chart-ul Helm.<\/p>\n<p>Secretul versiunii de lansare leag\u0103 lansarea de o serie de revizii (instal\u0103ri, actualiz\u0103ri, rollback-uri, \u0219tergeri).<\/p>\n<p>\u00cen Helm 2, reviziile erau exclusiv secven\u021biale. Apelul <code>helm install<\/code> a creat v1, actualizarea ulterioar\u0103 (upgrade) - v2, \u0219i a\u0219a mai departe. Secretul de versiune release \u0219i release au fost consolidate \u00eentr-un singur obiect, cunoscut sub numele de revizie. Reviziile au fost stocate \u00een acela\u0219i spa\u021biu de nume ca \u0219i Tiller, ceea ce \u00eensemna c\u0103 fiecare lansare era \u201eglobal\u0103\u201d \u00een termeni de spa\u021biu de nume; ca urmare, se putea utiliza doar un singur exemplar al numelui.<\/p>\n<p>\u00cen Helm 3, fiecare lansare este legat\u0103 de unul sau mai multe secrete de versiune release. Obiectul Release descrie \u00eentotdeauna lansarea curent\u0103, desf\u0103\u0219urat\u0103 \u00een Kubernetes. Fiecare secret de versiune release descrie doar o versiune a acestei lans\u0103ri. O actualizare (upgrade), de exemplu, va crea un nou secret de versiune release \u0219i apoi va modifica obiectul Release pentru a indica aceast\u0103 nou\u0103 versiune. \u00cen cazul unei re\u00eentoarceri (rollback), se pot folosi secretele de versiune release anterioare pentru a reveni la starea anterioar\u0103 a lans\u0103rii.<\/p>\n<p>Dup\u0103 renun\u021barea la Tiller, Helm 3 stocheaz\u0103 datele despre lansare \u00eentr-un singur spa\u021biu de nume, al\u0103turi de lansare. Aceast\u0103 modificare permite instalarea unui chart cu acela\u0219i nume de lansare \u00eentr-un alt spa\u021biu de nume, iar datele sunt p\u0103strate \u00eentre actualiz\u0103ri\/re\u00eenc\u0103rc\u0103ri ale clusterului \u00een etcd. De exemplu, se poate instala WordPress \u00een spa\u021biul de nume \u201efoo\u201d, iar apoi \u00een spa\u021biul de nume \u201ebar\u201d, \u0219i ambele lans\u0103ri pot fi denumite \u201ewordpress\u201d.<\/p>\n<h2>Modific\u0103ri \u00een dependen\u021bele diagramelor<\/h2>\n<p>\nDiagrama, ambalat\u0103 (cu ajutorul <code>helm package<\/code>) pentru utilizarea cu Helm 2, poate fi instalat cu Helm 3, totu\u0219i fluxul de lucru pentru dezvoltarea chart-urilor a fost complet revizuit, a\u0219a c\u0103 trebuie f\u0103cute unele modific\u0103ri pentru a continua dezvoltarea chart-urilor cu Helm 3. \u00cen special, sistemul de gestionare a dependen\u021belor chart-urilor s-a schimbat.<\/p>\n<p>Sistemul de gestionare a dependen\u021belor chart-ului a trecut la <code>requirements.yaml<\/code> \u0219i <code>requirements.lock<\/code> pe <code>Chart.yaml<\/code> \u0219i <code>Chart.lock<\/code>. Asta \u00eenseamn\u0103 c\u0103 chart-urile care foloseau comanda <code>helm dependency<\/code>, necesit\u0103 o anumit\u0103 configurare pentru a func\u021biona \u00een Helm 3.<\/p>\n<p>S\u0103 lu\u0103m un exemplu. S\u0103 ad\u0103ug\u0103m o dependen\u021b\u0103 la chart \u00een Helm 2 \u0219i s\u0103 vedem ce se va schimba c\u00e2nd trecem la Helm 3.<\/p>\n<p>\u00cen Helm 2 <code>requirements.yaml<\/code> se prezenta astfel:<\/p>\n<pre><code class=\"plaintext\">dependencies:\n- name: mariadb\n  version: 5.x.x\n  repository: https:\/\/kubernetes-charts.storage.googleapis.com\/\n  condition: mariadb.enabled\n  tags:\n    - database<\/code><\/pre>\n<p>\n\u00cen Helm 3, aceea\u0219i dependen\u021b\u0103 va fi reflectat\u0103 \u00een <code>Chart.yaml<\/code>:<\/p>\n<pre><code class=\"plaintext\">dependencies:\n- name: mariadb\n  version: 5.x.x\n  repository: https:\/\/kubernetes-charts.storage.googleapis.com\/\n  condition: mariadb.enabled\n  tags:\n    - database<\/code><\/pre>\n<p>\nChart-urile sunt \u00eenc\u0103 \u00eenc\u0103rcate \u0219i plasate \u00een directorul <code>charts\/<\/code>, a\u0219a c\u0103 subchart-urile <i>(subcharts)<\/i>, aflate \u00een directorul <code>charts\/<\/code>, vor continua s\u0103 func\u021bioneze f\u0103r\u0103 modific\u0103ri.<\/p>\n<h2>Prezent\u0103m Library Charts<\/h2>\n<p>\nHelm 3 accept\u0103 un tip de chart numit chart-uri library <i>(library chart)<\/i>. Acest chart este folosit de alte chart-uri, dar nu creeaz\u0103 de unul singur niciun fel de artefacte de lansare. \u0218abloanele chart-urilor library pot declara doar elemente <code>define<\/code>. Alte con\u021binuturi sunt pur \u0219i simplu ignorate. Acest lucru le permite utilizatorilor s\u0103 reutilizeze \u0219i s\u0103 \u00eemp\u0103rt\u0103\u0219easc\u0103 fragmente de cod care pot fi utilizate \u00een multe chart-uri, evit\u00e2nd astfel duplicarea \u0219i respect\u00e2nd principiul <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\">DRY<\/a><\/noindex>.<\/p>\n<p>Chart-urile library sunt declarate \u00een sec\u021biunea <code>dependencies<\/code> \u00een fi\u0219ierul <code>Chart.yaml<\/code>. Instalarea \u0219i gestionarea lor nu difer\u0103 de celelalte chart-uri.<\/p>\n<pre><code class=\"plaintext\">dependencies:\n  - name: mylib\n    version: 1.x.x\n    repository: quay.io<\/code><\/pre>\n<p>\nA\u0219tept\u0103m cu ner\u0103bdare cazurile de utilizare pe care acest component le va deschide pentru dezvoltatorii de chart-uri, precum \u0219i cele mai bune practici care pot ap\u0103rea datorit\u0103 chart-urilor library.<\/p>\n<h2>Ce urmeaz\u0103?<\/h2>\n<p>\nHelm 3.0.0-alpha.1 este baza pe care vom \u00eencepe s\u0103 construim o nou\u0103 versiune a Helm. \u00cen acest articol am descris c\u00e2teva dintre oportunit\u0103\u021bile interesante ale Helm 3. Multe dintre ele se afl\u0103 \u00eenc\u0103 \u00een stadii incipiente de dezvoltare \u0219i este normal; esen\u021ba unui alpha release este de a testa ideea, de a colecta feedback de la primii utilizatori \u0219i de a valida presupunerile noastre.<\/p>\n<p>Odat\u0103 ce versiunea alpha va fi lansat\u0103 <i>(s\u0103 ne amintim c\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/releases\/tag\/v3.0.0-alpha.1\">a avut deja loc<\/a><\/noindex> \u2014 nota trad.)<\/i>, vom \u00eencepe s\u0103 accept\u0103m patch-uri pentru Helm 3 din partea comunit\u0103\u021bii. Este necesar s\u0103 cre\u0103m o baz\u0103 solid\u0103 care s\u0103 permit\u0103 dezvoltarea \u0219i acceptarea de noi func\u021bionalit\u0103\u021bi, iar utilizatorii s\u0103 se simt\u0103 implica\u021bi \u00een proces, deschiz\u00e2nd ticheturi \u0219i f\u0103c\u00e2nd corecturi.<\/p>\n<p>\u00cen acest articol am \u00eencercat s\u0103 eviden\u021biez unele \u00eembun\u0103t\u0103\u021biri semnificative care vor ap\u0103rea \u00een Helm 3, totu\u0219i aceast\u0103 list\u0103 nu poate fi considerat\u0103 \u00een niciun caz cuprinz\u0103toare. Planul complet pentru Helm 3 include asemenea nout\u0103\u021bi, cum ar fi strategii de actualizare \u00eembun\u0103t\u0103\u021bite, integrare mai profund\u0103 cu registrele OCI \u0219i utilizarea schemelor JSON pentru validarea valorilor diagramelor. De asemenea, pl\u0103nuim s\u0103 cur\u0103\u021b\u0103m baza de cod \u0219i s\u0103 actualiz\u0103m acele p\u0103r\u021bi care au fost neglijate \u00een ultimii trei ani.<\/p>\n<p>Dac\u0103 sim\u021bi\u021bi c\u0103 am omis ceva, ne-ar face pl\u0103cere s\u0103 auzim p\u0103rerile dumneavoastr\u0103!<\/p>\n<p>Al\u0103tura\u021bi-v\u0103 discu\u021biei \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.slack.com\/\">canalele noastre Slack<\/a><\/noindex>:<\/p>\n<ul>\n<li> <code>#helm-users<\/code> pentru \u00eentreb\u0103ri \u0219i comunicare simpl\u0103 cu comunitatea;<\/li>\n<li> <code>#helm-dev<\/code> pentru discutarea pull request-urilor, codului \u0219i bug-urilor.<\/li>\n<\/ul>\n<p>\nDe asemenea, pute\u021bi participa la apelurile publice pentru dezvoltatori s\u0103pt\u0103m\u00e2nal, joia la ora 19:30 MSK. \u00cent\u00e2lnirile sunt dedicate discu\u021biilor despre sarcinile la care lucreaz\u0103 dezvoltatorii cheie \u0219i comunitatea, precum \u0219i tematicilor de discu\u021bie pentru s\u0103pt\u0103m\u00e2n\u0103. Oricine este binevenit s\u0103 se al\u0103ture \u0219i s\u0103 participe la \u00eent\u00e2lnire. Linkul este disponibil \u00een canalul Slack <code>#helm-dev<\/code>.<\/p>\n<h2>P.S. de la traduc\u0103tor<\/h2>\n<p>\nCiti\u021bi \u0219i \u00een blogul nostru:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417079\/\">Manager de pachete pentru Kubernetes - Helm: trecut, prezent, viitor<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438814\/\">O privire lucid\u0103 asupra Helm 2: \u201eA\u0219a cum este...\u201d<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/420437\/\">Introducere practic\u0103 \u00een managerul de pachete pentru Kubernetes - Helm<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Sfaturi \u0219i trucuri Kubernetes: transformarea resurselor func\u021bionale din cluster sub gestionarea Helm 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/336170\/\">Practic\u0103 cu dapp. Partea 2. Implementarea containerelor Docker \u00een Kubernetes utiliz\u00e2nd Helm<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/453734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: 16 \u043c\u0430\u044f \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0437\u043d\u0430\u0447\u0438\u043c\u0430\u044f \u0432\u0435\u0445\u0430 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f Kubernetes \u2014 Helm. \u0412 \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u043b\u044c\u0444\u0430-\u0440\u0435\u043b\u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 3.0. \u0415\u0451 \u0432\u044b\u0445\u043e\u0434 \u043f\u0440\u0438\u043d\u0435\u0441\u0451\u0442 \u0432 Helm \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438 \u0434\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432 Kubernetes-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043d\u0430\u0434\u0435\u0436\u0434\u044b. \u041a \u0442\u0430\u043a\u043e\u0432\u044b\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u043c\u0441\u044f \u0438 \u043c\u044b \u0441\u0430\u043c\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34735","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/znakomstvo-s-helm-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Helm 3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/znakomstvo-s-helm-3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:06+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:06+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Introducere \u00een Helm 3 | ProHoster","description":"Not\u0103.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/znakomstvo-s-helm-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Helm 3 | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/znakomstvo-s-helm-3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:06+00:00","article:modified_time":"2019-10-31T19:00:06+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34735","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:26:53","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 23:08:04","updated":"2026-01-21 20:26:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/34735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=34735"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/34735\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/26173"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=34735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=34735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=34735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}