
JĂ€rgneb meie vanem vend â . See on Open Source projekt, mida kasutatakse Kubernetes klastrisse sĂŒsteemikomponentide paigaldamiseks, mida vĂ”ib ĂŒldiselt nimetada tĂ€iendusteks.
Miks on ĂŒldse vaja tĂ€iendusi?
Ei ole saladus, et Kubernetes ei ole valmis kĂ”ik-ĂŒhes toode ja 'tĂ€iskasvanud' klastrite ehitamiseks on vajalikud erinevad tĂ€iendused. Addon-operator aitab neid tĂ€iendusi paigaldada, konfigureerida ja hoida neid ajakohasena.
TĂ€iendavate komponentide vajadus klastris on selgitatud kolleegid . LĂŒhidalt öeldes, on hetkeolukord Kubernetes'es selline, et lihtsaks paigaldamiseks 'katsetamiseks' piisab vĂ€lja toodud komponentidest, arendamise ja testimise jaoks vĂ”ib lisada Ingress'i, kuid tĂ€ieliku paigaldamise jaoks, millest vĂ”ib öelda 'teie tootmine on valmis', on vajalik lisada peaaegu kĂŒmme erinevat tĂ€iendust: midagi jĂ€lgimiseks, midagi logide jaoks, mitte unustada ingress'i ja cert-manager'i, eraldada sĂ”lmede gruppe, lisada vĂ”rgupoliitikaid, lisada sysctl'i seadistusi ja pod autoscalerâŠ

Millised on nende tööspetsiifikad?
Kogemus nĂ€itab, et lihtsalt paigaldamine ei piisa. Klasteri mugavaks kasutamiseks tuleb tĂ€iendusi vĂ€rskendada, vĂ€lja lĂŒlitada (klastrist eemaldada) ja vĂ”ib-olla on soovitud neid testida enne tootmisklastrisse installimist.
Nii et, vĂ”ib-olla piisab sellest Ansible'st? VĂ”ib-olla. Kuid tĂ€ielikud tĂ€iendused ei toimi tavaliselt ilma seadistusteta. Need seadistused vĂ”ivad erineda sĂ”ltuvalt klastriversioonist (aws, gce, azure, bare-metal, do, âŠ). MĂ”ningaid seadistusi ei saa ette mÀÀrata â need tuleb klastrist hankida. Klaster ei ole staatiline: mĂ”ne seadistuse jaoks tuleb jĂ€lgida muudatusi. Ja siin ei piisa Ansible'st: on vajalik programm, mis elab klastris, st Kubernetes Operator.
Need, kes on proovinud tööl , ĂŒtlevad, et tĂ€ienduste paigaldamise ja vĂ€rskendamise ning seadistuste jĂ€lgimise ĂŒlesandeid saab ĂŒsna hĂ€sti lahendada shell-operatori abil. Saame kirjutada skripti, mis teeb tingimuslikku kubectl apply ja jĂ€lgib nĂ€iteks ConfigMap'i, kus hoitakse seadistusi. Umbes selline on ka addon-operator'i rakendamine.
Kuidas on see korraldatud addon-operator'is?
Uue lahenduse loomisel lÀhenesime me jÀrgmistele pÔhimÔtetele:
- TÀienduste paigaldaja peab toetama mallimist ja deklaratiivset konfiguratsiooni. Me ei tee vÔluvaid skripte, mis installivad lisaosasid. Addon-operator kasutab Helm'i lisaosade installimiseks. Installimiseks tuleb luua chart ja vÀlja tuua vÀÀrtused, mida kasutatakse seadistamiseks.
- Seadeid on vÔimalik genereerida installimise kÀigus, neid on vÔimalik saada klastrist, vÔi saada uuendusi, jÀlgides klastrite ressursse. Need toimingud on vÔimalikud lÀbi hook'ide.
- Seadeid on vÔimalik hoida klastris. Seadete hoidmiseks klastris luuakse ConfigMap/addon-operator ja Addon-operator jÀlgib selle ConfigMap'i muudatusi. Addon-operator vÔimaldab hook'idel seada seadetele lihtsate kokkulepete kaudu juurdepÀÀsu.
- Lisaosa sĂ”ltub seadistustest. Kui seadeid muudetakse, siis Addon-operator vĂ€ljastab Helm'i chart'i uute vÀÀrtustega. Helm'i chart'i, vÀÀrtuste ja hook'ide ĂŒhendamist oleme nimetanud mooduliks (lisainfot vt allpool).
- Etappide loomine. Pole vĂ”luvaid vĂ€ljaandmis-skripte. Uuenduste mehhanism on sarnane tavalise rakendusega â koguda lisaosasid ja addon-operatorit pildiks, mĂ€rgistada ja vĂ€lja anda.
- Tulemuse kontrollimine. Addon-operator suudab edastada metrikat Prometheusele.
Mis on lisaosa addon-operator'is?
Lisaosaks vĂ”ib pidada kĂ”ike, mis lisab klastrile uusi funktsioone. NĂ€iteks, Ingress'i installimine â suurepĂ€rane nĂ€ide lisaosast. See vĂ”ib olla iga operaator vĂ”i kontrollija oma CRD'ga: prometheus-operator, cert-manager, kube-controller-manager jne. VĂ”i midagi vĂ€ikest, mis lihtsustab haldust â nĂ€iteks, secret copier, mis kopeerib registry-saladusi uutesse nimede ruumidesse, vĂ”i sysctl tuner, mis seadistab sysctl parameetreid uutel sĂ”lmedel.
Lisaosade rakendamiseks pakub Addon-operator mitmeid kontseptsioone:
- Helm'i chart kasutatakse erineva tarkvara installimiseks klastrisse â nĂ€iteks, Prometheus, Grafana, nginx-ingress. Kui vajalikul komponendil on Helm'i chart, siis on selle installimine Addon-operator'i kaudu vĂ€ga lihtne.
- VÀÀrtuste hoidla. Helm'i chart'idel on tavaliselt palju erinevaid seadeid, mis vÔivad aja jooksul muutuda. Addon-operator toetab nende seadete hoidmist ja suudab jÀlgida nende muudatusi, et uuesti installida Helm'i chart koos uute vÀÀrtustega.
- Hook'id â need on kĂ€ivitatavad failid, mida Addon-operator kĂ€ivitab sĂŒndmuste pĂ”hjal ja millel on juurdepÀÀs values salvestusele. HĂŒpe vĂ”ib jĂ€lgida muudatusi klastris ja vĂ€rskendada vÀÀrtusi values salvestuses. See tĂ€hendab, et hĂŒpikute abil saab teha avastamist, et koguda vÀÀrtusi klastrist kĂ€ivitamisel vĂ”i ajakava kohaselt, vĂ”i kasutada pidevat avastamist, kogudes vÀÀrtusi klastrist muudatuste pĂ”hjal.
- Moodul â on Helm-chart, values salvestuse ja hĂŒpikute kogum. Mooduleid saab sisse ja vĂ€lja lĂŒlitada. Mooduli vĂ€ljalĂŒlitamine tĂ€hendab kĂ”igi Helm-chart'i vĂ€ljaande eemaldamist. Moodulid saavad dĂŒnaamiliselt ise sisse lĂŒlituda, nĂ€iteks kui kĂ”ik vajalikud moodulid on sisse lĂŒlitatud vĂ”i kui avastamine hĂŒpikutes on leidnud vajalikud parameetrid â see toimub abistava enabled-skripti abil.
- Globaalne hĂŒpe. Need on «iseseisvad» hĂŒpikud, mis ei kuulu moodulitesse ja millel on juurdepÀÀs globaalsetele values salvestusele, mille vÀÀrtused on kĂ”ikidele moodulite hĂŒpikutele kergesti kĂ€tte saadavad.
Kuidas need osad koos töötavad? Vaatame dokumentatsioonist pilti:

On kaks tööstsenaariumi:
- Globaalne hĂŒpe kĂ€ivitub sĂŒndmuse pĂ”hjal â nĂ€iteks, kui ressurssi klastris muudetakse. See hĂŒpe töötleb muudatusi ja salvestab uued vÀÀrtused globaalsetesse values salvestustesse. Addon-operator mĂ€rkab, et globaalne salvestus on muutunud ja kĂ€ivitab kĂ”ik moodulid. Iga moodul mÀÀrab oma hĂŒpikute abil, kas seda on vaja sisse lĂŒlitada, ning vĂ€rskendab oma values salvestust. Kui moodul on sisse lĂŒlitatud, kĂ€ivitab Addon-operator Helm-chart'i. Helm-chart'il on juurdepÀÀs vÀÀrtustele mooduli salvestusest ja globaalsetest salvestustest.
- Teine stsenaarium on lihtsam: mooduli hĂŒpe kĂ€ivitub sĂŒndmuse pĂ”hjal, muudab vÀÀrtusi mooduli values salvestuses. Addon-operator mĂ€rkab seda ja kĂ€ivitab Helm-chart'i vĂ€rskendatud vÀÀrtustega.
TĂ€iendust vĂ”ib rakendada ĂŒheainsa hĂŒpena vĂ”i ĂŒhe Helm-chart'ina vĂ”i isegi kui mitme sĂ”ltuva moodulina â see sĂ”ltub klastrisse installitava komponendi keerukusest ja vajalikust seadistuste paindlikkusest. NĂ€iteks, repositooriumis () on sysctl-tuner tĂ€ienduse, mis on rakendatud nii lihtsa moodulina, millel on hĂŒpe ja Helm-chart, kui ka kasutades values salvestust, mis vĂ”imaldab seadeid lisada ConfigMap-i redigeerimise kaudu.
Uuenduste edastamine
MÔned sÔnad komponentide vÀrskendamise korraldamisest, mida paigaldab Addon-operator.
Addon-operatori kÀivitamiseks klastris on vaja koguda lisandite pilt nagu hook-failid ja Helm-chartid, lisada binaarfail addon-operator ja kÔik, mis vajalik hookide jaoks: bash, kubectl, jq, python jne. Edasi vÔib seda pilti klastrisse vÀlja anda nagu tavalist rakendust ning tÔenÀoliselt soovite korraldada mingit silti. Kui klastreid on vÀhe, vÔib sobida sama lÀhenemine nagu rakenduste puhul: uus versioon, uus versioon, minna kÔikide klastrite juurde ja muuta Pod'ide image. Siiski, kui on palju klastreid, sobib meile rohkem enesetÀiendamise kontseptsioon kanalist.
Meil on see korraldatud nii:
- Kanal on pÔhimÔtteliselt identifitseerija, mille saate mÀÀrata igasuguseks (nÀiteks dev/stage/ea/stable).
- Kanali nimi on pildi silt. Kui on vaja vÀrskendusi kanali jaoks vÀlja anda, kogutakse uus pilt ja sildistatakse kanali nimega.
- Kui registry'sse ilmub uus pilt, taaskÀivitub Addon-operator ja kÀivitatakse uue pildiga.
See ei ole parim praktika, millest on kirjutatud . Sedasi toimimist ei soovitata, kuid jutt kĂ€ib tavalisest rakendusest, mis elab ĂŒhes klastris. Addon-operatori puhul on rakendus hulk Deploymente, mis on laiali klastrite vahel, ja enesetĂ€iendamine aitab vĂ€ga ning lihtsustab elu.
Kanalid aitavad samuti testimisel: kui on abiklastr, saab selle kanali jaoks seadistada stage ja veenda vĂ€rskendusi sinna, enne kui need kanalitesse vĂ€lja antakse ea ja stable. Kui kanali klastriga ea tĂŒĂŒbis esines viga, saab selle suunata stable, kuni sellega seotud probleemi uurimine toimub. Kui klaster on vĂ€lja viidud aktiivsest toimest, lĂŒlitatakse see oma "kĂŒlmutatud" kanalile â nĂ€iteks, freeze-2019-03-20.
Lisaks hookide ja Helm-chartide vĂ€rskendamisele vĂ”ib olla vajalik uuendada ka vĂ€list komponenti. NĂ€iteks, kui leiate vean node-exporteris ja olete isegi mĂ”elnud, kuidas seda patcheerida. Edasi avasite PR-i ja ootate uut vĂ€ljaandmist, et minna ĂŒle kĂ”ikide klastrite ja suurendada pildi versiooni. Et mitte oodata mÀÀramata aega, saate koguda enda node-exporteri ja lĂŒlituda selle peale, kuni PR aktsepteeritakse.
Tegelikult saab seda teha ka ilma Addon-operatorita, kuid koos Addon-operatoriga on node-exporter'i installimise moodul ĂŒhes repostiivis nĂ€htav, Dockerfile oma pildi loomisel saab hoida seal samas, kĂ”igil osalistel on lihtsam mĂ”ista, mis toimub... Ja kui klastreid on mitu, siis on kergem nii testida oma PR-i kui ka uut versiooni paigaldada!
See komponentide vĂ€rskendamise organisatsioon töötab meil edukalt, kuid vĂ”ib rakendada ka mistahes muud sobivat skeemi â sest antud juhul on Addon-operator lihtne binaarfail.
KokkuvÔte
Addon-operatoris rakendatud pÔhimÔtted vÔimaldavad luua lÀbipaistva protsessi lisandite loomisel, testimisel, paigaldamisel ja vÀrskendamisel klastris, mis on sarnane tavaliste rakenduste arendusprotsessidega.
Addon-operatori lisandeid saab moodulite (Helm-chart + hookid) vormis avalikult jagada. Meie, Flanti ettevÔte, plaanime suve jooksul jagada oma arendusi selliste lisandite nÀol. Liituge arendusega GitHubis (, ), proovige luua oma lisandit pÔhinedes ja , ootake uudiseid Habrest ja meie !
P.S.
Lugege ka meie blogist:
- «»;
- «».
Allikas: habr.com
