Is it maklik en handich om in Kubernetes-kluster te meitsjen? Addon-operator oankundigje

Is it maklik en handich om in Kubernetes-kluster te meitsjen? Addon-operator oankundigje

Nei shell-operator wy fertsjintwurdigje syn âldere broer - addon operator. Dit is in Open Source-projekt dat wurdt brûkt om systeemkomponinten te ynstallearjen yn in Kubernetes-kluster, dat kin wurde neamd yn in gewoan wurd - add-ons.

Wêrom überhaupt tafoegings tafoegje?

It is gjin geheime dat Kubernetes gjin klear makke alles-yn-ien produkt is, en ferskate tafoegings sille nedich wêze om in "folwoeksen" kluster te bouwen. De addon-operator sil jo helpe om dizze tafoegings te ynstallearjen, konfigurearje en bywurke te hâlden.

De needsaak foar ekstra komponinten yn in kluster wurdt behannele melde Kollega's driusha. Koartsein, de situaasje mei Kubernetes op it stuit is sa dat foar in ienfâldige "spylje om" ynstallaasje, kinne jo krije troch mei de komponinten út 'e doaze, foar ûntwikkelders en testen, kinne jo tafoegje Ingress, mar foar in folweardich ynstallaasje, dy't jo kinne sizze "jo produksje is klear", moatte jo tafoegje mei in tsiental ferskillende tafoegings: wat foar tafersjoch, wat foar logs, ferjit net yngong en cert-manager, selektearje groepen knooppunten, foegje netwurkbelied ta, Spice up sysctl en pod autoscaler ynstellings ...

Is it maklik en handich om in Kubernetes-kluster te meitsjen? Addon-operator oankundigje

Wat binne de spesifiken fan it wurkjen mei har?

As praktyk docht bliken, is de saak net beheind ta ien ynstallaasje. Foar noflik wurk mei it kluster moatte tafoegings bywurke wurde, útskeakele (ferwidere fan it kluster), en jo wolle wat testen foardat jo it yn it produksjekluster ynstallearje.

Dus, miskien is Ansible hjir genôch? Miskien. Mar Folsleine tafoegings yn it algemiene gefal libje net sûnder ynstellings. Dizze ynstellingen kinne ferskille ôfhinklik fan de klusterfariant (aws, gce, azure, bare-metal, do, ...). Guon ynstellingen kinne net foarôf ynsteld wurde - se moatte wurde krigen fan it kluster. En it kluster is net statysk: foar guon ynstellingen moatte jo de wizigingen folgje. En hjir is Ansible net genôch: jo hawwe in programma nedich dat yn in kluster libbet, d.w.s. Kubernetes operator.

Dejingen dy't hawwe besocht shell-operator, sille se sizze dat de taken fan it ynstallearjen en bywurkjen fan tafoegings en tafersjochynstellingen folslein kinne wurde oplost mei heakjes foar shell operator. Jo kinne in skript skriuwe dat in betingst sil dwaan kubectl apply en folgje, bygelyks, ConfigMap, dêr't de ynstellings sille wurde opslein. Dit is sawat wat is ymplementearre yn 'e addon-operator.

Hoe is it organisearre yn addon-operator?

By it meitsjen fan in nije oplossing binne wy ​​útgien fan 'e folgjende prinsipes:

  • De ynstallearder foar tafoegings moat stypje sjabloanen en deklarative konfiguraasje. Wy meitsje gjin magyske skripts dy't tafoegings ynstallearje. De addon-operator brûkt Helm om tafoegings te ynstallearjen. Om te ynstallearjen, moatte jo in diagram oanmeitsje en de wearden selektearje dy't sille wurde brûkt foar konfiguraasje.
  • Ynstellings kinne generearje op ynstallaasje, se kinne krije út kluster, of ûntfange updateswylst it kontrolearjen fan klusterboarnen. Dizze operaasjes kinne wurde útfierd mei help fan heakjes.
  • Ynstellings kinne opslaan yn in kluster. Om ynstellings yn it kluster op te slaan, wurdt in ConfigMap/addon-operator makke en de Addon-operator kontrolearret wizigingen oan dizze ConfigMap. De addon-operator jout haken tagong ta ynstellings fia ienfâldige konvinsjes.
  • Tafoeging hinget ôf fan ynstellings. As de ynstellings binne feroare, dan rôlet Addon-operator in Helm-diagram út mei nije wearden. Wy neamden de kombinaasje fan 'e Helm-kaart, wearden dêrfoar, en haken in module (sjoch hjirûnder foar mear details).
  • Staging. D'r binne gjin magyske release-skripts. It fernijingsmeganisme is fergelykber mei in gewoane applikaasje - sammelje tafoegings en add-on-operator yn in ôfbylding, taggje en útrol.
  • Resultaat kontrôle. Addon-operator kin metriken weromjaan foar Prometheus.

Wat is de tafoeging yn addon-operator?

Alles dat nije funksjes tafoegje oan it kluster kin wurde beskôge as in tafoeging. Bygelyks, de Ingress-ynstallaasje is in geweldich foarbyld fan in add-on. Dit kin elke operator of controller wêze mei in eigen CRD: prometheus-operator, cert-manager, kube-controller-manager, ensfh. Of wat lyts, mar makliker te brûken, lykas in geheime kopieerder dy't registergeheimen kopiearret nei nije nammeromten, of in sysctl-tuner dy't sysctl-parameters op nije knopen ôfstimt.

Om tafoegings út te fieren, biedt Addon-operator ferskate konsepten:

  • Helm chart brûkt om ferskate software yn it kluster te ynstallearjen - bygelyks Prometheus, Grafana, nginx-ingress. As de winske komponint in Helm-diagram hat, dan sil it ynstallearjen mei de Addon-operator heul ienfâldich wêze.
  • wearden opslach. Helm charts hawwe meastentiids in protte ferskillende ynstellings dy't kinne feroarje oer de tiid. De addon-operator stipet it opslaan fan dizze ynstellingen en hâldt har wizigingen by om it Helm-diagram werom te setten mei de nije wearden.
  • Hooks binne útfierbere bestannen dy't de Addon-operator rint op eveneminten en dy't tagong krije ta de weardenwinkel. De heak kin sjen foar feroaringen yn it kluster en de wearden bywurkje yn 'e weardenwinkel. Dy. mei haken kinne jo ûntdekking dwaan om wearden te sammeljen fan it kluster by it opstarten of op in skema, of jo kinne trochgeande ûntdekking dwaan, wearden sammelje út it kluster basearre op feroaringen yn it kluster.
  • Module is in gearfoeging fan in Helm-diagram, wearden opslach, en haken. Modules kinne wurde yn- en útskeakele. It útskeakeljen fan in module is it wiskjen fan alle Helm-chart-releases. Modules kinne harsels dynamysk omfetsje, bygelyks as alle modules dy't it nedich binne ynskeakele binne of as ûntdekking de nedige parameters fûn yn heakjes - dit wurdt dien mei in auxiliary ynskeakele skript.
  • Global Hooks. Dit binne haken "op har eigen", se binne net opnommen yn modules en hawwe tagong ta de wrâldwide weardenwinkel, wêrfan de wearden beskikber binne foar alle haken yn modules.

Hoe wurkje dizze dielen gear? Tink oan de foto út 'e dokumintaasje:

Is it maklik en handich om in Kubernetes-kluster te meitsjen? Addon-operator oankundigje

D'r binne twa wurkscenario's:

  1. De globale hook wurdt oanlein troch in evenemint - bygelyks as in boarne yn it kluster feroaret. Dizze heak behannelet de wizigingen en skriuwt de nije wearden nei de globale weardenwinkel. De addon-operator merkt op dat de wrâldwide winkel is feroare en alle modules útfiert. Elke module brûkt syn haken om te bepalen as it moat wurde ynskeakele en fernijt syn wearden opslach. As de module ynskeakele is, dan begjint de Addon-operator de ynstallaasje fan it Helm-diagram. Tagelyk binne wearden fan 'e module-opslach en fan' e wrâldwide opslach beskikber foar it Helm-diagram.
  2. It twadde senario is ienfâldiger: de modulehaak wurdt trigger troch in evenemint, feroaret de wearden yn 'e weardenwinkel fan' e module. De addon-operator merkt dit op en lanseart in Helm-diagram mei bywurke wearden.

In tafoeging kin wurde ymplementearre as ien hook, of as in inkele Helm chart, of sels as meardere ôfhinklike modules - it hinget ôf fan 'e kompleksiteit fan' e komponint ynstalleare yn it kluster en op it winske nivo fan konfiguraasjefleksibiliteit. Bygelyks, yn 'e repository (/foarbylden) d'r is in add-on sysctl-tuner, dy't wurdt ymplementearre sawol as in ienfâldige module mei in heak en in Helm-chart, en mei help fan de wearden winkel, dat makket it mooglik om ta te foegjen ynstellings troch it bewurkjen fan de ConfigMap.

Levering fan updates

In pear wurden oer de organisaasje fan komponint-updates dy't de Addon-operator ynstalleart.

Om Addon-operator op in kluster út te fieren, moatte jo sammelje in ôfbylding mei tafoegings as hook triemmen en Helm charts, add in binêre triem addon-operator en alles wat jo nedich binne foar haken: bash, kubectl, jq, python ensfh. Fierder kin dizze ôfbylding wurde útrôle nei it kluster as in normale applikaasje, en wierskynlik wolle jo ien of oare taggingskema organisearje. As d'r in pear klusters binne, kin deselde oanpak as mei applikaasjes passend wêze: nije release, nije ferzje, gean troch alle klusters en reparearje it byld fan 'e Pods. Yn it gefal fan útrol nei in signifikant oantal klusters wie it konsept fan selsfernijing fan it kanaal lykwols mear geskikt foar ús.

Wy hawwe it sa ynsteld:

  • In kanaal is yn wêzen in identifier dat kin wurde ynsteld op alles (bygelyks, dev/stage/ea/stable).
  • De kanaalnamme is in ôfbyldingstag. As jo ​​​​updates nei in kanaal moatte útrolje, wurdt in nije ôfbylding boud en tagged mei de kanaalnamme.
  • As in nije ôfbylding ferskynt yn it register, start Addon-operator opnij en begjint mei de nije ôfbylding.

Dit is gjin bêste praktyk, lykas it is skreaun yn Kubernetes dokumintaasje. It is net oan te rieden om dit te dwaan, mar wy prate oer in normale applikaasje dy't libbet yn ien kluster. Yn it gefal fan Addon-operator is de applikaasje in protte ynset ferspraat oer klusters, en sels bywurkjen helpt in protte en makket it libben makliker.

Kanalen helpe en yn testen: as der in helpkluster is, kinne jo it ynstelle op in kanaal stage en rôlje updates deryn foardat jo útrolje nei kanalen ea и stable. As mei in kluster op it kanaal ea der is in flater bard, jo kinne it feroarje nei stablewylst it probleem mei dit kluster ûndersocht wurdt. As it kluster út aktive stipe wurdt helle, skeakelt it oer nei syn "beferzen" kanaal - bygelyks, freeze-2019-03-20.

Neist it aktualisearjen fan heakken en Helm-kaarten, moatte jo miskien moatte update en tredde partij komponint. Jo hawwe bygelyks in brek opmurken yn 'e betingsten knooppunt-eksporteur en hawwe sels útfûn hoe't jo it kinne patchje. Dan hawwe wy PR iepene en wachtsje op in nije release om troch alle klusters te gean en de ferzje fan 'e ôfbylding te fergrutsjen. Om net foar ûnbepaalde tiid te wachtsjen, kinne jo jo eigen knooppunt-eksporteur bouwe en dernei oerskeakelje foardat jo de PR akseptearje.

Yn 't algemien kin dit dien wurde sûnder de Addon-operator, mar mei de Addon-operator sil de module foar it ynstallearjen fan node-exporter sichtber wêze yn ien repository, jo kinne de Dockerfile hâlde om jo ôfbylding krekt dêr te bouwen, it wurdt makliker foar alle dielnimmers oan it proses om te begripen dat dat bart ... En as d'r ferskate klusters binne, wurdt it makliker om jo PR te testen en in nije ferzje út te rollen!

Dit komponint update organisaasje wurket mei súkses foar ús, mar eltse oare geskikt skema kin wurde útfierd - na yn dit gefal is addon-operator in ienfâldige binêre triem.

konklúzje

De prinsipes ymplementearre yn 'e Addon-operator kinne jo in transparant proses bouwe foar it meitsjen, testen, ynstallearjen en bywurkjen fan tafoegings yn in kluster, fergelykber mei de ûntwikkeling fan gewoane applikaasjes.

Addons foar Addon-operator yn it formaat fan modules (Helm-chart + heakjes) kinne iepenbier beskikber steld wurde. Wy, it bedriuw Flant, binne fan plan om yn de simmer ús ûntjouwings yn de foarm fan sokke oanfollingen te publisearjen. Doch mei oan de ûntwikkeling op GitHub (shell-operator, addon operator), besykje jo tafoeging te meitsjen basearre op foarbylden и dokumintaasje, wachtsje op nijs oer Habré en op ús YouTube kanaal!

PS

Lês ek op ús blog:

Boarne: www.habr.com

Add a comment