Kas Kubernetese klastri ettevalmistamine on lihtne ja mugav? Lisandmooduli operaatori väljakuulutamine

Kas Kubernetese klastri ettevalmistamine on lihtne ja mugav? Lisandmooduli operaatori väljakuulutamine

Pärast kesta operaator esitleme tema vanemat venda - lisand-operaator. See on avatud lähtekoodiga projekt, mida kasutatakse süsteemikomponentide installimiseks Kubernetese klastrisse, mida võib nimetada lisandmooduliteks.

Miks üldse mingeid täiendusi?

Pole saladus, et Kubernetes ei ole valmis kõik-ühes toode ja “täiskasvanute” klastri loomiseks on vaja mitmesuguseid täiendusi. Addon-operator aitab teil neid lisandmooduleid installida, konfigureerida ja ajakohasena hoida.

Vajadus täiendavate komponentide järele klastris on avalikustatud aruanne kolleegid driusha. Ühesõnaga, Kubernetesega on hetkel olukord selline, et lihtsa “play around” installeerimise puhul saab karbist väljas olevate komponentidega hakkama, arendajatele ja testimiseks saab lisada Ingressi, aga täispaigalduse jaoks, mille kohta võite öelda "teie tootmine on valmis", peate lisama tosina erineva lisandmooduliga: midagi jälgimiseks, midagi logimiseks, ärge unustage sissepääsu ja sertifikaadihaldurit, valige sõlmede rühmad, lisage võrgupoliitikad, hooaeg sysctl ja pod autoscaleri sätetega...

Kas Kubernetese klastri ettevalmistamine on lihtne ja mugav? Lisandmooduli operaatori väljakuulutamine

Millised on nendega töötamise eripärad?

Nagu praktika näitab, ei piirdu asi ühe paigaldusega. Klastriga mugavaks töötamiseks tuleb lisandmoodulid värskendada, keelata (klastrist eemaldada) ja mõnda enne tootmisklastrisse installimist testida.

Ehk siis Ansiblest siin piisab? Võib olla. Aga Üldiselt ei ela täieõiguslikud lisandmoodulid ilma seadeteta. Need sätted võivad olenevalt klastri variandist erineda (aws, gce, azure, bare-metal, do, ...). Mõnda seadet ei saa eelnevalt määrata, need tuleb hankida klastrist. Ja klaster pole staatiline: mõne seade puhul peate muudatusi jälgima. Ja siin on Ansible juba puudu: vaja on programmi, mis elab klastris, st. Kubernetese operaator.

Need, kes seda tööl proovisid kesta operaator, ütlevad nad, et lisandmoodulite installimise ja värskendamise ning jälgimisseadete ülesandeid saab täielikult lahendada konksud shell-operaatori jaoks. Saate kirjutada skripti, mis teeb tingimusliku kubectl apply ja jälgida näiteks ConfigMapi, kuhu sätted salvestatakse. See on ligikaudu see, mida lisandoperaatoris rakendatakse.

Kuidas on see addon-operaatoris korraldatud?

Uue lahenduse loomisel lähtusime järgmistest põhimõtetest:

  • Lisandmooduli installija peab toetama malli- ja deklaratiivne konfiguratsioon. Me ei koosta lisandmooduleid installivaid võluskripte. Addon-operator kasutab lisandmoodulite installimiseks Helmi. Installimiseks peate looma diagrammi ja valima väärtused, mida konfigureerimiseks kasutatakse.
  • Seadistused võivad olla installimisel genereerida, nad saavad saada klastristVõi saada värskendusi, jälgides klastri ressursse. Neid toiminguid saab teostada konksude abil.
  • Seadistused võivad olla hoida kobaras. Seadete salvestamiseks klastris luuakse ConfigMap/addon-operaator ja Addon-operaator jälgib selle ConfigMapi muudatusi. Addon-operaator annab konksudele juurdepääsu sätetele lihtsate tavade abil.
  • Lisamine sõltub seadistustest. Kui sätteid on muudetud, siis lisab operaator Helm diagrammi uute väärtustega. Helmi diagrammi, selle väärtuste ja konksude kombinatsiooni nimetasime mooduliks (lisateavet leiate altpoolt).
  • Lavastus. Maagilisi vabastamisskripte pole. Värskendusmehhanism sarnaneb tavalise rakendusega – koguge lisandmoodulid ja lisandmoodulite operaatorid pildile, märgistage need ja rullige need välja.
  • Tulemuse kontroll. Addon-operaator võib pakkuda Prometheuse jaoks mõõdikuid.

Mis on lisandoperaatori polster?

Täienduseks võib lugeda kõike, mis lisab klastrile uusi funktsioone. Näiteks Ingressi installimine on suurepärane näide lisandmoodulist. See võib olla mis tahes operaator või kontroller, kellel on oma CRD: prometheus-operaator, serdihaldur, kube-kontroller-haldur jne. Või midagi väikest, aga lihtsamini kasutatavat – näiteks salakoopiamasin, mis kopeerib registrisaladused uutesse nimeruumidesse või sysctl tuuner, mis seadistab uutel sõlmedel sysctl parameetreid.

Lisandmoodulite rakendamiseks pakub Addon-operator mitmeid kontseptsioone:

  • Helmi diagramm kasutatakse erineva tarkvara installimiseks klastrisse - näiteks Prometheus, Grafana, nginx-ingress. Kui vajalikul komponendil on Helm diagramm, on selle installimine Addon-operaatori abil väga lihtne.
  • Väärtuste salvestamine. Helidiagrammidel on tavaliselt palju erinevaid seadeid, mis võivad aja jooksul muutuda. Addon-operaator toetab nende sätete salvestamist ja saab jälgida nende muudatusi, et Helmi diagramm uute väärtustega uuesti installida.
  • Konksud on käivitatavad failid, mida Addon-operaator sündmustel käivitab ja mis pääsevad juurde väärtuste salvestamisele. Konks saab jälgida muutusi klastris ja värskendada väärtuste salves olevaid väärtusi. Need. Konksude abil saate teha avastuse, et koguda väärtusi klastrist käivitamisel või ajakava järgi, või teha pidevat avastamist, kogudes klastrist väärtusi klastris toimunud muutuste põhjal.
  • Moodul on kombinatsioon Helm diagrammist, väärtuste poest ja konksudest. Moodulid saab lubada või keelata. Mooduli keelamine tähendab kõigi Helmi diagrammi väljaannete kustutamist. Moodulid saavad end dünaamiliselt lubada, näiteks kui kõik vajalikud moodulid on lubatud või kui discovery on konksudest leidnud vajalikud parameetrid – seda tehakse abistava skripti abil.
  • Globaalsed konksud. Need on "iseseisvad" konksud, need ei sisaldu moodulites ja neil on juurdepääs globaalsele väärtuste poele, mille väärtused on saadaval kõikidele moodulite konksudele.

Kuidas need osad koos töötavad? Vaatame pilti dokumentatsioonist:

Kas Kubernetese klastri ettevalmistamine on lihtne ja mugav? Lisandmooduli operaatori väljakuulutamine

Tööstsenaariume on kaks:

  1. Globaalse konksu käivitab sündmus – näiteks siis, kui klastris olev ressurss muutub. See konks töötleb muudatusi ja kirjutab uued väärtused globaalsesse väärtussalve. Addon-operaator märkab, et globaalne salvestusruum on muutunud ja käivitab kõik moodulid. Iga moodul määrab oma konksude abil, kas see tuleb lubada, ja värskendab selle väärtuste salvestust. Kui moodul on lubatud, alustab Addon-operaator Helm diagrammi installimist. Sel juhul on Helm diagrammil juurdepääs väärtustele mooduli mälust ja globaalsest salvestusruumist.
  2. Teine stsenaarium on lihtsam: mooduli konks käivitab sündmuse ja muudab väärtusi mooduli väärtuste salves. Addon-operaator märkab seda ja käivitab värskendatud väärtustega Helm diagrammi.

Lisamist saab rakendada ühe konksuna või ühe Helmi diagrammina või isegi mitme sõltuva moodulina - see sõltub klastris paigaldatava komponendi keerukusest ja soovitud konfiguratsiooni paindlikkuse tasemest. Näiteks hoidlas (/näited) on olemas sysctl-tuuner lisandmoodul, mis on realiseeritud nii lihtsa moodulina konksu ja Helm diagrammiga kui ka väärtuste salvestamise abil, mis võimaldab seadistusi lisada ConfigMapi redigeerides.

Uuenduste kohaletoimetamine

Mõni sõna Addon-operaatori installitavate komponentide värskenduste korraldamise kohta.

Addon-operaatori käitamiseks klastris on vaja luua pilt täiendustega konks- ja Helmi diagrammifailide kujul lisage binaarfail addon-operator ja kõik vajalik konksude jaoks: bash, kubectl, jq, python jne. Seejärel saab selle pildi tavalise rakendusena klastris välja rullida ja tõenäoliselt soovite korraldada üht või teist märgistamisskeemi. Kui klastreid on vähe, võib sobida sama lähenemine, mis rakenduste puhul: uus väljalase, uus versioon, minge kõikidesse klastritesse ja parandage Podide pilti. Märkimisväärsele arvule klastritele levitamise korral sobis meile aga kanalist enesevärskendamise kontseptsioon.

Teeme seda järgmiselt.

  • Kanal on sisuliselt identifikaator, mille saab määrata ükskõik milliseks (näiteks dev/stage/ea/stable).
  • Kanali nimi on pildi silt. Kui teil on vaja kanali värskendusi levitada, koostatakse uus pilt ja märgistatakse see kanali nimega.
  • Kui registrisse ilmub uus pilt, taaskäivitatakse Addon-operator ja käivitatakse uue pildiga.

See ei ole parim tava, nagu on kirjas Kubernetese dokumentatsioon. Seda ei soovitata teha, kuid me räägime sellest tavaline rakendus, mis elab samas klastris. Addon-operaatori puhul on rakendus palju klastritesse hajutatud juurutusi ning enesevärskendus aitab palju kaasa ja teeb elu lihtsamaks.

Kanalid aitavad ja testimisel: kui on olemas lisaklaster, saate selle kanalile konfigureerida stage ja lisage sellesse värskendused enne selle kanalitele avaldamist ea и stable. Kui kanalil on kobar ea ilmnes viga, saate selle ümber lülitada stable, samal ajal kui selle klastri probleemi uuritakse. Kui klaster võetakse aktiivsest toest välja, lülitub see oma "külmutatud" kanalile – näiteks freeze-2019-03-20.

Lisaks konksude ja Helmi graafikute värskendamisele võib teil tekkida vajadus värskendus ja kolmanda osapoole komponent. Näiteks märkasite tingimusliku sõlme eksportija viga ja leidsite isegi, kuidas seda parandada. Järgmisena avasite PR-i ja ootate, kuni uus versioon läbib kõik klastrid ja suurendab pildi versiooni. Et mitte lõputult oodata, võite enne PR-i vastuvõtmist luua oma sõlme-eksportija ja sellele üle minna.

Üldiselt saab seda teha ilma Addon-operaatorita, kuid Addon-operaatoriga on sõlme-eksportija installimise moodul nähtav ühes hoidlas, teie pildi loomise Docker-faili saab hoida just seal, see muutub lihtsamaks kõigile programmis osalejatele. protsess, et mõista, mis juhtub... Ja kui klastreid on mitu, on lihtsam nii oma PR-i testida kui ka uut versiooni välja töötada!

Selline komponentide uuendamise korraldus toimib meil edukalt, kuid rakendatav on ju mis tahes muu sobiv skeem antud juhul on Addon-operaator lihtne binaarfail.

Järeldus

Addon-operaatoris rakendatud põhimõtted võimaldavad teil luua klastris läbipaistva protsessi lisandmoodulite loomiseks, testimiseks, installimiseks ja värskendamiseks, sarnaselt tavarakenduste arendusprotsessidele.

Addon-operaatori lisandmoodulid mooduli vormingus (Helm chart + konksud) saab teha avalikult kättesaadavaks. Meie, firma Flant, plaanime oma arendused selliste täienduste näol avaldada suve jooksul. Liituge arendusega GitHubis (kesta operaator, lisand-operaator), proovige selle põhjal oma täiendus teha näited и dokumentatsioon, oodake uudiseid Habré ja meie kohta YouTube'i kanal!

PS

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar