Ass et einfach a praktesch e Kubernetes Cluster ze preparéieren? Annoncéieren Addon-Operateur

Ass et einfach a praktesch e Kubernetes Cluster ze preparéieren? Annoncéieren Addon-Operateur

Nach Shell-Operateur mir presentéieren säin ale Brudder - addon-Operateur. Dëst ass en Open Source Projet dee benotzt gëtt fir Systemkomponenten an e Kubernetes Cluster z'installéieren, deen Add-ons genannt kënne ginn.

Firwat iwwerhaapt Ergänzunge?

Et ass kee Geheimnis datt Kubernetes kee fäerdegen All-in-One Produkt ass, a fir en "erwuessene" Cluster ze bauen brauch Dir verschidde Ergänzunge. Addon-Operateur hëlleft Iech dës Add-ons um neiste Stand ze installéieren, ze konfiguréieren an ze halen.

De Besoin fir zousätzlech Komponenten am Stärekoup gëtt an berichten Kollegen driusha. Kuerz gesot, d'Situatioun mat Kubernetes am Moment ass sou datt fir eng einfach "Spill ronderëm" Installatioun kënnt Dir mat de Komponenten aus der Këscht kommen, fir Entwéckler an Tester kënnt Dir Ingress addéieren, awer fir eng voll Installatioun, iwwer déi Dir kënnt soen "Är Produktioun ass prett", Dir musst mat enger Dose verschidden Add-ons derbäisetzen: eppes fir ze iwwerwaachen, eppes fir ze protokolléieren, vergiesst net d'Ingress an d'Zertifizéierungsmanager, wielt Gruppen vun Noden, addéiere Netzwierkpolitik, Saison mat sysctl a Pod Autoscaler Astellunge ...

Ass et einfach a praktesch e Kubernetes Cluster ze preparéieren? Annoncéieren Addon-Operateur

Wat sinn d'Spezifizitéiten fir mat hinnen ze schaffen?

Wéi d'Praxis weist, ass d'Saach net op eng Installatioun limitéiert. Fir bequem mam Cluster ze schaffen, mussen Add-ons aktualiséiert ginn, behënnert (aus dem Cluster geläscht), an Dir wëllt e puer testen ier Dir se am Produktiounscluster installéiert.

Also, vläicht ass Ansible hei genuch? Vläicht. Mee Am Allgemengen, vollwäerteg Add-ons liewen net ouni Astellungen. Dës Astellunge kënnen ofhängeg vun der Clustervariant ënnerscheeden (aws, gce, azur, bare-metal, do, ...). E puer Astellunge kënnen net am Viraus spezifizéiert ginn; Si mussen aus dem Cluster kritt ginn. An de Stärekoup ass net statesch: fir e puer Astellunge musst Dir Ännerungen iwwerwaachen. An hei feelt schonn Ansible: Dir braucht e Programm, deen an engem Cluster lieft, d.h. Kubernetes Bedreiwer.

Déi, déi et op der Aarbecht probéiert hunn Shell-Operateur, wäerte se soen datt d'Aufgaben fir d'Installatioun an d'Aktualiséierung vun Add-ons an Iwwerwaachungsastellunge komplett geléist kënne ginn Haken fir Shell-Bedreiwer. Dir kënnt e Skript schreiwen, deen eng Konditioun mécht kubectl apply a Monitor, zum Beispill, ConfigMap, wou d'Astellunge gespäichert ginn. Dëst ass ongeféier dat wat am Addon-Bedreiwer implementéiert gëtt.

Wéi ass dëst am Addon-Operateur organiséiert?

Wann Dir eng nei Léisung erstallt, hu mir vun de folgende Prinzipien ausgaang:

  • Den Add-on Installateur muss ënnerstëtzen Schabloun an deklarativ Konfiguratioun. Mir maachen keng magesch Scripten déi Add-ons installéieren. Addon-Operateur benotzt Helm fir Addons z'installéieren. Fir ze installéieren, musst Dir en Diagramm erstellen a wielt d'Wäerter déi fir d'Konfiguratioun benotzt ginn.
  • Astellunge kënne sinn generéieren op Installatioun, si kënne sinn aus Cluster kréien, oder kréien Updates, Iwwerwachung Cluster Ressourcen. Dës Operatioune kënne mat Haken ëmgesat ginn.
  • Astellunge kënne sinn späicheren an engem Cluster. Fir Astellungen am Cluster ze späicheren, gëtt e ConfigMap/addon-Operateur erstallt an den Addon-Operator iwwerwaacht d'Ännerunge vun dëser ConfigMap. Addon-Bedreiwer gëtt Haken Zougang zu Astellunge mat einfache Konventioune.
  • Zousatz hänkt vun Astellungen of. Wann d'Astellunge geännert hunn, da rullt den Addon-Bedreiwer den Helm-Chart mat neie Wäerter aus. Mir hunn d'Kombinatioun vun der Helm Chart genannt, Wäerter dofir an Haken e Modul (kuckt hei ënnen fir méi Detailer).
  • Inszenéierung. Et gi keng magesch Fräisetzung Scripten. Den Updatemechanismus ass ähnlech wéi eng regulär Applikatioun - sammelt Add-ons an Addon-Operateuren an e Bild, markéiert se a rullt se aus.
  • Resultat Kontroll. Addon-Bedreiwer kann Metriken fir Prometheus ubidden.

Wat ass Padding am Addon-Bedreiwer?

En Zousatz kann alles ugesi ginn, wat nei Funktiounen zum Stärekoup bäidréit. Zum Beispill, Installatioun vun Ingress ass e super Beispill vun engem Add-on. Dëst kann all Bedreiwer oder Controller mat sengem eegene CRD sinn: Prometheus-Operateur, Certificat-Manager, Kube-Controller-Manager, etc. Oder eppes Klenges, awer méi einfach ze benotzen - zum Beispill geheime Copier, deen Registry Geheimnisser op nei Nummraim kopéiert, oder sysctl Tuner, deen sysctl Parameteren op nei Wirbelen konfiguréiert.

Fir Add-ons ëmzesetzen, bitt Addon-Operator verschidde Konzepter:

  • Helm Chart benotzt fir verschidde Software an de Stärekoup z'installéieren - zum Beispill Prometheus, Grafana, nginx-ingress. Wann déi erfuerderlech Komponent e Helm-Diagramm huet, da gëtt se mat Addon-Bedreiwer z'installéieren ganz einfach.
  • Wäerter Stockage. Helm Charts hunn normalerweis vill verschidden Astellungen déi mat der Zäit änneren kënnen. Addon-Operateur ënnerstëtzt d'Späichere vun dësen Astellungen a kann hir Ännerungen iwwerwaachen fir d'Helm Chart mat neie Wäerter nei z'installéieren.
  • Haken sinn ausführbar Dateien déi den Addon-Bedreiwer op Eventer leeft an déi Zougang zum Wäertergeschäft hunn. Den Hook kann Ännerungen am Cluster iwwerwaachen an d'Wäerter am Wäertergeschäft aktualiséieren. Déi. Mat Hëllef vun Haken, kënnt Dir Entdeckung maachen fir Wäerter aus dem Cluster beim Start oder no engem Zäitplang ze sammelen, oder Dir kënnt kontinuéierlech Entdeckung maachen, Wäerter aus dem Cluster sammelen baséiert op Ännerungen am Cluster.
  • Modul ass eng Kombinatioun vun engem Helm Chart, engem Wäertgeschäft an Haken. Moduler kënnen aktivéiert oder behënnert ginn. E Modul auszeschalten heescht all Helm Chart Releases ze läschen. Moduler kënne sech dynamesch aktivéieren, zum Beispill, wann all d'Moduler déi se brauche aktivéiert sinn oder wann d'Entdeckung déi néideg Parameteren an den Haken fonnt huet - dëst gëtt mat engem Hëllefsaktivéierten Skript gemaach.
  • Global Haken. Dëst sinn Haken "eleng", si sinn net a Moduler abegraff an hunn Zougang zu engem globale Wäertgeschäft, d'Wäerter vun deenen fir all Haken a Moduler verfügbar sinn.

Wéi funktionnéieren dës Deeler zesummen? Loosst eis d'Bild aus der Dokumentatioun kucken:

Ass et einfach a praktesch e Kubernetes Cluster ze preparéieren? Annoncéieren Addon-Operateur

Et ginn zwee Aarbechtsszenarien:

  1. De globale Hook gëtt vun engem Event ausgeléist - zum Beispill, wann eng Ressource am Cluster ännert. Dësen Hook veraarbecht d'Ännerungen a schreift déi nei Wäerter an de globale Wäertergeschäft. Addon-Operateur bemierkt datt d'global Späichere geännert huet a fänkt all Moduler un. All Modul, mat hiren Haken, bestëmmt ob et muss aktivéiert ginn an aktualiséiert seng Wäertergeschäft. Wann de Modul aktivéiert ass, fänkt den Addon-Bedreiwer d'Installatioun vun der Helm Chart un. An dësem Fall huet d'Helm Chart Zougang zu Wäerter aus der Modullagerung an aus der globaler Späichere.
  2. Den zweeten Szenario ass méi einfach: e Modulhaken gëtt vun engem Event ausgeléist an ännert Wäerter am Modul Wäertergeschäft. Addon-Operateur bemierkt dëst a lancéiert d'Helm Chart mat aktualiséierte Wäerter.

D'Zousatz kann als een eenzegen Haken ëmgesat ginn, oder als een Helm Chart, oder souguer als e puer ofhängeg Moduler - dëst hänkt vun der Komplexitéit vun der Komponent of, déi am Stärekoup installéiert ass, an vum gewënschten Niveau vun der Konfiguratiounsflexibilitéit. Zum Beispill, am Repository (/Beispiller) et gëtt e sysctl-Tuner Add-on, deen souwuel als einfache Modul mat engem Haken an engem Helm-Diagramm ëmgesat gëtt, wéi och de Wäertergeschäft benotzt, wat et méiglech mécht Astellungen ze addéieren andeems Dir ConfigMap ännert.

Liwwerung vun Aktualiséierungen

E puer Wierder iwwer d'Organisatioun vun Komponentupdates déi den Addon-Bedreiwer installéiert.

Fir Addon-Bedreiwer an engem Cluster ze lafen, braucht Dir bauen e Bild mat Ergänzunge a Form vun Haken an Helm Chart Dateien, füügt eng binär Datei derbäi addon-operator an alles wat Dir braucht fir Haken: bash, kubectl, jq, python etc. Da kann dëst Bild an de Cluster als eng regulär Applikatioun ausgerullt ginn, a wahrscheinlech wëllt Dir een oder aneren Tagging Schema organiséieren. Wann et wéineg Cluster sinn, kann déiselwecht Approche wéi mat Applikatiounen passend sinn: nei Verëffentlechung, nei Versioun, gitt op all Cluster a korrigéiert d'Bild vun de Pods. Wéi och ëmmer, am Fall vun enger Rollout op eng bedeitend Unzuel vu Cluster, war d'Konzept vum Selbstaktualiséierung vun engem Kanal méi gëeegent fir eis.

Hei ass wéi mir et maachen:

  • E Kanal ass wesentlech en Identifizéierer deen op alles gesat ka ginn (zum Beispill Dev / Stage / ea / stabil).
  • De Kanalnumm ass de Bildtag. Wann Dir Updates op e Kanal ausrollen musst, gëtt en neit Bild zesummegesat a mam Kanalnumm markéiert.
  • Wann en neit Bild am Registry erscheint, gëtt den Addon-Bedreiwer nei gestart a mam neie Bild gestart.

Dëst ass net bescht Praxis, wéi geschriwwen an Kubernetes Dokumentatioun. Et ass net recommandéiert dëst ze maachen, awer mir schwätzen iwwer eng regulär Applikatioun déi am selwechte Cluster lieft. Am Fall vum Addon-Operateur ass eng Applikatioun vill Deployments, déi iwwer Cluster verspreet sinn, a Selbstaktualiséierung hëlleft vill a mécht d'Liewen méi einfach.

Channels hëllefen an am Test: wann et e Hëllefscluster gëtt, kënnt Dir et op de Kanal konfiguréieren stage a rullt d'Aktualiséierungen dran ier se op d'Kanäl rullt ea и stable. Wann mat engem Stärekoup op de Kanal ea e Feeler geschitt ass, Dir kënnt et schalt op stable, während de Problem mat dësem Cluster ënnersicht gëtt. Wann de Stärekoup aus der aktiver Ënnerstëtzung erausgeholl gëtt, wiesselt en op säin "gefruerene" Kanal - zum Beispill, freeze-2019-03-20.

Zousätzlech fir Haken an Helm Charts ze aktualiséieren, musst Dir vläicht update an drëtt Partei Komponent. Zum Beispill, Dir hutt e Feeler am bedingten Node-Exporter gemierkt an hu souguer erausfonnt wéi Dir et patchéiert. Als nächst hutt Dir de PR opgemaach a waart op déi nei Verëffentlechung fir duerch all d'Cluster ze goen an d'Versioun vum Bild ze vergréisseren. Fir net onbestëmmt ze waarden, kënnt Dir Ären Node-Exporter bauen an dorop wiesselen ier Dir de PR akzeptéiert.

Am Allgemengen kann dëst ouni Addon-Operator gemaach ginn, awer mam Addon-Operator ass de Modul fir den Node-Exporter z'installéieren an engem Repository siichtbar, d'Dockerfile fir Äert Bild ze bauen kann direkt do gehale ginn, et gëtt méi einfach fir all Participanten an de Prozess fir ze verstoen wat geschitt ... A wann et e puer Stärekéip gëtt, da gëtt et méi einfach Äre PR ze testen an eng nei Versioun auszerollen!

Dës Organisatioun vun der Komponentaktualiséierung funktionnéiert fir eis erfollegräich, awer all aner passend Schema kann ëmgesat ginn - no all an dësem Fall ass den Addon-Operator eng einfach binär Datei.

Konklusioun

D'Prinzipien, déi am Addon-Operateur implementéiert sinn, erlaaben Iech en transparente Prozess ze bauen fir d'Erstelle, Testen, Installéieren an Aktualiséierung vun Add-ons an engem Cluster, ähnlech wéi d'Entwécklungsprozesser vu reguläre Applikatiounen.

Add-ons fir Addon-Bedreiwer am Modulformat (Helmdiagram + Haken) kënnen ëffentlech verfügbar gemaach ginn. Mir, der Firma Flant, plangen eis Entwécklungen a Form vun esou Ergänzunge am Summer ze publizéieren. Maacht mat Entwécklung op GitHub (Shell-Operateur, addon-Operateur), probéiert Är eegen Zousatz ze maachen baséiert op Beispiller и Dokumentatioun, waart op Neiegkeeten iwwer Habré an op eisem YouTube Kanal!

PS

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire