Aféierung Helm 3

Aféierung Helm 3

Note. iwwersat.: Mee 16 vun dësem Joer markéiert e bedeitende Meilesteen an der Entwécklung vum Package Manager fir Kubernetes - Helm. Op dësem Dag gouf déi éischt Alpha Verëffentlechung vun der zukünfteg grousser Versioun vum Projet - 3.0 - presentéiert. Seng Verëffentlechung wäert bedeitend a laang-erwaarde Ännerungen un Helm bréngen, fir déi vill an der Kubernetes Gemeinschaft héich Hoffnungen hunn. Mir selwer sinn ee vun dësen, well mir aktiv Helm fir Applikatiounsdeployment benotzen: mir hunn et an eisem Tool integréiert fir CI / CD ëmzesetzen werf a vun Zäit zu Zäit maachen mir eise Bäitrag zu der Entwécklung vun upstream. Dës Iwwersetzung kombinéiert 7 Notizen aus dem offiziellen Helm Blog, déi fir déi éischt Alpha Verëffentlechung vum Helm 3 gewidmet sinn a schwätzen iwwer d'Geschicht vum Projet an d'Haaptmerkmale vum Helm 3. Hiren Auteur ass de Matt "bacongobbler" Fisher, e Microsoft Mataarbechter an ee vun de Schlëssel Ënnerhalter vun Helm.

De 15. Oktober 2015 ass de Projet elo bekannt als Helm gebuer. Just e Joer no senger Grënnung ass d'Helm Gemeinschaft u Kubernetes ugeschloss, wärend se aktiv un Helm 2 geschafft hunn. Am Juni 2018 huet Helm der CNCF ugeschloss als Entwécklungs- (Inkubatiouns-) Projet. Schnell no vir bis haut, an déi éischt Alpha Verëffentlechung vum neien Helm 3 ass ënnerwee. (dës Verëffentlechung schonn stattfonnt huet Mëtt Mee - ca. Iwwersetzung).

An dësem Stéck wäert ech schwätzen iwwer wou et alles ugefaang huet, wéi mir ukomm sinn wou mir haut sinn, e puer vun den eenzegaartegen Features, déi an der éischter Alpha Verëffentlechung vum Helm 3 verfügbar sinn, virstellen an erkläre wéi mir viru plangen.

Zesummefaassung:

  • d'Geschicht vun der Schafung vun Helm;
  • en zaarten Äddi dem Tiller;
  • Chart Repositories;
  • Fräisetzung Gestioun;
  • Ännerungen an Diagramm Ofhängegkeeten;
  • Bibliothéik Charts;
  • wat ass nächst?

D'Geschicht vun Helm

D'Gebuert vu

Helm 1 huet ugefaang als Open Source Projet erstallt vum Deis. Mir waren e klenge Startup absorbéiert Microsoft am Fréijoer 2017. Eisen aneren Open Source Projet, och Deis genannt, hat en Tool deisctl, déi benotzt gouf (ënnert anerem) fir d'Deis Plattform ze installéieren an ze bedreiwen an Flott Cluster. Zu där Zäit war Fleet eng vun den éischte Container Orchestratiounsplattformen.

Mëtt 2015 hu mir decidéiert de Kurs z'änneren an Deis (deemools ëmbenannt Deis Workflow) vu Fleet op Kubernetes geplënnert. Ee vun deenen éischten, déi nei designt goufen, war d'Installatiounsinstrument. deisctl. Mir hunn et benotzt fir Deis Workflow am Fleet Cluster z'installéieren an ze verwalten.

Helm 1 gouf am Bild vu berühmte Packagemanager erstallt wéi Homebrew, apt a Yum. Säin Haaptziel war d'Aufgaben ze vereinfachen wéi d'Verpakung an d'Installatioun vun Uwendungen op Kubernetes. Helm gouf offiziell am 2015 op der KubeCon Konferenz zu San Francisco agefouert.

Eisen éischte Versuch mam Helm huet geschafft, awer et war net ouni e puer sérieux Aschränkungen. Hien huet e Set vu Kubernetes Manifestatiounen geholl, aromatiséiert mat Generatoren als Aféierungs-YAML Blocks (Front-Matière)*, an d'Resultater an Kubernetes gelueden.

* Note. iwwersat.: Vun der éischter Versioun vum Helm gouf YAML Syntax gewielt fir Kubernetes Ressourcen ze beschreiwen, an Jinja Templates a Python Skripte goufen ënnerstëtzt wann Dir Konfiguratiounen schreift. Mir hunn méi iwwer dëst an d'Struktur vun der éischter Versioun vum Helm am Allgemengen am Kapitel "A Brief History of Helm" geschriwwen. dëst Material.

Zum Beispill, fir e Feld an enger YAML-Datei ze ersetzen, musst Dir de folgende Konstrukt un de Manifest addéieren:

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

Et ass super datt Templatemotoren haut existéieren, oder?

Aus ville Grënn huet dëse fréie Kubernetes Installateur eng haart kodéiert Lëscht vu Manifestdateien erfuerdert an nëmmen eng kleng, fix Sequenz vun Eventer ausgefouert. Et war sou schwéier ze benotzen datt d'Deis Workflow R&D Team eng schwéier Zäit hat wéi se probéiert hunn hire Produkt op dës Plattform ze transferéieren - awer d'Somen vun der Iddi ware scho gesaat. Eisen éischte Versuch war eng super Léierméiglechkeet: mir hu gemierkt datt mir wierklech passionéierte wieren fir pragmatesch Tools ze kreéieren déi alldeeglech Probleemer fir eis Benotzer léisen.

Baséierend op d'Erfahrung vu fréiere Feeler, hu mir ugefaang Helm 2 z'entwéckelen.

Helm maachen 2

Enn 2015 huet d'Google Team eis kontaktéiert. Si hunn un engem ähnlechen Tool fir Kubernetes geschafft. Deployment Manager fir Kubernetes war en Hafen vun engem existente Tool dat fir Google Cloud Plattform benotzt gouf. "Géife mir gären", hu si gefrot, "e puer Deeg ze verbréngen fir d'Ähnlechkeeten an d'Ënnerscheeder ze diskutéieren?"

Am Januar 2016 hunn d'Helm an d'Deployment Manager Teams zu Seattle getraff fir Iddien auszetauschen. D'Verhandlunge si mat engem ambitiéise Plang ofgeschloss: déi zwee Projeten ze kombinéieren fir Helm 2. Zesumme mat Deis a Google hunn d'Jongen aus SkippBox (elo Deel vun Bitnami - ongeféier Iwwersetzung), a mir hunn ugefaang um Helm 2 ze schaffen.

Mir wollten dem Helm seng einfach Benotzung behalen, awer füügt déi folgend:

  • Diagramm Templates fir Personnalisatioun;
  • Intra-Cluster Management fir Teams;
  • Weltklass Chart Repository;
  • stabil Package Format mat Ënnerschrëft Optioun;
  • e staarkt Engagement fir semantesch Versiounen an Erhalen vun Réckkompatibilitéit tëscht Versiounen.

Fir dës Ziler z'erreechen, gouf en zweet Element zum Helm-Ökosystem bäigefüügt. Dësen Intra-Cluster-Komponent gouf Tiller genannt a war verantwortlech fir d'Installatioun vun Helm Charts an d'Gestioun vun hinnen.

Zënter der Verëffentlechung vum Helm 2 am 2016 huet Kubernetes e puer grouss Innovatiounen bäigefüügt. Roll-baséiert Zougangskontroll dobäigesat (RBAC), déi schliisslech Attribut-Based Access Control (ABAC) ersat huet. Nei Ressourcentypen goufen agefouert (Deployments war deemools nach an der Beta). Benotzerdefinéiert Ressource Definitiounen (ursprénglech genannt Drëtte Partei Ressourcen oder TPRs) goufen erfonnt. A virun allem ass eng Rei vu beschten Praktiken entstanen.

Am Zesummenhang mat all dësen Ännerungen huet Helm weider Kubernetes Benotzer trei ze déngen. No dräi Joer a villen neien Ergänzunge war et kloer datt et Zäit war fir bedeitend Ännerunge vun der Codebase ze maachen fir sécherzestellen datt den Helm weiderhin déi wuessend Bedierfnesser vun engem evoluéierende Ökosystem gerecht ka ginn.

En zaart Äddi dem Tiller

Wärend der Entwécklung vum Helm 2 hu mir Tiller als Deel vun eiser Integratioun mam Google Deployment Manager agefouert. Tiller huet eng wichteg Roll gespillt fir Teams, déi an engem gemeinsame Cluster schaffen: et huet verschidde Spezialisten erlaabt, déi d'Infrastruktur operéieren, mat deemselwechte Set vu Verëffentlechungen ze interagéieren.

Zënter Roll-baséiert Zougangskontroll (RBAC) par défaut a Kubernetes 1.6 aktivéiert gouf, gouf d'Aarbecht mat Tiller an der Produktioun méi schwéier. Wéinst der grousser Zuel vu méigleche Sécherheetspolitike war eis Positioun eng permissiv Konfiguratioun als Standard ze bidden. Dëst huet Newbies erlaabt mat Helm a Kubernetes ze experimentéieren ouni fir d'éischt a Sécherheetsastellungen ze dauchen. Leider konnt dës Erlaabniskonfiguratioun dem Benotzer eng ze breet Palette vun Permissiounen ginn, déi se net gebraucht hunn. DevOps an SRE Ingenieuren hu missen zousätzlech operationell Schrëtt léieren wann Dir Tiller an engem Multi-Tenant Cluster installéiert.

Nodeems mir geléiert hunn wéi d'Gemeinschaft Helm a spezifesche Situatiounen benotzt huet, hu mir gemierkt datt dem Tiller säi Verëffentlechungsmanagementsystem net op en Intra-Cluster-Komponent muss vertrauen fir de Staat z'erhalen oder als zentrale Hub fir Verëffentlechungsinformatioun ze funktionéieren. Amplaz kënne mir einfach Informatioun vum Kubernetes API Server kréien, en Diagramm op der Client Säit generéieren an e Rekord vun der Installatioun op Kubernetes späicheren.

Dem Tiller säin Haaptziel wier ouni Tiller erreecht ginn, also war eng vun eisen éischten Decisioune betreffend Helm 3 den Tiller komplett opzeginn.

Mam Tiller fort ass dem Helm säi Sécherheetsmodell radikal vereinfacht ginn. Helm 3 ënnerstëtzt elo all modern Sécherheets-, Identitéits- an Autorisatiounsmethoden vun aktuellen Kubernetes. Helm Permissiounen ginn bestëmmt benotzt kubeconfig Datei. Cluster Administrateuren kënnen d'Benotzerrechter op all Niveau vu Granularitéit beschränken. Verëffentlechunge ginn nach ëmmer am Cluster gespäichert, an de Rescht vun der Helm Funktionalitéit bleift intakt.

Chart Repositories

Op engem héijen Niveau ass e Chartrepository eng Plaz wou Charts kënne gespäichert a gedeelt ginn. Den Helm Client packt a schéckt d'Charts an de Repository. Einfach gesot, e Charts Repository ass e primitive HTTP Server mat enger index.yaml Datei an e puer verpackte Charts.

Och wann et e puer Virdeeler fir d'Charts Repository API entsprécht déi meescht Basislagerungsfuerderunge, ginn et och e puer Nodeeler:

  • Chart Repositories sinn net kompatibel mat de meeschte Sécherheetsimplementatiounen, déi an engem Produktiounsëmfeld erfuerderlech sinn. Eng Standard API fir Authentifikatioun an Autorisatioun ze hunn ass extrem wichteg a Produktiounsszenarien.
  • Helm's Chart Provenance Tools, benotzt fir z'ënnerschreiwen, d'Integritéit an d'Provenenz vun enger Chart z'iwwerpréiwen, sinn en optionalen Deel vum Chart Verëffentlechungsprozess.
  • A Multi-Benotzer Szenarie kann déiselwecht Diagramm vun engem anere Benotzer eropgeluede ginn, sou datt d'Quantitéit u Plaz verduebelt fir deeselwechten Inhalt ze späicheren. Méi intelligent Repositories goufen entwéckelt fir dëse Problem ze léisen, awer si sinn net Deel vun der formeller Spezifizéierung.
  • Mat enger eenzeger Indexdatei fir ze sichen, Metadaten ze späicheren an Charts z'erhalen huet et schwéier gemaach sécher Multi-User Implementatiounen z'entwéckelen.

De Projet Docker Verdeelung (och bekannt als Docker Registry v2) ass den Nofolger vum Docker Registry an handelt am Wesentlechen als Set vun Tools fir Verpakung, Versand, Lagerung a Liwwerung Docker Biller. Vill grouss Cloud Servicer bidden Distributioun-baséiert Produkter. Dank dëser verstäerkter Opmierksamkeet huet de Verdeelungsprojet vu Joere vu Verbesserunge profitéiert, Sécherheetsbestëmmegkeeten, a Feldprüfungen, déi et zu engem vun den erfollegräichsten ongesonge Helden vun der Open Source Welt gemaach hunn.

Awer wousst Dir datt de Distribution Project entwéckelt gouf fir all Form vun Inhalt ze verdeelen, net nëmmen Container Biller?

Dank den Efforten Open Container Initiative (oder OCI), Helm Charts kënnen op all Verdeelungsinstanz plazéiert ginn. Fir de Moment ass dëse Prozess experimentell. Login Ënnerstëtzung an aner Funktiounen néideg fir e vollen Helm 3 sinn eng Aarbecht am Fortschrëtt, awer mir si begeeschtert vun den Entdeckungen ze léieren, déi d'OCI an d'Verdeelungsteams iwwer d'Jore gemaach hunn. An duerch hir Mentorschaft a Leedung léiere mir wéi et ass en héich verfügbare Service op Skala ze bedreiwen.

Eng méi detailléiert Beschreiwung vun e puer zukünfteg Ännerungen un den Helm Chart Repositories ass verfügbar Link.

Fräisetzung Gestioun

Am Helm 3 gëtt d'Applikatiounszoustand am Stärekoup duerch e Paar Objekter verfollegt:

  • Fräisetzung Objet - stellt eng Applikatioun Instanz;
  • Verëffentlechungsversioun geheim - representéiert de gewënschten Zoustand vun der Applikatioun op engem spezifesche Punkt an der Zäit (zum Beispill d'Verëffentlechung vun enger neier Versioun).

Rufft helm install schaaft e Fräisetzung Objet an Fräisetzung Versioun geheime. Call helm upgrade erfuerdert e Verëffentlechungsobjekt (deen et ka änneren) a erstellt eng nei Verëffentlechungsversioun Geheimnis déi nei Wäerter an e preparéierte Manifest enthält.

Verëffentlechungsobjekt enthält Informatioun iwwer d'Verëffentlechung, wou Verëffentlechung eng spezifesch Installatioun vun engem genannten Diagramm a Wäerter ass. Dësen Objet beschreift den Top-Level Metadaten iwwer d'Verëffentlechung. De Verëffentlechungsobjekt bestoe während dem Liewenszyklus vun der Applikatioun an ass de Besëtzer vun all Verëffentlechungsversiounsgeheimnisser, souwéi all Objeten déi direkt vum Helm Chart erstallt ginn.

Verëffentlechungsversioun geheim ass eng Verëffentlechung mat enger Serie vu Versiounen (Installatioun, Aktualiséierungen, Rollbacks, Läschen).

Am Helm 2 waren d'Revisiounen extrem konsequent. Call helm install erstallt v1, de spéideren Update (Upgrade) - v2, a sou weider. Verëffentlechungs- a Verëffentlechungsgeheimnis goufen an engem eenzegen Objet zesummegeklappt, bekannt als Revisioun. Revisiounen goufen am selwechte Nummraum wéi Tiller gespäichert, wat bedeit datt all Verëffentlechung "global" war wat den Nummraum ugeet; als Resultat, nëmmen eng Instanz vum Numm kéint benotzt ginn.

Am Helm 3 ass all Verëffentlechung mat engem oder méi Verëffentlechungsgeheimnisser verbonnen. De Verëffentlechungsobjekt beschreift ëmmer déi aktuell Verëffentlechung op Kubernetes ofgesat. All Verëffentlechungsversioun Geheimnis beschreift nëmmen eng Versioun vun där Verëffentlechung. En Upgrade, zum Beispill, wäert eng nei Verëffentlechungsversioun Geheimnis erstellen an dann de Verëffentlechungsobjekt änneren fir op déi nei Versioun ze weisen. Am Fall vun enger Rollback kënnt Dir d'Geheimnisser vun der fréierer Verëffentlechung Versioun benotzen fir d'Verëffentlechung an e fréiere Staat zréckzekréien.

Nodeems den Tiller opginn ass, späichert Helm 3 Verëffentlechungsdaten am selwechte Nummraum wéi d'Verëffentlechung. Dës Ännerung erlaabt Iech en Diagramm mam selwechte Verëffentlechungsnumm an engem anere Nummraum z'installéieren, an d'Donnéeën ginn tëscht Clusterupdates / Neistarten an etcd gespäichert. Zum Beispill kënnt Dir WordPress am "foo" Nummraum installéieren an dann am "Bar" Nummraum, a béid Verëffentlechungen kënnen "wordpress" genannt ginn.

Ännerungen ze Diagramm Ofhängegkeeten

Charts gepackt (benotzt helm package) fir d'Benotzung mat Helm 2 ka mat Helm 3 installéiert ginn, awer de Grafikentwécklungs-Workflow gouf komplett iwwerschafft, sou datt e puer Ännerungen musse gemaach ginn fir d'Diagrammentwécklung mat Helm 3 weiderzemaachen.

Den Ofhängegkeetsmanagementsystem vun der Grafik ass geplënnert requirements.yaml и requirements.lock op Chart.yaml и Chart.lock. Dëst bedeit datt d'Charts déi de Kommando benotzt hunn helm dependency, erfuerdert e puer Setup fir am Helm 3 ze schaffen.

Loosst eis e Beispill kucken. Loosst eis eng Ofhängegkeet un d'Diagramm am Helm 2 addéieren a kucken wat ännert wann Dir op Helm 3 plënnert.

Am Helm 2 requirements.yaml huet esou ausgesinn:

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

Am Helm 3 wäert déi selwecht Ofhängegkeet an Ärer spigelt ginn Chart.yaml:

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

Charts ginn nach ëmmer erofgelueden an am Verzeechnes gesat charts/, sou subcharts (subcharts), am Katalog leien charts/, wäert ouni Ännerungen weider schaffen.

Aféierung Bibliothéik Charts

Helm 3 ënnerstëtzt eng Klass vun Charts genannt Bibliothéik Charts (Bibliothéik Chart). Dës Diagramm gëtt vun aneren Charts benotzt, awer erstellt keng Verëffentlechungsartefakter eleng. Bibliothéik Chart Templates kënnen nëmmen Elementer deklaréieren define. Aneren Inhalt gëtt einfach ignoréiert. Dëst erlaabt d'Benotzer nei ze benotzen an ze deelen Code Snippets déi iwwer verschidde Charts benotzt kënne ginn, doduerch Duplikatioun ze vermeiden an dem Prinzip ze halen dréchnen.

Bibliothéik Charts sinn an der Rubrik deklaréiert dependencies am Fichier Chart.yaml. Installéieren a managen se ass net anescht wéi aner Charts.

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

Mir si begeeschtert iwwer d'Benotzungsfäll déi dës Komponent fir Diagrammentwéckler opmaacht, souwéi déi bescht Praktiken déi aus Bibliothéik Charts entstoe kënnen.

Wat d'nächst?

Helm 3.0.0-alpha.1 ass d'Fundament op där mir ufänken eng nei Versioun vum Helm ze bauen. Am Artikel hunn ech e puer interessant Features vum Helm beschriwwen 3. Vill vun hinnen sinn nach ëmmer an de fréie Stadien vun der Entwécklung an dat ass normal; De Punkt vun enger Alpha Verëffentlechung ass d'Iddi ze testen, Feedback vu fréie Benotzer ze sammelen an eis Viraussetzungen ze bestätegen.

Soubal d'Alpha Versioun verëffentlecht ass (erënnert datt dëst ass ass scho geschitt — ca. Iwwersetzung), Mir fänken u Patches fir Helm 3 aus der Gemeinschaft unzehuelen. Dir musst e staarke Fundament erstellen, deen et erlaabt nei Funktionalitéit z'entwéckelen an ze adoptéieren, a fir d'Benotzer sech un de Prozess involvéiert ze fillen andeems Dir Ticketen opmaacht an Fixe mécht.

Ech hu probéiert e puer vun de grousse Verbesserungen op Helm 3 ze markéieren, awer dës Lëscht ass op kee Fall ustrengend. Déi voll Fahrplang fir Helm 3 enthält Features wéi verbessert Updatestrategien, méi déif Integratioun mat OCI Registrieren, an d'Benotzung vu JSON Schemaen fir Diagrammwäerter ze validéieren. Mir plangen och d'Codebase ze botzen an Deeler dovun z'aktualiséieren, déi fir déi lescht dräi Joer vernoléissegt goufen.

Wann Dir d'Gefill hutt, datt mir eppes verpasst hunn, héiere mir Är Gedanken!

Maacht mat bei der Diskussioun op eisem Slack Channels:

  • #helm-users fir Froen an einfach Kommunikatioun mat der Communautéit;
  • #helm-dev ze diskutéieren Pull Ufroen, Code an Käfere.

Dir kënnt och an eisem wëchentlechen Ëffentlechen Entwéckler Uruff en Donneschdeg um 19:30 MSK chatten. Versammlungen sinn gewidmet fir Themen ze diskutéieren, un déi Schlësselentwéckler an d'Gemeinschaft schaffen, souwéi Themen vun der Woch. Jidderee ka matmaachen an un der Versammlung deelhuelen. Link verfügbar am Slack Kanal #helm-dev.

PS vum Iwwersetzer

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire