L-introduzzjoni ta' Helm 3

L-introduzzjoni ta' Helm 3

Nota. transl.: Is-16 ta' Mejju ta' din is-sena jimmarka pass importanti fl-iżvilupp tal-maniġer tal-pakketti għal Kubernetes - Helm. F'din il-ġurnata, ġiet ippreżentata l-ewwel rilaxx alfa tal-verżjoni ewlenija futura tal-proġett - 3.0. Ir-rilaxx tiegħu se jġib bidliet sinifikanti u tant mistennija għal Helm, li ħafna fil-komunità ta 'Kubernetes għandhom tama kbira għalihom. Aħna stess aħna wieħed minn dawn, peress li nużaw b'mod attiv Helm għall-iskjerament tal-applikazzjoni: integrajnaha fl-għodda tagħna għall-implimentazzjoni tas-CI/CD werf u minn żmien għal żmien nagħmlu l-kontribut tagħna għall-iżvilupp ta 'upstream. Din it-traduzzjoni tgħaqqad 7 noti mill-blog uffiċjali Helm, li huma ddedikati għall-ewwel rilaxx alfa ta 'Helm 3 u jitkellmu dwar l-istorja tal-proġett u l-karatteristiċi ewlenin ta' Helm 3. L-awtur tagħhom huwa Matt "bacongobbler" Fisher, impjegat ta 'Microsoft u wieħed mill-mantenituri ewlenin ta’ Helm.

Fil-15 ta’ Ottubru 2015, twieled il-proġett issa magħruf bħala Helm. Sena biss wara li twaqqfet, il-komunità Helm ingħaqdet ma' Kubernetes, filwaqt li taħdem b'mod attiv fuq Helm 2. F'Ġunju 2018, Helm ingħaqad mal-CNCF bħala proġett li qed jiżviluppa (inkubazzjoni). Fast forward sal-preżent, u l-ewwel rilaxx alfa tal-Hm 3 il-ġdid jinsab fi triqtu. (din ir-rilaxx diġà seħħet f'nofs Mejju - madwar. trad.).

F'din il-biċċa, ser nitkellem dwar fejn beda kollox, kif wasalna fejn wasalna llum, nintroduċi xi wħud mill-karatteristiċi uniċi disponibbli fl-ewwel rilaxx alfa ta' Helm 3, u nispjega kif qed nippjanaw li nimxu 'l quddiem.

Sommarju:

  • l-istorja tal-ħolqien ta’ Helm;
  • Adieu teneri lil Tiller;
  • repożitorji taċ-ċarts;
  • Ġestjoni tar-rilaxx;
  • bidliet fid-dipendenzi taċ-ċarts;
  • Ċarts tal-libreriji;
  • x'inhu jmiss?

L-istorja ta' Helm

Twelid

Helm 1 beda bħala proġett Open Source maħluq minn Deis. Konna startup żgħira assorbit Microsoft fir-rebbiegħa tal-2017. Il-proġett l-ieħor tagħna Open Source, jismu wkoll Deis, kellu għodda deisctl, li ntuża (fost affarijiet oħra) biex tinstalla u topera l-pjattaforma Deis fi Raggruppament tal-flotot. Dak iż-żmien, Fleet kienet waħda mill-ewwel pjattaformi tal-orkestrazzjoni tal-kontejners.

F'nofs l-2015, iddeċidejna li nbiddlu r-rotta u mċaqalqa Deis (dak iż-żmien isem ġdid Deis Workflow) minn Fleet għal Kubernetes. Waħda mill-ewwel li ġiet iddisinjata mill-ġdid kienet l-għodda tal-installazzjoni. deisctl. Użajna biex ninstallaw u niġġestixxu Deis Workflow fil-cluster tal-Flotta.

Helm 1 inħoloq fl-immaġni ta 'maniġers tal-pakketti famużi bħal Homebrew, apt u yum. L-għan ewlieni tiegħu kien li jissimplifika l-kompiti bħall-ippakkjar u l-installazzjoni ta 'applikazzjonijiet fuq Kubernetes. Helm ġie introdott uffiċjalment fl-2015 fil-konferenza KubeCon f'San Francisco.

L-ewwel tentattiv tagħna ma Helm ħadem, iżda ma kienx mingħajr xi limitazzjonijiet serji. Huwa ħa sett ta 'manifesti Kubernetes, togħma b'ġeneraturi bħala blokki YAML introduttorji (materja ta' quddiem)*, u tagħbija r-riżultati f'Kubernetes.

* Nota. transl.: Mill-ewwel verżjoni ta 'Helm, is-sintassi YAML intgħażlet biex tiddeskrivi r-riżorsi ta' Kubernetes, u l-mudelli Jinja u l-iskripts Python kienu appoġġjati meta kitbu konfigurazzjonijiet. Ktibna aktar dwar dan u l-istruttura tal-ewwel verżjoni ta’ Helm b’mod ġenerali fil-kapitolu “A Brief History of Helm” dan il-materjal.

Pereżempju, biex tissostitwixxi qasam f'fajl YAML, kellek iżżid il-kostruzzjoni li ġejja mal-manifest:

#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yaml

Huwa kbir li l-magni tal-mudelli jeżistu llum, hux?

Għal ħafna raġunijiet, dan l-installatur bikri ta 'Kubernetes kien jeħtieġ lista hard-coded ta' fajls manifest u wettaq biss sekwenza żgħira u fissa ta 'avvenimenti. Kien tant diffiċli biex tużah li t-tim ta 'Deis Workflow R&D kellu żmien diffiċli meta ppruvaw jittrasferixxu l-prodott tagħhom għal din il-pjattaforma - madankollu, iż-żerriegħa tal-idea kienet diġà miżrugħa. L-ewwel tentattiv tagħna kien opportunità kbira ta’ tagħlim: indunajna li konna verament passjonati dwar il-ħolqien ta’ għodod pragmatiċi li jsolvu problemi ta’ kuljum għall-utenti tagħna.

Ibbażat fuq l-esperjenza ta 'żbalji tal-passat, bdejna niżviluppaw Helm 2.

Nagħmlu t-Tmun 2

Fl-aħħar tal-2015, it-tim tal-Google ikkuntattjana. Huma kienu qed jaħdmu fuq għodda simili għal Kubernetes. Deployment Manager għal Kubernetes kien port ta' għodda eżistenti li ntużat għal Google Cloud Platform. “Nixtiequ,” staqsew, “li nqattgħu ftit jiem niddiskutu x-xebh u d-differenzi?”

F'Jannar 2016, it-timijiet ta' Helm u Deployment Manager iltaqgħu f'Seattle biex jiskambjaw ideat. In-negozjati spiċċaw bi pjan ambizzjuż: li tgħaqqad iż-żewġ proġetti biex jinħoloq Helm 2. Flimkien ma' Deis u Google, il-guys minn SkippBox (issa parti minn Bitnami - madwar trad.), u bdejna naħdmu fuq Helm 2.

Ridna nżommu l-faċilità ta 'użu ta' Helm, iżda żid dan li ġej:

  • Mudelli ta' chart għall-adattament;
  • Ġestjoni intra-cluster għal timijiet;
  • repożitorju ta' chart ta' klassi dinjija;
  • format ta 'pakkett stabbli b'għażla ta' firma;
  • impenn qawwi għall-verżjoni semantika u ż-żamma tal-kompatibilità b'lura bejn il-verżjonijiet.

Biex jintlaħqu dawn l-għanijiet, ġie miżjud element ieħor fl-ekosistema Helm. Dan il-komponent intra-cluster kien jissejjaħ Tiller u kien responsabbli għall-installazzjoni ta' Helm charts u l-ġestjoni tagħhom.

Minn meta ħareġ Helm 2 fl-2016, Kubernetes żied diversi innovazzjonijiet kbar. Miżjud kontroll tal-aċċess ibbażat fuq ir-rwol (RBAC), li eventwalment issostitwixxa l-Kontroll tal-Aċċess Ibbażat fuq Attributi (ABAC). Ġew introdotti tipi ġodda ta' riżorsi (Dak iż-żmien l-iskjeramenti kien għadu f'beta). Id-Definizzjonijiet tar-Riżorsi tad-Dwana (oriġinarjament imsejħa Riżorsi ta' Partijiet Terzi jew TPRs) ġew ivvintati. U l-aktar importanti, ħarġu sett ta' l-aħjar prattiki.

Fost dawn il-bidliet kollha, Helm kompla jaqdi l-utenti ta’ Kubernetes fedelment. Wara tliet snin u ħafna żidiet ġodda, kien ċar li kien wasal iż-żmien li jsiru bidliet sinifikanti fil-kodiċi tal-bażi biex jiġi żgurat li Helm ikun jista’ jkompli jissodisfa l-ħtiġijiet dejjem jikbru ta’ ekosistema li qed tevolvi.

Adieu tener lil Tiller

Matul l-iżvilupp ta' Helm 2, introduċejna Tiller bħala parti mill-integrazzjoni tagħna mal-Deployment Manager ta' Google. Tiller kellu rwol importanti għat-timijiet li jaħdmu fi ħdan cluster komuni: ippermetta speċjalisti differenti li joperaw l-infrastruttura biex jinteraġixxu mal-istess sett ta 'rilaxxi.

Peress li l-kontroll tal-aċċess ibbażat fuq ir-rwol (RBAC) kien attivat awtomatikament f'Kubernetes 1.6, il-ħidma ma 'Tiller fil-produzzjoni saret aktar diffiċli. Minħabba n-numru kbir ta' politiki ta' sigurtà possibbli, il-pożizzjoni tagħna kienet li noffru konfigurazzjoni permissiva b'mod awtomatiku. Dan ippermetta lill-newbies jesperimentaw b'Helm u Kubernetes mingħajr ma jkollhom għalfejn jgħaddu l-ewwel fis-settings tas-sigurtà. Sfortunatament, din il-konfigurazzjoni tal-permess setgħet tagħti lill-utent firxa wiesgħa wisq ta' permessi li ma kellhomx bżonn. L-inġiniera DevOps u SRE kellhom jitgħallmu passi operattivi addizzjonali meta installaw Tiller fi cluster b'ħafna kerrejja.

Wara li tgħallimt kif il-komunità użat Helm f'sitwazzjonijiet speċifiċi, indunajna li s-sistema ta 'ġestjoni tar-rilaxx ta' Tiller ma kellhiex bżonn tistrieħ fuq komponent intra-cluster biex iżżomm l-istat jew tiffunzjona bħala ċentru ċentrali għall-informazzjoni dwar ir-rilaxx. Minflok, nistgħu sempliċement nirċievu informazzjoni mis-server tal-API Kubernetes, niġġeneraw chart fuq in-naħa tal-klijent, u naħżnu rekord tal-installazzjoni f'Kubernetes.

L-għan ewlieni ta' Tiller seta' ntlaħaq mingħajr Tiller, għalhekk waħda mill-ewwel deċiżjonijiet tagħna rigward Helm 3 kienet li nabbandunaw kompletament lil Tiller.

Bil Tiller marret, il-mudell tas-sigurtà ta 'Helm ġie simplifikat radikalment. Helm 3 issa jappoġġja s-sigurtà, l-identità u l-metodi ta 'awtorizzazzjoni moderni kollha ta' Kubernetes attwali. Il-permessi tat-tmun huma determinati bl-użu fajl kubeconfig. L-amministraturi tal-cluster jistgħu jirrestrinġu d-drittijiet tal-utent għal kwalunkwe livell ta’ granularità. Ir-rilaxxi għadhom salvati fi ħdan il-cluster, u l-bqija tal-funzjonalità ta 'Helm tibqa' intatta.

Repożitorji taċ-ċarts

F'livell għoli, repożitorju taċ-ċarts huwa post fejn iċ-ċarts jistgħu jinħażnu u jinqasmu. Il-klijent Helm jippakkja u jibgħat iċ-ċarts lir-repożitorju. Fi kliem sempliċi, repożitorju taċ-ċarts huwa server HTTP primittiv b'fajl index.yaml u xi charts ippakkjati.

Filwaqt li hemm xi vantaġġi għall-API Charts Repository li tissodisfa l-aktar rekwiżiti bażiċi tal-ħażna, hemm ukoll ftit żvantaġġi:

  • Ir-repożitorji taċ-ċart mhumiex kompatibbli mal-biċċa l-kbira tal-implimentazzjonijiet tas-sigurtà meħtieġa f'ambjent ta' produzzjoni. Li jkollok API standard għall-awtentikazzjoni u l-awtorizzazzjoni huwa estremament importanti fix-xenarji tal-produzzjoni.
  • L-għodod ta' provenjenza taċ-ċart ta' Helm, użati biex jiffirmaw, jivverifikaw l-integrità u l-provenjenza ta' chart, huma parti fakultattiva mill-proċess tal-pubblikazzjoni taċ-Ċart.
  • F'xenarji ta' diversi utenti, l-istess chart tista' tittella' minn utent ieħor, u jirdoppja l-ammont ta' spazju meħtieġ biex jinħażen l-istess kontenut. Ġew żviluppati repożitorji aktar intelliġenti biex isolvu din il-problema, iżda mhumiex parti mill-ispeċifikazzjoni formali.
  • L-użu ta' fajl ta' indiċi wieħed għat-tiftix, il-ħażna tal-metadejta, u l-irkupru ta' charts għamilha diffiċli biex jiġu żviluppati implimentazzjonijiet siguri ta' diversi utenti.

Proġett Distribuzzjoni Docker (magħruf ukoll bħala Docker Registry v2) huwa s-suċċessur ta 'Docker Registry u essenzjalment jaġixxi bħala sett ta' għodod għall-ippakkjar, it-tbaħħir, il-ħażna u l-kunsinna ta 'immaġini Docker. Ħafna servizzi kbar tal-cloud joffru prodotti bbażati fuq id-Distribuzzjoni. Grazzi għal din l-attenzjoni miżjuda, il-proġett tad-Distribuzzjoni ibbenefika minn snin ta’ titjib, l-aħjar prattiki tas-sigurtà, u ttestjar fuq il-post li għamluha waħda mill-aktar eroj mhux ikkantati ta’ suċċess tad-dinja Open Source.

Imma kont taf li l-Proġett tad-Distribuzzjoni kien iddisinjat biex iqassam kwalunkwe forma ta’ kontenut, mhux biss immaġini tal-kontejners?

Grazzi għall-isforzi Inizjattiva tal-Kontenitur Miftuħ (jew OCI), mapep tat-Tmun jistgħu jitqiegħdu fuq kwalunkwe istanza tad-Distribuzzjoni. Għalissa, dan il-proċess huwa sperimentali. L-appoġġ tal-login u karatteristiċi oħra meħtieġa għal Helm 3 sħiħ huma xogħol li qed isir, iżda aħna eċċitati li nitgħallmu mill-iskoperti li t-timijiet tal-OCI u tad-Distribuzzjoni għamlu matul is-snin. U permezz tal-mentoring u l-gwida tagħhom, nitgħallmu x'inhi li topera servizz disponibbli ħafna fuq skala kbira.

Deskrizzjoni aktar dettaljata ta' xi bidliet li ġejjin għar-repożitorji taċ-ċarts Helm hija disponibbli по ссылке.

Ġestjoni tar-rilaxx

Fi Helm 3, l-istat tal-applikazzjoni jiġi ssorveljat fi ħdan il-cluster minn par oġġetti:

  • oġġett ta' rilaxx - jirrappreżenta istanza ta' applikazzjoni;
  • sigriet tal-verżjoni tar-rilaxx - jirrappreżenta l-istat mixtieq tal-applikazzjoni f'punt speċifiku fiż-żmien (pereżempju, ir-rilaxx ta 'verżjoni ġdida).

Sejħa helm install joħloq oġġett ta 'rilaxx u sigriet ta' verżjoni ta 'rilaxx. Ċempel helm upgrade jeħtieġ oġġett ta 'rilaxx (li jista' jinbidel) u joħloq sigriet ta 'verżjoni ta' rilaxx ġdid li jkun fih il-valuri l-ġodda u manifest ippreparat.

L-oġġett tar-rilaxx fih informazzjoni dwar ir-rilaxx, fejn ir-rilaxx huwa installazzjoni speċifika ta 'chart u valuri msemmija. Dan l-oġġett jiddeskrivi l-metadejta tal-ogħla livell dwar ir-rilaxx. L-oġġett tar-rilaxx jippersisti matul iċ-ċiklu tal-ħajja tal-applikazzjoni u huwa s-sid tas-sigrieti kollha tal-verżjoni tar-rilaxx, kif ukoll l-oġġetti kollha li huma maħluqa direttament mit-tabella Helm.

Is-sigriet tal-verżjoni tar-rilaxx jassoċja rilaxx ma 'serje ta' reviżjonijiet (installazzjoni, aġġornamenti, rollbacks, tħassir).

Fit-Tmun 2, ir-reviżjonijiet kienu estremament konsistenti. Ċempel helm install maħluqa v1, l-aġġornament sussegwenti (upgrade) - v2, eċċ. Ir-rilaxx u s-sigriet tal-verżjoni tar-rilaxx ġew imġarrfa f'oġġett wieħed magħruf bħala reviżjoni. Ir-reviżjonijiet kienu maħżuna fl-istess namespace bħal Tiller, li fisser li kull rilaxx kien "globali" f'termini ta 'namespace; bħala riżultat, jista 'jintuża biss każ wieħed tal-isem.

F'Temnu 3, kull rilaxx huwa assoċjat ma' sigriet wieħed jew aktar tal-verżjoni tar-rilaxx. L-oġġett tar-rilaxx dejjem jiddeskrivi r-rilaxx attwali skjerat għal Kubernetes. Kull sigriet tal-verżjoni tar-rilaxx jiddeskrivi verżjoni waħda biss ta' dak ir-rilaxx. Aġġornament, pereżempju, se joħloq sigriet ta 'verżjoni ġdida ta' rilaxx u mbagħad ibiddel l-oġġett ta 'rilaxx biex jindika dik il-verżjoni l-ġdida. Fil-każ ta 'rollback, tista' tuża s-sigrieti tal-verżjoni ta 'rilaxx preċedenti biex tirreġġa' lura r-rilaxx għal stat preċedenti.

Wara li Tiller jiġi abbandunat, Helm 3 jaħżen id-dejta tar-rilaxx fl-istess spazju tal-isem tar-rilaxx. Din il-bidla tippermettilek tinstalla chart bl-istess isem tar-rilaxx fi spazju tal-isem differenti, u d-dejta tiġi ssejvjata bejn l-aġġornamenti tal-clusters/reboots f'etcd. Pereżempju, tista 'tinstalla WordPress fl-ispazju tal-isem "foo" u mbagħad fl-ispazju tal-isem "bar", u ż-żewġ rilaxxi jistgħu jissejħu "wordpress".

Bidliet fid-dipendenzi taċ-ċart

Ċarts ippakkjati (bl-użu helm package) għall-użu ma' Helm 2 jista' jiġi installat ma' Helm 3, madankollu l-fluss tax-xogħol ta 'żvilupp taċ-ċart ġie kompletament rivedut, għalhekk iridu jsiru xi bidliet biex jitkompla l-iżvilupp taċ-ċart ma' Helm 3. B'mod partikolari, is-sistema ta 'ġestjoni tad-dipendenza taċ-ċart inbidlet.

Is-sistema tal-ġestjoni tad-dipendenza tal-grafika mxiet minn requirements.yaml и requirements.lock fuq Chart.yaml и Chart.lock. Dan ifisser li l-mapep li użaw il-kmand helm dependency, jeħtieġu xi setup biex jaħdmu f'Hem 3.

Ejja nħarsu lejn eżempju. Ejja nżidu dipendenza mat-tabella fit-Thelm 2 u naraw x'jinbidel meta nimxu lejn Helm 3.

Fit-Tmun 2 requirements.yaml deher hekk:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Fi Tmun 3, l-istess dipendenza se tkun riflessa fil tiegħek Chart.yaml:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Iċ-ċarts għadhom jitniżżlu u jitqiegħdu fid-direttorju charts/, allura subcharts (sottocharts), li tinsab fil-katalgu charts/, se tkompli taħdem mingħajr bidliet.

Introduzzjoni ta' Charts tal-Librerija

Helm 3 jappoġġja klassi ta 'charts imsejħa librerija charts (chart tal-librerija). Din iċ-ċart tintuża minn charts oħra, iżda ma toħloq l-ebda artifacts ta 'rilaxx waħedha. Il-mudelli taċ-ċart tal-librerija jistgħu jiddikjaraw biss elementi define. Kontenut ieħor huwa sempliċement injorat. Dan jippermetti lill-utenti jerġgħu jużaw u jaqsmu snippets tal-kodiċi li jistgħu jintużaw f'diversi charts, biex b'hekk tiġi evitata d-duplikazzjoni u jaderixxu mal-prinċipju DRY.

Iċ-ċarts tal-librerija huma ddikjarati fit-taqsima dependencies fil-fajl Chart.yaml. L-installazzjoni u l-ġestjoni tagħhom mhijiex differenti minn charts oħra.

dependencies:
  - name: mylib
    version: 1.x.x
    repository: quay.io

Aħna eċċitati dwar il-każijiet ta 'użu li dan il-komponent se jiftaħ għall-iżviluppaturi taċ-ċarts, kif ukoll l-aħjar prattiki li jistgħu joħorġu minn mapep tal-libreriji.

Xi jmiss?

Helm 3.0.0-alpha.1 huwa l-pedament li fuqu nibdew nibnu verżjoni ġdida ta' Helm. Fl-artiklu ddeskrivejt xi karatteristiċi interessanti ta' Helm 3. Ħafna minnhom għadhom fl-istadji bikrija tal-iżvilupp u dan huwa normali; Il-punt ta 'rilaxx alfa huwa li tittestja l-idea, tiġbor feedback minn utenti bikrija, u tikkonferma s-suppożizzjonijiet tagħna.

Hekk kif il-verżjoni alpha tiġi rilaxxata (ftakar li dan hu diġà ġara - madwar. trad.), se nibdew naċċettaw irqajja għal Helm 3 mill-komunità. Ikollok bżonn toħloq pedament b'saħħtu li jippermetti li tiġi żviluppata u adottata funzjonalità ġdida, u biex l-utenti jħossuhom involuti fil-proċess billi jiftħu l-biljetti u jagħmlu rranġati.

Ippruvajt nenfasizza xi wħud mit-titjib ewlieni li wasal għal Helm 3, iżda din il-lista bl-ebda mod mhi eżawrjenti. Il-pjan direzzjonali sħiħ għal Helm 3 jinkludi karatteristiċi bħal strateġiji ta 'aġġornament imtejba, integrazzjoni aktar profonda mar-reġistri OCI, u l-użu ta' skemi JSON biex jivvalidaw il-valuri taċ-ċart. Qed nippjanaw ukoll li naddfu l-codebase u naġġornaw partijiet minnha li ġew traskurati għal dawn l-aħħar tliet snin.

Jekk tħoss li tlifna xi ħaġa, nixtiequ nisimgħu l-ħsibijiet tiegħek!

Ingħaqad mad-diskussjoni fuq tagħna Slack kanali:

  • #helm-users għal mistoqsijiet u komunikazzjoni sempliċi mal-komunità;
  • #helm-dev biex jiddiskutu pull requests, kodiċi u bugs.

Tista' wkoll tiċċettja fis-Sejħiet Pubbliċi għall-Iżviluppaturi tagħna ta' kull ġimgħa nhar ta' Ħamis fis-19:30 MSK. Il-laqgħat huma ddedikati biex jiġu diskussi kwistjonijiet li qed jaħdmu fuqhom l-iżviluppaturi ewlenin u l-komunità, kif ukoll suġġetti ta’ diskussjoni għall-ġimgħa. Kulħadd jista’ jingħaqad u jieħu sehem fil-laqgħa. Link disponibbli fil-kanal Slack #helm-dev.

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment