
MĂ€rk. tĂ”lge.: 16. mai sel aastal on tĂ€histav oluline verstapost Kubernetes'i pakihaldur - Helm. Sel pĂ€eval esitleti projekti tulevase suurversiooni - 3.0 - esimest alpha-vĂ€ljaannet. Selle vĂ€ljalaskmine toob Helmi olulisi ja kauaoodatud muudatusi, millele paljud Kubernetes'i kogukonna liikmed loodavad. Meie kuulume nende hulka, kuna kasutame aktiivselt Helmi rakenduste juurutamiseks: oleme integreerinud selle oma CI/CD tööriistadesse. ja toome aeg-ajalt oma panuse upstream'i arendamisse. See tĂ”lge ĂŒhendab 7 mĂ€rkust Helmi ametlikust blogist, mis on seotud Helmi 3 esimesest alpha-vĂ€ljaandest ja rÀÀgivad projekti ajaloost ja Helmi 3 peamistest omadustest. Nende autor on Matt «bacongobbler» Fisher, Microsofti töötaja ja ĂŒks Helmi vĂ”tmehoidjatest.
15. oktoobril 2015 kĂ€ivitati projekt, mis tĂ€napĂ€eval tuntud kui Helm. Ainult aasta pĂ€rast asutamist liitus Helmi kogukond Kubernetes'ega, töötades samas aktiivselt Helmi 2 kallal. Juuni 2018. aastal liitus Helm areneva (incubating) projektina. Liigume tagasi tĂ€napĂ€eva - ja siin on juba lĂ€henemas Helmi 3 esimene alpha-vĂ€ljaanne (see vĂ€ljalaskmine mai keskpaiku â tĂ”lke mĂ€rkus).
Selles artiklis rÀÀgin ma sellest, kuidas kÔik algas, kuidas me oleme jÔudnud tÀnasesse etappi, esitan mÔned ainulaadsed omadused, mis on saadaval Helm 3 esimeses alpha-versioonis, ja selgitan, kuidas me plaanime edasi areneda.
KokkuvÔte:
- Helmi loomise ajalugu;
- soojad hĂŒvastijĂ€tud Tilleriga;
- chartide hoidlad;
- vÀljalaskehaldus;
- muudatused chartide sÔltuvustes;
- raamatukogu chartid;
- Mis edasi?
Helmi loomise ajalugu
SĂŒnnihetk
Helm 1 algas kui avatud lĂ€htekoodiga projekt, mille lĂ”i ettevĂ”te Deis. Olime vĂ€ike idufirma, Microsofti poolt 2017. aasta kevadel. Meie teisel avatud lĂ€htekoodiga projektil, millel oli samuti nimi Deis, oli tööriist deisctl, mida kasutati (lisaks muule) Deisi platvormi installimiseks ja haldamiseks Tollal oli Fleet ĂŒks esimesi konteinerite orkestreerimise platvorme.
Kuna 2015. aasta keskpaiku otsustasime suunda muuta ja tĂ”ime Deisi (tol ajal Deis Workflow'iks ĂŒmber nimetatud) Fleet'ilt Kubernetes'ile. Ăks esimesi asju, mida tegime, oli installimistööriista ĂŒmbertegemine. deisctlKasutame seda Deis Workflow' installimiseks ja haldamiseks Fleet'i klastris.
Helm 1 loodi tuntud paketihaldurite, nagu Homebrew, apt ja yum eeskujul. Selle peamine ĂŒlesanne oli lihtsustada selliseid ĂŒlesandeid nagu rakenduste pakkimine ja installimine Kuberneteses. Helm esitati ametlikult 2015. aastal KubeCon konverentsil San Franciscos.
Meie esimene katse Helmiga Ônnestus, kuid tÔsiste piirangutega. See vÔttis komplekti Kubernetes'e manifestidest, millele olid lisatud generaatorid sisendina YAML-plokkidena. (front-matter)*, ja laadis tulemused Kubernetesesse.
* MĂ€rk. tĂ”lge.: Esimese versiooni Helmiga valiti Kubernetes'e ressursside kirjeldamiseks YAML-sĂŒntaks ning konfiguratsioonide kirjutamisel toetati Jinja malle ja Python-skripte. Ăksikasjalikumalt selle ja esimese versiooni Helmi struktuuri kohta rÀÀkisime peatĂŒkis "Helmi lĂŒhiajalugu". .
NÀiteks, et asendada vÀli YAML-failis, tuli manifesti lisada jÀrgmine struktuur:
#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yamlLahe, et tÀnapÀeval on olemas mallemootorid, ei ole nii?
Mitmeti pĂ”hjustel nĂ”udis see varajane Kubernetes'i installija rangelt mÀÀratletud manifestifailide nimekirja ja tĂ€itis vaid vĂ€ikest fikseeritud sĂŒndmuste jada. Selle kasutamine oli sedavĂ”rd keeruline, et Deis Workflow R&D meeskond pidi oma toote selle platvormile viimise katsetamisel taluma raskusi â siiski olid idee seemned juba kĂŒlvatud. Meie esimene katse osutus suurepĂ€raseks Ă”pikogemuseks: mĂ”istsime, et oleme tĂ”eliselt pĂŒhendunud praktiliste tööriistade loomisele, mis lahendavad meie kasutajate igapĂ€evaseid probleeme.
Kasutades möödunud vigadest saadud kogemust, alustasime Helm 2 arendamist.
Helm 2 loomine
2015. aasta lĂ”pus vĂ”tsid meiega ĂŒhendust Google'i meeskond. Nad töötasid sarnase tööriista kallal Kubernetes'i jaoks. Deployment Manager Kubernetes'i jaoks oli olemasoleva tööriista port, mida kasutati Google Cloud Platformis. âKas me ei sooviks,â kĂŒsisid nad, âkulutada paar pĂ€eva sarnasuste ja erinevuste arutamiseks?â
Jaanuaris 2016 kohtusid Helm'i ja Deployment Manager'i meeskonnad Seattles, et ideeid vahetada. LĂ€birÀÀkimised lĂ”ppesid ambitsioonika plaaniga: ĂŒhendada kaks projekti, et luua Helm 2. Koos Deise ja Google'iga, liitusid arendajate meeskonnaga ka poisid SkippBoxâist (nĂŒĂŒd osa Bitnami'ist â tĂ”lke mĂ€rk.), ja me asusime tööle Helm 2 kallal.
Soovisime sÀilitada Helm'i kasutusmugavust, kuid lisada jÀrgmist:
- mallid kohandamiseks;
- sisemine haldus meeskondadele;
- esmaklassiline chartide hoidla;
- stabiilne pakettide formaat allkirjastamise vÔimalusega;
- kindel pĂŒhendumus semantilisele versioonihaldamisele ja tagasipöörduvuse sĂ€ilitamisele versioonide vahel.
Nende eesmĂ€rkide saavutamiseks lisati Helm'i ökosĂŒsteemi teine komponent. See siseklastri komponent nimetati Tilleriks ja see haldas Helm chartide paigaldamist ja haldamist.
Alates Helm 2 vĂ€ljatöötamisest 2016. aastal on Kubernetes saanud mitmeid tĂ”siseid uuendusi. Kasutusel on juurdepÀÀsukontroll, mis pĂ”hineb rollidel (), mis lĂ”puks asendas atribuutide pĂ”hjal pĂ”hineva juurdepÀÀsu kontrolli (ABAC). Esitati uued ressursitĂŒĂŒbid (Deployments olid tol ajal endiselt beetaversioonis). Leiutati kohandatud ressursimÀÀratlemised (alguses nimetati neid kolmandate osapoolte ressurssideks ehk TPR-ideks). Ja mis kĂ”ige tĂ€htsam â ilmus parimate praktikate kogum.
KĂ”igi nende muudatuste taustal jĂ€tkas Helm usaldusvÀÀrselt Kubernetes'i kasutajate teenimist. PĂ€rast kolme aastat ja hulgaliselt uusi tĂ€iendusi sai selgeks, et on aeg teha olulisi muudatusi koodibaasis, et Helm saaks jĂ€tkuvalt rahuldada areneva ökosĂŒsteemi kasvavaid vajadusi.
Soodne hĂŒvasti Tilleriga
Helm 2 arendamise kĂ€igus tutvustasime Tillert osana meie integratsioonist Google'i Deployment Manageriga. Tiller mĂ€ngis olulist rolli meeskondade jaoks, kes töötasid ĂŒhises klusteris: see vĂ”imaldas erinevatel infrastruktuuri spetsialistidel suhelda sama vabastamise kogumi kaudu.
Kuna rollipĂ”hine juurdepÀÀsukontroll (RBAC) oli Kubernetes 1.6-s vaikimisi sisse lĂŒlitatud, muutus Tilleriga töötamine tootmises keerulisemaks. Suure hulga vĂ”imalike turvapoliitikate tĂ”ttu otsustasime vaikimisi pakkuda lubavaid konfiguratsioone. See vĂ”imaldas algajatel katsetada Helmi ja Kubernetesega, ilma et nad peaksid esmalt sĂŒvenema turvalisuse seadistustesse. Kahjuks vĂ”is see lubav konfiguratsioon anda kasutajale liiga laia loakogumi, mis talle ei olnud vajalik. DevOps- ja SRE-insenerid pidid Ă”ppima tĂ€iendavaid kĂ€itusmeetmeid, et installida Tiller mitme kasutaja (multi-tenant) klastrisse.
Saades aru, kuidas kogukonna liikmed kasutavad Helmi konkreetsetes olukordades, mĂ”istsime, et Tilleri vĂ€ljalaskehaldusĂŒsteem ei pea toetuma siseklassifitseeritavale komponendile, et hooldada olekuid vĂ”i toimida kesksena vĂ€ljalaskeinfoga. Selle asemel vĂ”iksime lihtsalt saada teavet Kubernetes API-serverilt, genereerida klientpoolt chartâi ja salvestada installatsiooni kirje Kubernetesesse.
Peamisi Tilleri ĂŒlesandeid oleks saanud tĂ€ita ka ilma Tilleri, seega oli ĂŒks meie esimesi otsuseid Helmi 3 osas Tillerist tĂ€ielikult loobuda.
Tilleri lahkumisega lihtsus Helm'i turvamudel oli radikaalselt paranenud. Helm 3 toetab nĂŒĂŒd kĂ”iki tĂ€napĂ€evaseid turvameetodeid, autentimist ja volitamist, mis on olemasolevas Kuberneteses. Helmi Ă”igusi mÀÀratletakse kasutades Klastri administraatorid saavad piirata kasutajate Ă”igusi mistahes detailitase. VĂ€ljalasked jÀÀvad endiselt klastrisse, kogu muu Helmi funktsionaalsus jÀÀb alles.
Chartide repod
KÔrgel tasemel on chartide hoidla koht, kus saab salvestada ja jagada chart-e. Helm'i klient pakib ja saadab chart-e hoidlasse. Lihtsalt öeldes on chartide hoidla primitiivne HTTP server, millel on fail index.yaml ja mÔned pakitud chartid.
Kuigi hoidla API-l on teatud eelised, mis vastavad kÔige pÔhivajadustele, on sel ka mitmeid puudusi:
- Chartide hoidlad on halvasti ĂŒhilduvad enamikuga tootmisvĂ”rkude turvimplementatsioonist. Standardsest API-st autentimise ja autoriseerimise jaoks on tootmisstsenaariumites ÀÀrmiselt oluline.
- Helm'i tööriistad chartide pÀritolu jÀlgimiseks, mida kasutatakse chartide allkirjastamiseks, terviklikkuse kontrollimiseks ja pÀritolu kindlakstegemiseks, on chartide avaldamise protsessi valikuline osa.
- Mitme kasutaja stsenaariumides vĂ”ib ĂŒks ja sama diagramm olla teiste kasutajate poolt laaditud, suurendades seelĂ€bi kaks korda ruumi, mis on vajalik sama sisu salvestamiseks. Selle probleemi lahendamiseks on vĂ€lja töötatud nutikamad hoidlad, kuid need ei kuulu ametlikku spetsifikatsiooni.
- Ăhe indeksi faili kasutamine otsimiseks, metandmete salvestamiseks ja diagrammide saamiseks on raskendanud turvaliste mitme kasutaja rakenduste arendamist.
Projekt (tuntud ka kui Docker Registry v2) on Docker Registry jĂ€reltulija ja tegelikult komplekt tööriistu Docker'i piltide pakendamiseks, edastamiseks, ladustamiseks ja tarnimiseks. Paljud suured pilveteenused pakuvad Distribution pĂ”hinevaid tooteid. TĂ€nu sellele suurenenud tĂ€helepanule on Distribution projekt kasu saanud aastatepikkustest tĂ€iustustest, parimatest turbepraktikatest ja 'laiaulatusliku' testimise kogemusest, muutes selle ĂŒheks kĂ”ige edukamaks avatud lĂ€htekoodiga kangelaseks.
Aga kas teate, et Distribution projekt loodi igasuguste sisu levitamiseks, mitte ainult konteineripiltide jaoks?
TÀnu jÔupingutustele (vÔi OCI), Helm-chartid vÔivad olla paigutatud igasse Distributioni nÀidikusse. Praegu on see protsess veel katsetamisjÀrgus. Töö sisselogimise ja teiste Helm 3 tÀisfunktsionaalsuseks vajalike omaduste toetamise osas ei ole veel lÔppenud, kuid me oleme vÀga rÔÔmsad, et saame Ôppida OCI ja Distributioni meeskondade aastate jooksul tehtud avastustest. AitÀh nende juhendamise ja toetamiste eest saame aru, mis on kÔrge kergendusega teenuste haldamine suurel skaalal.
Helm-chartide reposte tulevaste muudatuste ĂŒksikasjalikum kirjeldus on saadaval .
VĂ€ljaande haldamine
Helm 3-s jÀlgitakse rakenduse olekult klastris paar objekti:
- release object â esindab rakenduse eksemplari;
- release version secret â esindab rakenduse soovitud olekut kindlal ajal (nt uue versiooni vabastamine).
Kutse helm install loob release object'i ja release version secret'i. Kutsumine helm upgrade nÔuab release object'i (mida ta saab muuta) ja loob uue release version secret'i, millel on uued vÀÀrtused ja ettevalmistatud manifeste.
Release objekt sisaldab teavet vĂ€ljaande kohta, kus vĂ€ljaanne on konkreetne installeerimine nimelise chart'i ja vÀÀrtuste jaoks. See objekt kirjeldab pealsetasandi metaandmeid vĂ€ljaande kohta. Release objekt sĂ€ilib kogu rakenduse elutsĂŒkli jooksul ja omab kĂ”iki release version saladusi, samuti kĂ”iki objekte, mis on otseselt loodud Helm chart'iga.
Release version saladus seob vÀljaande revisjonide seeriaga (installeerimine, uuendused, tagasivÔtmised, kustutamine).
Helm 2-s olid revisjonid rangelt jĂ€rjestikused. Kutsumine helm install tĂ”i esile v1, sellele jĂ€rgnev uuendus (upgrade) - v2, ja nii edasi. Release ja release version saladus on kokku pandud ĂŒheks objektiks, mida tuntakse kui revision. Revision'id salvestati samas nimede ruumis, kus oli Tiller, mis tĂ€hendas, et iga vĂ€ljaanne oli nimede ruumi seisukohalt "globaalne"; seetĂ”ttu sai kasutada ainult ĂŒhte nime eksemplari.
Helm 3-s iga versioon on seotud ĂŒhe vĂ”i mitme release version secretâiga. Release objekt kirjeldab alati praegust versiooni, mis on Kuberneteses rakendatud. Iga release version secret kirjeldab ainult ĂŒhte versiooni sellest release'ist. Uuendus (upgrade) loob nĂ€iteks uue release version secret'i ja seejĂ€rel muudab release objekti, et see viitaks sellele uuele versioonile. TagasivĂ”tmise (rollback) korral saab kasutada varasemaid release version secret'e, et taastada release eelmisse olekusse.
PĂ€rast Tiller'ist loobumist salvestab Helm 3 andmed release kohta ĂŒhte nimekirja koos release'iga. Selline muudatus vĂ”imaldab installida chart'i sama nimega release'iga teise nimekirja, ja andmed sĂ€ilitavad end vĂ€rskenduste/klastri taaskĂ€ivituste vahel etcd's. NĂ€iteks saab installida WordPress'i nimekirjas 'foo', seejĂ€rel aga nimekirjas 'bar', ning mĂ”lemat release'i saab nimetada 'wordpress'.
Muutused chartide sÔltuvustes
Pakendatud chart'id (kaudu helm package) Helm 2-ga kasutamiseks saab paigaldada ka Helm 3, kuid chartide arendamise töövoog on tĂ€ielikult ĂŒle vaadatud, mistĂ”ttu tuleb teha mĂ”ned muudatused, et jĂ€tkata chartide arendamist Helm 3-ga. Eriti on muutunud chartide sĂ”ltuvuste haldamise sĂŒsteem.
Charti sÔltuvuste haldamine on lÀinud requirements.yaml ja requirements.lock jÀrgnevaga Chart.yaml ja Chart.lock. See tÀhendab, et chartid, mis kasutasid kÀsku helm dependency, vajavad mÔningast seadistamist, 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-s requirements.yaml nÀgi vÀlja jÀrgmine:
dependencies:
- name: mariadb
version: 5.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- database Helm 3-s peegelduv 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 ja paigutatakse kausta charts/, seega subchartid (subcharts), mis asuvad kaustas charts/, jÀtkavad tööd muutumatult.
Esitleme Library Charts
Helm 3 toetab class chart'e, mida nimetatakse raamatukogude chart'ideks (library chart). Selle diagrammi vÔivad kasutada teised diagrammid, kuid see ei loo iseseisvalt mingeid versioon artefakte. Raamatukogu diagrammide mallid saavad kuulutada ainult elemente. mÀÀrata. Teisi sisu lihtsalt ignoreeritakse. See vÔimaldab kasutajatel taaskasutada ja jagada koodilÔike, mida saab kasutada mitmetes diagrammides, vÀltides seelÀbi dubleerimist ja jÀrgides printsiipi .
Raamatukogu diagrammid kuulutatakse jaotises sÔltuvused failis Chart.yaml. Nende paigaldamine ja haldamine ei erine teistest diagrammidest.
sÔltuvused:
- nimi: mylib
versioon: 1.x.x
hoidla: quay.ioOotame pÔnevusega rakendusi, mida see komponent avab diagrammi arendajatele, samuti parimaid praktikaid, mis vÔivad tekkida raamatukogu diagrammide tÔttu.
Mis edasi?
Helm 3.0.0-alpha.1 â alus, millele toetudes alustame uue Helm versiooni loomist. Artiklis kirjeldasin mĂ”ningaid huvitavaid vĂ”imalusi Helm 3. Paljud neist on endiselt arenduse algstaadiumis ja see on normaalne; alfa-vĂ€ljaande mĂ”te on proovida ideed, koguda tagasisidet varajastelt kasutajatelt ja kinnitada meie hĂŒpoteese.
Kui alfa-versioon on vĂ€lja antud (tuletame meelde, et see â kt. tĂ”lge), hakkame vĂ”tma vastu Helm 3 kogukonna patĆĄe. Oluline on luua usaldusvÀÀrne alus, mis vĂ”imaldab arendada ja vastu vĂ”tta uusi funktsioone, samas kui kasutajad saavad tunda end kaasatuna protsessi, avades piletid ja esitades parandusi.
Artiklis pidasin silmas mitmeid olulisi tĂ€iustusi, mis ilmuvad Helm 3-s, kuid seda loetelu ei saa kindlasti pidada ammendavaks. Helm 3 tĂ€ieulatuslik plaan sisaldab selliseid uuendusi nagu paremad vĂ€rskendamise strateegiad, sĂŒgavam integreerimine OCI registritega ja JSON-skeemide kasutamine chartide vÀÀrtuste valideerimiseks. Plaanime samuti puhastada koodibaasi ja vĂ€rskendada neid osi, mis on viimase kolme aasta jooksul tĂ€helepanuta jÀÀnud.
Kui arvate, et oleme midagi olulist unustanud, oleks meil hea meel kuulda teie mÔtteid!
Liituge aruteluga meie :
-
#helm-userskĂŒsimuste ja lihtsa suhtlemise jaoks kogukonnaga; -
#helm-devpull requestide, koodi ja vigade arutamiseks.
Saate osaleda ka meie iganĂ€dalastes Public Developer Calls neljapĂ€eviti kell 19:30 MSK. Kohtumised keskenduvad vĂ”tmeprogrammejate ja kogukonna töötavate ĂŒlesannete arutamisele, samuti nĂ€dala aruteluteemadele. IgaĂŒks on tere tulnud liituma ja kohtumisel osalema. Link on saadaval Slacki kanalites. #helm-dev.
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
