Cyflwyno Helm 3

Cyflwyno Helm 3

Nodyn. traws.: Mae Mai 16 eleni yn garreg filltir arwyddocaol yn natblygiad y rheolwr pecyn ar gyfer Kubernetes - Helm. Ar y diwrnod hwn, cyflwynwyd y datganiad alffa cyntaf o fersiwn fawr y dyfodol o'r prosiect - 3.0 -. Bydd ei ryddhau yn dod â newidiadau sylweddol a hir-ddisgwyliedig i Helm, y mae gan lawer o gymuned Kubernetes obeithion mawr amdanynt. Rydym ni ein hunain yn un o'r rhain, gan ein bod yn defnyddio Helm yn weithredol ar gyfer defnyddio ceisiadau: rydym wedi ei integreiddio i'n hofferyn ar gyfer gweithredu CI/CD werff ac o bryd i'w gilydd rydym yn gwneud ein cyfraniad at ddatblygiad i fyny'r afon. Mae'r cyfieithiad hwn yn cyfuno 7 nodyn o'r blog Helm swyddogol, sy'n ymroddedig i'r datganiad alffa cyntaf o Helm 3 ac yn siarad am hanes y prosiect a phrif nodweddion Helm 3. Eu hawdur yw Matt “bacongobbler” Fisher, gweithiwr Microsoft ac un o gynhalwyr allweddol Helm.

Ar Hydref 15, 2015, ganwyd y prosiect a elwir bellach yn Helm. Dim ond blwyddyn ar ôl ei sefydlu, ymunodd cymuned Helm â Kubernetes, tra'n gweithio'n weithredol ar Helm 2. Ym mis Mehefin 2018, Helm ymuno â CNCF fel prosiect sy'n datblygu (deori). Yn gyflym ymlaen at y presennol, ac mae datganiad alffa cyntaf y Helm 3 newydd ar ei ffordd. (y datganiad hwn eisoes wedi cymryd lle ganol mis Mai - tua. cyfieithu.).

Yn yr erthygl hon, byddaf yn siarad am ble y dechreuodd y cyfan, sut y gwnaethom gyrraedd lle'r ydym heddiw, cyflwyno rhai o'r nodweddion unigryw sydd ar gael yn y datganiad alffa cyntaf o Helm 3, ac egluro sut yr ydym yn bwriadu datblygu ymhellach.

Crynodeb:

  • hanes creu Helm;
  • ffarwel dyner i Tiller;
  • storfeydd siartiau;
  • rheoli rhyddhau;
  • newidiadau mewn dibyniaethau siartiau;
  • siartiau llyfrgell;
  • beth sydd nesaf?

Hanes Helm

Geni

Dechreuodd Helm 1 fel prosiect Ffynhonnell Agored a grëwyd gan Deis. Roeddem yn startup bach amsugno Microsoft yng ngwanwyn 2017. Roedd gan ein prosiect Ffynhonnell Agored arall, a enwyd hefyd Deis, declyn deisctl, a ddefnyddiwyd (ymhlith pethau eraill) i osod a gweithredu'r platfform Deis yn Clwstwr fflyd. Ar y pryd, Fflyd oedd un o'r llwyfannau cerddorfaol cynhwysydd cyntaf.

Yng nghanol 2015, fe wnaethom benderfynu newid cwrs a symud Deis (a ailenwyd bryd hynny yn Llif Gwaith Deis) o Fflyd i Kubernetes. Un o'r rhai cyntaf i gael ei ailgynllunio oedd yr offeryn gosod. deisctl. Fe wnaethom ei ddefnyddio i osod a rheoli Llif Gwaith Deis yn y clwstwr Fflyd.

Crëwyd Helm 1 yn nelwedd rheolwyr pecynnau enwog fel Homebrew, apt ac yum. Ei brif nod oedd symleiddio tasgau fel pecynnu a gosod cymwysiadau ar Kubernetes. Cyflwynwyd Helm yn swyddogol yn 2015 yng nghynhadledd KubeCon yn San Francisco.

Gweithiodd ein hymgais gyntaf gyda Helm, ond nid oedd heb rai cyfyngiadau difrifol. Cymerodd set o amlygiadau Kubernetes, wedi'u blasu â generaduron fel blociau YAML rhagarweiniol (mater blaen)*, a llwytho'r canlyniadau i Kubernetes.

* Nodyn. traws.: O'r fersiwn gyntaf o Helm, dewiswyd cystrawen YAML i ddisgrifio adnoddau Kubernetes, a chefnogwyd templedi Jinja a sgriptiau Python wrth ysgrifennu ffurfweddiadau. Ysgrifennon ni fwy am hyn a strwythur y fersiwn gyntaf o Helm yn gyffredinol yn y bennod “A Brief History of Helm” deunydd hwn.

Er enghraifft, i ddisodli maes mewn ffeil YAML, roedd yn rhaid ichi ychwanegu'r lluniad canlynol i'r maniffest:

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

Mae'n wych bod peiriannau templed yn bodoli heddiw, ynte?

Am lawer o resymau, roedd y gosodwr Kubernetes cynnar hwn yn gofyn am restr cod caled o ffeiliau amlwg a dim ond dilyniant bach, sefydlog o ddigwyddiadau a gyflawnwyd. Roedd mor anodd ei ddefnyddio fel bod tîm Ymchwil a Datblygu Llif Gwaith Deis wedi cael amser caled wrth geisio trosglwyddo eu cynnyrch i'r platfform hwn - fodd bynnag, roedd hadau'r syniad eisoes wedi'u hau. Roedd ein hymgais gyntaf yn gyfle dysgu gwych: sylweddolom ein bod yn wirioneddol angerddol am greu offer pragmatig sy'n datrys problemau bob dydd i'n defnyddwyr.

Yn seiliedig ar y profiad o gamgymeriadau yn y gorffennol, fe ddechreuon ni ddatblygu Helm 2.

Gwneud Helm 2

Ar ddiwedd 2015, cysylltodd tîm Google â ni. Roeddent yn gweithio ar declyn tebyg ar gyfer Kubernetes. Roedd y Rheolwr Defnyddio ar gyfer Kubernetes yn borthladd offeryn presennol a ddefnyddiwyd ar gyfer Google Cloud Platform. “A hoffem ni,” gofynnon nhw, “dreulio ychydig ddyddiau yn trafod y tebygrwydd a’r gwahaniaethau?”

Ym mis Ionawr 2016, cyfarfu timau Helm a Rheolwr Lleoli yn Seattle i gyfnewid syniadau. Daeth y trafodaethau i ben gyda chynllun uchelgeisiol: i gyfuno'r ddau brosiect i greu Helm 2. Ynghyd â Deis a Google, mae'r dynion o Skippbox (yn awr yn rhan o Bitnami - tua. transl.), a dechreuon ni weithio ar Helm 2.

Roeddem am gadw Helm yn hawdd i'w ddefnyddio, ond ychwanegwch y canlynol:

  • templedi siart ar gyfer addasu;
  • rheolaeth o fewn clwstwr ar gyfer timau;
  • cadwrfa siartiau o safon fyd-eang;
  • fformat pecyn sefydlog gydag opsiwn llofnod;
  • ymrwymiad cryf i fersiynu semantig a chynnal cydweddoldeb yn ôl rhwng fersiynau.

Er mwyn cyflawni'r nodau hyn, mae ail elfen wedi'i hychwanegu at ecosystem Helm. Tiller oedd enw'r gydran fewn-clwstwr hon ac roedd yn gyfrifol am osod siartiau Helm a'u rheoli.

Ers rhyddhau Helm 2 yn 2016, mae Kubernetes wedi ychwanegu nifer o ddatblygiadau arloesol mawr. Ychwanegwyd rheolaeth mynediad seiliedig ar rôl (RBAC), a ddisodlodd Rheoli Mynediad Seiliedig ar Briodoledd (ABAC) yn y pen draw. Cyflwynwyd mathau newydd o adnoddau (roedd y defnydd yn dal i fod mewn beta ar y pryd). Dyfeisiwyd Diffiniadau Adnoddau Personol (a elwid yn wreiddiol yn Adnoddau Trydydd Parti neu TPRs). Ac yn bwysicaf oll, mae set o arferion gorau wedi dod i'r amlwg.

Ynghanol yr holl newidiadau hyn, parhaodd Helm i wasanaethu defnyddwyr Kubernetes yn ffyddlon. Ar ôl tair blynedd a llawer o ychwanegiadau newydd, roedd yn amlwg ei bod yn bryd gwneud newidiadau sylweddol i'r sylfaen god i sicrhau y gallai Helm barhau i ddiwallu anghenion cynyddol ecosystem sy'n esblygu.

Ffarwel dyner i Tiller

Yn ystod datblygiad Helm 2, fe wnaethom gyflwyno Tiller fel rhan o'n hintegreiddiad gyda Rheolwr Defnyddio Google. Chwaraeodd Tiller rôl bwysig i dimau sy'n gweithio o fewn clwstwr cyffredin: roedd yn caniatáu i wahanol arbenigwyr sy'n gweithredu'r seilwaith ryngweithio â'r un set o ddatganiadau.

Gan fod rheolaeth mynediad yn seiliedig ar rôl (RBAC) wedi'i alluogi yn ddiofyn yn Kubernetes 1.6, daeth yn anoddach gweithio gyda Tiller wrth gynhyrchu. Oherwydd y nifer enfawr o bolisïau diogelwch posibl, ein safbwynt ni fu cynnig cyfluniad caniataol yn ddiofyn. Roedd hyn yn caniatáu i newbies arbrofi gyda Helm a Kubernetes heb orfod plymio i mewn i leoliadau diogelwch yn gyntaf. Yn anffodus, gallai'r cyfluniad caniatâd hwn waddoli'r defnyddiwr ag ystod rhy eang o ganiatadau nad oedd eu hangen arnynt. Roedd yn rhaid i beirianwyr DevOps ac SRE ddysgu camau gweithredol ychwanegol wrth osod Tiller mewn clwstwr aml-denant.

Ar ôl dysgu sut roedd y gymuned yn defnyddio Helm mewn sefyllfaoedd penodol, sylweddolom nad oedd angen i system rheoli rhyddhau Tiller ddibynnu ar gydran o fewn clwstwr i gynnal cyflwr neu swyddogaeth fel canolbwynt canolog ar gyfer rhyddhau gwybodaeth. Yn lle hynny, gallem dderbyn gwybodaeth gan weinydd Kubernetes API, cynhyrchu siart ar ochr y cleient, a storio cofnod o'r gosodiad yn Kubernetes.

Gallai prif nod Tiller fod wedi'i gyflawni heb Tiller, felly un o'n penderfyniadau cyntaf ynglŷn â Helm 3 oedd cefnu ar Tiller yn llwyr.

Gyda Tiller wedi mynd, mae model diogelwch Helm wedi'i symleiddio'n sylweddol. Mae Helm 3 bellach yn cefnogi holl ddulliau diogelwch, hunaniaeth ac awdurdodi modern Kubernetes cyfredol. Pennir caniatâd Helm gan ddefnyddio ffeil kubeconfig. Gall gweinyddwyr clwstwr gyfyngu hawliau defnyddwyr i unrhyw lefel o ronynnedd. Mae datganiadau yn dal i gael eu cadw o fewn y clwstwr, ac mae gweddill ymarferoldeb Helm yn parhau i fod yn gyfan.

Storfeydd siartiau

Ar lefel uchel, mae storfa siartiau yn fan lle gellir storio a rhannu siartiau. Mae cleient Helm yn pecynnu ac yn anfon y siartiau i'r ystorfa. Yn syml, mae ystorfa siartiau yn weinydd HTTP cyntefig gyda ffeil index.yaml a rhai siartiau wedi'u pecynnu.

Er bod rhai manteision i API Cadwrfa Siartiau fodloni'r gofynion storio mwyaf sylfaenol, mae yna rai anfanteision hefyd:

  • Nid yw storfeydd siartiau yn gydnaws â'r rhan fwyaf o weithrediadau diogelwch sy'n ofynnol mewn amgylchedd cynhyrchu. Mae cael API safonol ar gyfer dilysu ac awdurdodi yn hynod bwysig mewn senarios cynhyrchu.
  • Mae offer tarddiad siart Helm, a ddefnyddir i lofnodi, gwirio cywirdeb a tharddiad siart, yn rhan ddewisol o broses cyhoeddi'r Siart.
  • Mewn senarios aml-ddefnyddiwr, gall defnyddiwr arall uwchlwytho'r un siart, gan ddyblu faint o le sydd ei angen i storio'r un cynnwys. Mae cadwrfeydd doethach wedi'u datblygu i ddatrys y broblem hon, ond nid ydynt yn rhan o'r fanyleb ffurfiol.
  • Mae defnyddio un ffeil fynegai ar gyfer chwilio, storio metadata, ac adalw siartiau wedi ei gwneud yn anodd datblygu gweithrediadau aml-ddefnyddiwr diogel.

Prosiect Dosbarthiad Docker (a elwir hefyd yn Docker Registry v2) yw olynydd Cofrestrfa Docker ac yn ei hanfod mae'n gweithredu fel set o offer ar gyfer pecynnu, cludo, storio a danfon delweddau Docker. Mae llawer o wasanaethau cwmwl mawr yn cynnig cynhyrchion sy'n seiliedig ar Ddosbarthu. Diolch i'r sylw cynyddol hwn, mae'r prosiect Dosbarthu wedi elwa o flynyddoedd o welliannau, arferion gorau diogelwch, a phrofion maes sydd wedi'i wneud yn un o arwyr di-glod mwyaf llwyddiannus y byd Ffynhonnell Agored.

Ond a oeddech chi'n gwybod bod y Prosiect Dosbarthu wedi'i gynllunio i ddosbarthu unrhyw fath o gynnwys, nid delweddau cynhwysydd yn unig?

Diolch i'r ymdrechion Menter Cynhwysydd Agored (neu OCI), gellir gosod siartiau Helm ar unrhyw achos Dosbarthu. Am y tro, mae'r broses hon yn arbrofol. Mae cefnogaeth mewngofnodi a nodweddion eraill sydd eu hangen ar gyfer Helm 3 llawn yn waith ar y gweill, ond rydym yn gyffrous i ddysgu o'r darganfyddiadau y mae timau OCI a Dosbarthu wedi'u gwneud dros y blynyddoedd. A thrwy eu mentoriaeth a'u harweiniad, rydym yn dysgu sut beth yw gweithredu gwasanaeth ar raddfa fawr sydd ar gael yn fawr.

Mae disgrifiad manylach o rai newidiadau sydd ar ddod i ystorfeydd siart Helm ar gael по ссылке.

Rheoli rhyddhau

Yn Helm 3, mae cyflwr cymhwysiad yn cael ei olrhain o fewn y clwstwr gan bâr o wrthrychau:

  • release object - yn cynrychioli enghraifft cais;
  • rhyddhau fersiwn gyfrinach - yn cynrychioli cyflwr dymunol y cais ar adeg benodol (er enghraifft, rhyddhau fersiwn newydd).

Her helm install yn creu gwrthrych rhyddhau a chyfrinach fersiwn rhyddhau. Galwch helm upgrade yn gofyn am wrthrych rhyddhau (y gall ei newid) ac yn creu cyfrinach fersiwn rhyddhau newydd sy'n cynnwys y gwerthoedd newydd a maniffest parod.

Mae gwrthrych rhyddhau yn cynnwys gwybodaeth am y datganiad, lle mae rhyddhau yn osodiad penodol o siart a gwerthoedd a enwir. Mae'r gwrthrych hwn yn disgrifio'r metadata lefel uchaf am y datganiad. Mae'r gwrthrych rhyddhau yn parhau trwy gydol cylch bywyd y cais ac mae'n berchen ar yr holl gyfrinachau fersiwn rhyddhau, yn ogystal â'r holl wrthrychau sy'n cael eu creu'n uniongyrchol gan y siart Helm.

Mae fersiwn rhyddhau cyswllt cyfrinachol yn rhyddhau gyda chyfres o ddiwygiadau (gosod, diweddariadau, dychweliadau, dileu).

Yn Helm 2, roedd y diwygiadau yn hynod gyson. Galwch helm install creu v1, y diweddariad dilynol (uwchraddio) - v2, ac yn y blaen. Rhyddhau a rhyddhau fersiwn gyfrinach wedi'u cwympo i mewn i un gwrthrych a elwir yn adolygu. Roedd diwygiadau'n cael eu storio yn yr un gofod enw â Tiller, a oedd yn golygu bod pob datganiad yn "fyd-eang" o ran gofod enwau; o ganlyniad, dim ond un enghraifft o'r enw y gellid ei ddefnyddio.

Yn Helm 3, mae pob datganiad yn gysylltiedig ag un neu fwy o gyfrinachau fersiwn rhyddhau. Mae'r gwrthrych rhyddhau bob amser yn disgrifio'r datganiad cyfredol a anfonwyd i Kubernetes. Mae pob cyfrinach fersiwn rhyddhau yn disgrifio dim ond un fersiwn o'r datganiad hwnnw. Bydd uwchraddiad, er enghraifft, yn creu fersiwn rhyddhau newydd yn gyfrinachol ac yna'n newid y gwrthrych rhyddhau i dynnu sylw at y fersiwn newydd honno. Mewn achos o ddychwelyd, gallwch ddefnyddio cyfrinachau fersiwn rhyddhau blaenorol i rolio'r datganiad yn ôl i gyflwr blaenorol.

Ar ôl i Tiller gael ei adael, mae Helm 3 yn storio data rhyddhau yn yr un gofod enw â'r datganiad. Mae'r newid hwn yn caniatáu ichi osod siart gyda'r un enw rhyddhau mewn gofod enw gwahanol, a chaiff y data ei gadw rhwng diweddariadau clwstwr / ailgychwyn yn ac ati. Er enghraifft, gallwch osod WordPress yn y gofod enw "foo" ac yna yn y gofod enw "bar", a gellir enwi'r ddau ddatganiad yn "wordpress".

Newidiadau i ddibyniaethau siartiau

Siartiau wedi'u pacio (gan ddefnyddio helm package) i'w ddefnyddio gyda Helm 2 gellir ei osod gyda Helm 3, fodd bynnag mae'r llif gwaith datblygu siart wedi'i ailwampio'n llwyr, felly mae'n rhaid gwneud rhai newidiadau i barhau i ddatblygu siartiau gyda Helm 3. Yn benodol, mae'r system rheoli dibyniaeth siart wedi newid.

Mae system rheoli dibyniaeth y siart wedi symud o requirements.yaml и requirements.lock ar Chart.yaml и Chart.lock. Mae hyn yn golygu bod y siartiau a ddefnyddiodd y gorchymyn helm dependency, angen rhywfaint o setup i weithio yn Helm 3.

Gadewch i ni edrych ar enghraifft. Gadewch i ni ychwanegu dibyniaeth at y siart yn Helm 2 a gweld beth sy'n newid wrth symud i Helm 3.

Yn Helm 2 requirements.yaml edrych fel hyn:

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

Yn Helm 3, bydd yr un ddibyniaeth yn cael ei hadlewyrchu yn eich Chart.yaml:

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

Mae siartiau yn dal i gael eu llwytho i lawr a'u gosod yn y cyfeiriadur charts/, felly is-siartiau (is-siartiau), yn gorwedd yn y catalog charts/, yn parhau i weithio heb newidiadau.

Cyflwyno Siartiau Llyfrgell

Mae Helm 3 yn cefnogi dosbarth o siartiau a elwir yn siartiau llyfrgell (siart llyfrgell). Defnyddir y siart hwn gan siartiau eraill, ond nid yw'n creu unrhyw arteffactau rhyddhau ar ei ben ei hun. Gall templedi siart llyfrgell ddatgan elfennau yn unig define. Yn syml, anwybyddir cynnwys arall. Mae hyn yn galluogi defnyddwyr i ailddefnyddio a rhannu pytiau cod y gellir eu defnyddio ar draws siartiau lluosog, gan osgoi dyblygu a chadw at yr egwyddor SYCH.

Mae siartiau llyfrgell yn cael eu datgan yn yr adran dependencies mewn ffeil Chart.yaml. Nid yw eu gosod a'u rheoli yn wahanol i siartiau eraill.

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

Rydym yn gyffrous am yr achosion defnydd y bydd y gydran hon yn eu hagor ar gyfer datblygwyr siartiau, yn ogystal â'r arferion gorau a all ddod i'r amlwg o siartiau llyfrgell.

Beth sydd nesaf?

Helm 3.0.0-alpha.1 yw'r sylfaen ar gyfer dechrau adeiladu fersiwn newydd o Helm. Yn yr erthygl disgrifiais rai nodweddion diddorol Helm 3. Mae llawer ohonynt yn dal i fod yn y camau datblygu cynnar ac mae hyn yn normal; Pwynt datganiad alffa yw profi'r syniad, casglu adborth gan ddefnyddwyr cynnar, a chadarnhau ein rhagdybiaethau.

Cyn gynted ag y bydd y fersiwn alffa yn cael ei ryddhau (cofiwch mai dyma digwydd yn barod - tua. cyfieithu.), byddwn yn dechrau derbyn clytiau ar gyfer Helm 3 gan y gymuned. Mae angen i chi greu sylfaen gref sy'n caniatáu i swyddogaethau newydd gael eu datblygu a'u mabwysiadu, ac i ddefnyddwyr deimlo eu bod yn rhan o'r broses trwy agor tocynnau a gwneud atgyweiriadau.

Rwyf wedi ceisio tynnu sylw at rai o'r gwelliannau mawr sy'n dod i Helm 3, ond nid yw'r rhestr hon yn gynhwysfawr o bell ffordd. Mae'r map ffordd llawn ar gyfer Helm 3 yn cynnwys nodweddion fel gwell strategaethau diweddaru, integreiddio dyfnach â chofrestrfeydd OCI, a'r defnydd o sgemâu JSON i ddilysu gwerthoedd siartiau. Rydym hefyd yn bwriadu glanhau'r sylfaen cod a diweddaru rhannau ohoni sydd wedi'u hesgeuluso dros y tair blynedd diwethaf.

Os ydych yn teimlo ein bod wedi methu rhywbeth, byddem wrth ein bodd yn clywed eich barn!

Ymunwch â'r drafodaeth ar ein Sianeli llac:

  • #helm-users ar gyfer cwestiynau a chyfathrebu syml gyda'r gymuned;
  • #helm-dev i drafod ceisiadau tynnu, cod a chwilod.

Gallwch hefyd sgwrsio yn ein Galwadau Datblygwr Cyhoeddus wythnosol ar ddydd Iau am 19:30 MSK. Mae cyfarfodydd yn cael eu neilltuo i drafod materion y mae datblygwyr allweddol a'r gymuned yn gweithio arnynt, yn ogystal â phynciau trafod ar gyfer yr wythnos. Gall unrhyw un ymuno a chymryd rhan yn y cyfarfod. Dolen ar gael yn sianel Slack #helm-dev.

PS gan y cyfieithydd

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw