
MĂ€rkus tĂ”lke kohta.: 16. mai sel aastal oli oluline verstapost Kubernetesâi paketihalduri - Helm arenduses. Sel pĂ€eval esitati projekti tulevase suure versiooni - 3.0 esimene alfa-vĂ€ljaanne. Selle saabumine toob Helmi mĂ€rkimisvÀÀrseid ja kauaoodatud muudatusi, millele paljud Kubernetesâi kogukonnas loodavad. Ka meie kuulume nende hulka, kuna kasutame Helmi aktiivselt rakenduste seadistamiseks: oleme selle integreerinud oma CI/CD rakendustesse. ja vahel teeme oma panuse upstreami arendamisse. See tĂ”lge koondab 7 mĂ€rki Helmi ametlikust blogist, mis seondub Helmi 3.0 esimese alfa-vĂ€ljaande esitamisega ning rÀÀgib projekti ajaloost ja Helmi 3.0 pĂ”hifunktsioonidest. Nende autor on Matt «bacongobbler» Fisher, Microsofti töötaja ja ĂŒks Helmi peamistest hooldajatest.
15. oktoobril 2015 sĂŒndis projekt, mis nĂŒĂŒd on tuntud kui Helm. Ainult aasta pĂ€rast asutamist liitus Helmi kogukond Kubernetesâega, samal ajal töötades aktiivselt Helmi 2 kallal. Juunis 2018 liitus Helm CNCF-iga. (see vĂ€ljalase toimus juba mai keskpaiku - tĂ”lkija mĂ€rkus.) Helmi loomise ajalugu;.
kala hĂŒvastijĂ€tmine Tillerâiga;
KokkuvÔte:
- chartide registrid;
- vÀljaannete haldamine;
- chartide sÔltuvused;
- library charts;
- Helmi loomise ajalugu
- Helm 1 alustas kui avatud koodiga projekt, mille lÔi Deis. Olime vÀike idufirma,
- mis edasi?
mis omandati
SĂŒnnipĂ€ev
Microsofti poolt 2017. aasta kevadel. Meie teisel avatud koodiga projektil, mis samuti kandis nime Deis, oli tööriist , mida kasutati (lisaks teistele) Deis platvormi seadistamiseks ja haldamiseks Fleet klastris.Sel ajal oli Fleet ĂŒks esimesi konteinerite orkestreerimise platvorme. Me kasutasime seda Deis Workflowâi seadistamiseks ja haldamiseks Fleet klastris.
. Fleet klastris..
Helm 1 loodi tuntud pakihaldurite, nagu Homebrew, apt ja yum, eeskujul. Selle peamine eesmĂ€rk oli lihtsustada selliseid ĂŒlesandeid nagu rakenduste pakkimine ja installimine Kuberneteses. Helm esitlemine toimus ametlikult 2015. aastal KubeCon konverentsil San Franciscos.
Meie esimene katse Helmiga lÀks korda, kuid tÔsiste piiranguteta ei saanud siiski lÀbi. See vÔttis komplekti Kubernetes manifestidest, millele generaatoreid oli lisatud sisend YAML-plokkidena. (front-matter)*, ja laadis tulemused Kubernetesesse.
* MĂ€rkus tĂ”lke kohta.: Helm esimese versiooni jaoks valiti Kubernetes ressursside kirjeldamiseks YAML sĂŒntaks ning konfiguratsioonide kirjutamisel toetas see Jinja malle ja Python-skripte. Selle kohta ja Helm esimese versiooni ĂŒlesehitusest rÀÀkisime peatĂŒkis âHelmi lĂŒhiajaluguâ .
NÀiteks, et asendada vÀli YAML-failis, tuli manifesti lisada jÀrgmine konstruktsioon:
#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yamlVÀga tore, et tÀna on olemas malle tootjad, kas pole?
Paljuski pĂ”hjustel nĂ”udis see varajane Kubernetes'i paigaldaja rangelt mÀÀratletud nimekirja manifest-failidest ja tĂ€itis ainult vĂ€ikest fikseeritud sĂŒndmuste jada. Selle kasutamine oli nii keeruline, et Deis Workflow R&D meeskonnal oli raskusi, kui nad pĂŒĂŒdsid oma toodet sellele platvormile ĂŒle viia; siiski olid idee seemned juba kĂŒlvatud. Meie esimene katse osutus suurepĂ€raseks Ă”pikogemuseks: saime aru, et oleme tĂ”eliselt pĂŒhendunud praktiliste tööriistade loomisele, mis lahendavad meie kasutajate igapĂ€evaseid probleeme.
Kogemustest, mille kandsime varasemate vigade pÔhjal, asusime Helm 2 arendama.
Helm 2 loomine
2015. aasta lĂ”puks vĂ”ttis meiega ĂŒhendust Google'i meeskond. Nad töötasid sarnase tööriista kallal Kubernetesesse. Kubernetes Deployment Manager oli olemasoleva tööriista port, mida kasutati Google Cloud Platformil. âKas me ei tahaks,â kĂŒsisid nad, âveeta paar pĂ€eva sarnasuste ja erinevuste arutamiseks?â
2016. aasta jaanuaris kohtusid Helm ja Deployment Manageri meeskonnad Seattle'is, et ideid vahetada. LĂ€birÀÀkimised lĂ”ppesid ambitsioonika plaaniga: ĂŒhendada mĂ”lemad projektid, et luua Helm 2. Koos Deis'i ja Google'iga liitus arendajate meeskonnaga veel poisid (mis on nĂŒĂŒd osa Bitnami'st â toimetaja mĂ€rkus), ja asusime tööle Helm 2 kallal.
Soovisime sÀilitada Helm'i kasutusmugavust, kuid lisada jÀrgmised elemendid:
- chartide mallid kohandamiseks;
- klusteresisene haldamine meeskondade jaoks;
- esmaklassiline chartide hoidla;
- stabiilne paketi formaat koos allkirjastamise vÔimalusega;
- kindel pĂŒhendumus semantilisele versioonihaldamisele ja tagasipöörduva ĂŒhilduvuse sĂ€ilitamisele versioonide vahel.
Nende eesmĂ€rkide saavutamiseks lisati Helm'i ökosĂŒsteemi teine element. See klusteresisene komponent nimetati Tilleriks ja see vastutas Helm chartide installimise ja haldamise eest.
Alates Helm 2 vĂ€ljalaskmisest 2016. aastal on Kubernetes saanud mitmeid olulisi uuendusi. Tuli rollide pĂ”hine juurdepÀÀsu haldamine (), mis lĂ”puks asendas atribuutide pĂ”hise juurdepÀÀsu juhtimise (ABAC). Uued ressursitĂŒĂŒbid (Deployments olid sel ajal endiselt beetaversioonis). Leiutati Custom Resource Definitions (alguses tuntud kui Third Party Resources vĂ”i TPR-d). Ja kĂ”ige olulisem - ilmusid parimad praktikud.
Kuna kĂ”ik need muudatused toimusid, jĂ€tkas Helm Kubernetes'i kasutajatele ustav teenimine. PĂ€rast kolme aastat ja palju uusi lisandeid sai selgeks, et on aeg teha olulisi muudatusi koodibaasis, et Helm saaks jĂ€tkuvalt rahuldada areneva ökosĂŒsteemi kasvavaid vajadusi.
Hellitus hĂŒvastijĂ€tt Tillersist
Helm 2 arendamise kĂ€igus tutvustasime Tillerit kui osa meie integreerimisest Google'i Deployment Manager'iga. Tiller mĂ€ngis olulist rolli meeskondadele, kes töötasid ĂŒhise klastriga: see vĂ”imaldas erinevatel infrastruktuuri spetsialistidel suhelda sama vĂ€ljundite kogumiga.
Kuna rollipĂ”hine juurdepÀÀsukontroll (RBAC) on Kubernetes 1.6 vaikimisi lubatud, muutus Tilleriga töö tegemine tootmisreĆŸiimis keerulisemaks. Suure arvu vĂ”imalike turvapoliitikate tĂ”ttu oli meie seisukoht pakkuda vaikimisi lubavat konfiguratsiooni. See vĂ”imaldas algajatel katsetada Helmiga ja Kubernetesega ilma et oleks vaja kĂ”igepealt turvaseadetesse sĂŒveneda. Kahjuks vĂ”is see lubav konfiguratsioon anda kasutajale liiga laiad Ă”igused, mida tal ei olnud vaja. DevOps ja SRE insenerid pidid Ă”ppima tĂ€iendavaid tegevusi, paigaldades Tilleri mitme kasutaja (multi-tenant) klastrisse.
Saades teada, kuidas kogukonna liikmed kasutavad Helmi konkreetses olukorras, mĂ”istsime, et Tilleri vĂ€ljalaskesĂŒsteem ei pea toetuma klastrisisesele komponendile olekute haldamiseks vĂ”i toimima keskse sĂ”lmena vĂ€ljalaskeinfo osas. Selle asemel vĂ”iksime saada teavet Kubernetes API serverilt, genereerida charti kliendi poolel ja salvestada installatsiooni kirje Kubernetesesse.
Tilleri pÔhifunktsiooni oli vÔimalik tÀita ka ilma Tillerita, seega oli meie esimene otsus Helm 3 kohta Tilleri tÀielik kÔrvaldamine.
Tilleri lahkumisega muutus Helmi turvamudel radikaalselt lihtsamaks. Helm 3 toetab nĂŒĂŒd kĂ”iki kaasaegseid turbe, autentimise ja autoriseerimise viise, mis on olemas tĂ€napĂ€eva Kuberneteses. Helmi Ă”igused mÀÀratakse . Klastri administraatorid saavad kasutajate Ă”igusi piirata mis tahes detailitasemel. VĂ€ljalasked salvestatakse endiselt klastrisse, samas kui Helmi muu funktsionaalsus sĂ€ilib.
Charti allikad
Ăldiselt on chartide lĂ€htekohaks koht, kus on vĂ”imalik charte hoida ja jagada. Helm klient pakib ja saadab chardid repositorysse. Lihtsustatult öeldes on chartide repository primitiivne HTTP-server, millel on index.yaml fail ja mĂ”ned pakendatud chardid.
Kuigi chartide repository API-l on mÔned eelised, et vastata kÔige pÔhilisematele ladustamise nÔuetele, on sellel ka mitmeid puudusi:
- Chartide hoidmine on halvasti ĂŒhilduv enamikuga turvalisuse rakendustest, mis on vajalikud tootmisĂŒmbruses. Standardse API olemasolu autentimiseks ja autoriseerimiseks on tootmisstsenaariumites ÀÀrmiselt oluline.
- Helm'i tööriistad, mis jÀlgivad chartide pÀritolu ja neid kasutatakse allkirjastamiseks, terviklikkuse kontrollimiseks ning chartide pÀritolu mÀÀramiseks, on publikatsiooniprotsessi valikuline osa.
- Mitme kasutaja stsenaariumites vĂ”ib sama chart olla ĂŒles laaditud teise kasutaja poolt, kahekordistades selle sisu salvestamiseks vajaliku ruumi. Selle probleemi lahendamiseks on vĂ€lja töötatud nutikamad hoidlad, kuid need ei ole ametlikus spetsifikatsioonis osa.
- Ăhe indeksi faili kasutamine chartide otsimiseks, metadate salvestamiseks ja chartide hankimiseks on keerukust suurendanud ohutute mitme kasutaja rakenduste vĂ€ljatöötamisel.
Projekt (tuntud ka kui Docker Registry v2) on Docker Registry jĂ€rglane ja tegelikult on see komplekt tööriistu Docker-i piltide pakkimiseks, saatmiseks, salvestamiseks ja tarnimiseks. Paljud suuremad pilveteenused pakuvad Distributioni pĂ”hjal pĂ”hinevaid tooteid. Suure tĂ€helepanu tĂ”ttu on Distribution projekt kasu saanud pikaleveninud tĂ€iustustest, parimatest turvapraktikatest ja katsetamisest looduslikes tingimustes, muutes selle ĂŒheks edukaimaks, kuid vĂ€he tuntud kangelaseks avatud allika maailmas.
Aga kas sa tead, et Distributioni projekt on loodud mis tahes vormi sisu levitamiseks, mitte ainult konteineripiltide jaoks?
TĂ€nu pingutustele (vĂ”i OCI), saavad Helm chartid olla paigutatud igasse Distributioni instantsi. Praegu on see protsess eksperimentaalne. Tööd sisselogimise ja teiste funktsioonide toetamiseks, mis on vajalikud tĂ€ielikuks Helm 3 kasutamiseks, pole veel lĂ”petatud, kuid oleme vĂ€ga pĂ”nevil Ă”ppimisvĂ”imaluse ĂŒle, mida OCI ja Distributioni meeskonnad on aastate jooksul avastanud. Ja tĂ€nu nende juhendamisele ja suunamisele saame aru, mis on kĂ”rge kĂ€ttesaadavusega teenuse haldamine suures ulatuses.
Rohkem teavet mÔnede eelseisvate muudatuste kohta Helm chartide hoidlates on saadaval .
VĂ€ljaandmise haldamine
Helm 3-s jÀlgitakse rakenduse seisundit klastris paari objekti abil:
- release object â esindab rakenduse eksemplari;
- release version secret â esindab soovitud rakenduse olekut konkreetsel ajahetkel (nĂ€iteks uue versiooni vĂ€ljaandmine).
Kutsumine helm install loodab release objekti ja release version secret. Kutsumine helm upgrade nÔuab release objekti olemasolu (mida ta vÔib muuta) ja loob uue release version secret, mis sisaldab uusi vÀÀrtusi ja ettevalmistatud manifesti.
Release object sisaldab teavet vĂ€ljaande kohta, kus vĂ€ljaanne on nimetatud charti ja vÀÀrtuste konkreetne paigaldus. See objekt kirjeldab vĂ€ljaande ĂŒlalt alla metaandmeid. Release object sĂ€ilib kogu rakenduse eluea ning on kĂ”igi release version secretâide ja kĂ”ikide objektide omanikud, mis on otseselt loodud Helm-chartiga.
Release version secret seob vÀljaande revision sarjaga (paigaldamine, uuendused, tagasipöördumised, kustutamine).
Helm 2-s olid revisjonid rangelt jĂ€rjestikused. Kutsumine helm install loonud v1, jĂ€rgneva uuendamise (upgrade) â v2 ja nii edasi. Release ja release version secret olid kokku pandud ĂŒheks objektiks, mida tuntakse kui revision. Revision'id salvestati samasse nimekavasse, mis Tiller, mis tĂ€hendas, et iga vĂ€ljaanne oli âglobaalneâ nimekava osas; seetĂ”ttu oli vĂ”imalik kasutada ainult ĂŒhte eksemplari nimega.
Helm 3-s on iga vĂ€ljaanne seotud ĂŒhe vĂ”i mitme release version secretâiga. Release object kirjeldab alati praegust vĂ€ljaannet, mis on Kuberneteses juurutatud. Iga release version secret kirjeldab ainult ĂŒhe versiooni sellest vĂ€ljaandest. Uuendamine (upgrade) loob nĂ€iteks uue release version secret'i ja seejĂ€rel muudab release object'it, et see viitaks sellele uuele versioonile. Tagasipöördumise (rollback) korral on vĂ”imalik kasutada eelnevaid release version secret'e, et tagasi minna vĂ€ljaande eelmisse olekusse.
PĂ€rast Tillerist loobumist salvestab Helm 3 vĂ€ljaande andmed sama nimekava alla. Selline muudatus vĂ”imaldab installida chart'i sama vĂ€ljaande nimega teise nimekavasse, ning andmed sĂ€ilivad vĂ€rskenduste/klastri taaskĂ€ivituste vahel etcd's. NĂ€iteks vĂ”ib WordPressi installida nimekavasse âfooâ, ning seejĂ€rel teise nimekavasse âbarâ, ja mĂ”lemad vĂ€ljaanded vĂ”ivad nimetuda âwordpressâ.
Muutused chartide sÔltuvustes
Pakitud chart'id (kasutades helm package) Helm 2 kasutamiseks saab installeerida Helm 3, kuid chartide arendustööd on tĂ€ielikult ĂŒle vaadatud, seetĂ”ttu tuleb mĂ”ned muudatused teha, et jĂ€tkata chartide arendamist heli 3-ga. EelkĂ”ige on muutunud chartide sĂ”ltuvuste haldamise sĂŒsteem.
Chartide sĂ”ltuvuste haldamise sĂŒsteem on ĂŒle lĂ€inud requirements.yaml ja requirements.lock . Tundub, et Chart.yaml ja Chart.lock. See tĂ€hendab, et helm 2-s kasutatud chartide korral helm dependency, on vajalik teatud seadistamine, et töötada Helm 3-ga.
Vaatame nĂ€idet. Lisame sĂ”ltuvuse chartile Helm 2-s ja vaatame, mis muutub Helm 3-le ĂŒleminekul.
Helm 2 requirements.yaml nÀgi vÀlja jÀrgmiselt:
dependencies:
- name: mariadb
version: 5.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- database Helm 3-s peegeldub sama sÔltuvus teie Chart.yaml:
dependencies:
- name: mariadb
version: 5.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- database Chartid laaditakse endiselt ning paigutatakse katalooge charts/, seega subchartid (subcharts), mis asuvad kaustas charts/, jÀtkavad töötamist muutumatuna.
Tutvustame Library Charts
Helm 3 toetab chartide klassi, mida nimetatakse raamatukogude chartideks (library chart). See chart kasutatakse teiste chartide poolt, kuid ei loo iseseisvalt ĂŒhtegi versiooni artefakti. Library chartide malli vĂ”ib deklareerida ainult elemendid. Muud sisu ignoreeritakse. See vĂ”imaldab kasutajatel taaskasutada ja jagada koodijuppe, mida saab kasutada mitmetes chartides, vĂ€ltides seelĂ€bi dubleerimist ja jĂ€rgides pĂ”himĂ”tet define. Teine sisu jĂ€etakse lihtsalt kĂ”rvale. See vĂ”imaldab kasutajatel taaskasutada ja jagada koodifragmente, mis vĂ”ivad olla kasutuses mitmes chartis, vĂ€ltides seega dubleerimist ja jĂ€rgides pĂ”himĂ”tet .
Raamatukogu chartide deklareerimine toimub jaotis sÔltuvused failis Chart.yaml. Nende installimine ja haldamine ei erine teistest chartidest.
dependencies:
- name: mylib
version: 1.x.x
repository: quay.ioOotame pÔnevusega rakendusvÔimalusi, mida see komponent arendajatele avab, samuti parimaid praktikaid, mis vÔivad tuleneda raamatukogude chartidest.
Mis edasi?
Helm 3.0.0-alpha.1 â alus, millega alustame uue Helm versiooni loomist. Artiklis tutvustasin mĂ”ned huvitavad vĂ”imalused, mis Helm 3-l on. Paljud neist on endiselt varajases arengufaasis ja see on normaalne; alfa versiooni eesmĂ€rk on ideed testida, saada esimestelt kasutajatelt tagasisidet ning kinnitada meie oletusi.
Niipea kui alfa versioon on vĂ€lja antud (tuletame meelde, et see â toimetaja mĂ€rkus), me alustan vĂ”tma Helm 3 seoseid kogukonnalt. On oluline luua usaldusvÀÀrne alus, mis vĂ”imaldab arendada ja vĂ”tta kasutusele uusi funktsioone, samas saavad kasutajad olla kaasatud protsessi, avades piletid ja tehes parandusi.
Artiklis pĂŒĂŒdsin kĂ€sitleda mĂ”ningaid olulisi tĂ€iustusi, mis ilmuvad Helm 3-s, kuid seda nimekirja ei saa kuidagi pidada ammendavaks. Helm 3 jaoks on kogu plaanis sellised uuendused nagu parandatud vĂ€rskendamisstrateegiad, sĂŒgavam integratsioon OCI registritega ja JSON- skeemide kasutamine chartide vÀÀrtuste valideerimiseks. Samuti plaanime koodibaasi puhastada ja uuendada neid osi, mis on viimased kolm aastat tĂ€helepanuta jÀÀnud.
Kui teil on tunne, et oleme midagi tÀhele pannud, siis oleksime tÀnulikud teie mÔtete kuulmise eest!
Liituge aruteluga meie :
-
#helm-userskĂŒsimuste ja lihtsa suhtlemise jaoks kogukonnaga; -
#helm-devpull requestide, koodi ja vigade aruteluks.
Saate ka suhelda meie iga nĂ€dal toimuvatel Public Developer Calls, mis toimuvad neljapĂ€eviti kell 19:30 MSK. Kohtumised on pĂŒhendatud arutamisele probleemide ĂŒle, millega töötavad vĂ”tme arendajad ja kogukond, samuti nĂ€dalase arutelu teemadele. IgaĂŒhel on vĂ”imalus liituda ja osaleda kohtumisel. Lingid on saadaval Slack-kanalis #helm-dev.
P.S. tÔlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
