Ali je enostavno in priročno pripraviti gručo Kubernetes? Objava addon-operatorja

Ali je enostavno in priročno pripraviti gručo Kubernetes? Objava addon-operatorja

Po lupina-operater predstavljamo njegovega starejšega brata - addon-operator. To je odprtokodni projekt, ki se uporablja za namestitev sistemskih komponent v gručo Kubernetes, ki jih lahko imenujemo dodatki.

Zakaj sploh kakšni dodatki?

Nobena skrivnost ni, da Kubernetes ni že pripravljen izdelek vse-v-enem in za izgradnjo grozda za "odrasle" boste potrebovali različne dodatke. Addon-operator vam bo pomagal namestiti, konfigurirati in posodabljati te dodatke.

Potreba po dodatnih komponentah v grozdu je razkrita v poročilo Kolegi driusha. Skratka, stanje s Kubernetesom je trenutno takšno, da se za preprosto »play around« namestitev lahko znajdete s komponentami iz škatle, za razvijalce in testiranje lahko dodate Ingress, za popolno namestitev pa, o kateri lahko rečete "vaša produkcija je pripravljena", morate dodati ducat različnih dodatkov: nekaj za spremljanje, nekaj za beleženje, ne pozabite na ingress in cert-manager, izberite skupine vozlišč, dodajte omrežne politike, sezono z nastavitvami sysctl in pod autoscaler ...

Ali je enostavno in priročno pripraviti gručo Kubernetes? Objava addon-operatorja

Kakšne so posebnosti dela z njimi?

Kot kaže praksa, zadeva ni omejena na eno namestitev. Za udobno delo z gručo bo treba dodatke posodobiti, onemogočiti (odstraniti iz gruče), nekatere pa boste želeli preizkusiti, preden jih namestite v produkcijsko gručo.

Torej, morda bo Ansible tukaj dovolj? mogoče. Ampak Na splošno polnopravni dodatki ne živijo brez nastavitev. Te nastavitve se lahko razlikujejo glede na različico gruče (aws, gce, azure, bare-metal, do, ...). Nekaterih nastavitev ni mogoče določiti vnaprej, pridobiti jih je treba iz gruče. In gruča ni statična: za nekatere nastavitve boste morali spremljati spremembe. In tukaj Ansible že manjka: potrebujete program, ki živi v gruči, tj. Operater Kubernetes.

Tisti, ki so to poskusili v službi lupina-operater, bodo rekli, da je naloge namestitve in posodabljanja dodatkov ter nastavitev nadzora mogoče popolnoma rešiti z kavlji za operaterja lupine. Lahko napišete skript, ki bo naredil pogojnik kubectl apply in spremljajte na primer ConfigMap, kjer bodo shranjene nastavitve. To je približno tisto, kar je implementirano v addon-operator.

Kako je to organizirano v addon-operatorju?

Pri ustvarjanju nove rešitve smo izhajali iz naslednjih načel:

  • Namestitveni program dodatka mora podpirati predloge in deklarativna konfiguracija. Ne izdelujemo čarobnih skriptov, ki nameščajo dodatke. Operater dodatkov uporablja Helm za namestitev dodatkov. Za namestitev morate ustvariti grafikon in izbrati vrednosti, ki bodo uporabljene za konfiguracijo.
  • Nastavitve so lahko ustvarite ob namestitvi, lahko so dobiti iz grozdaAli prejemanje posodobitev, spremljanje virov gruče. Te operacije je mogoče izvesti s kavlji.
  • Nastavitve so lahko shraniti v grozd. Za shranjevanje nastavitev v gručo se ustvari ConfigMap/addon-operator in Addon-operator spremlja spremembe tega ConfigMap. Addon-operator omogoča kavljem dostop do nastavitev z uporabo preprostih konvencij.
  • Dodatek je odvisen od nastavitev. Če so se nastavitve spremenile, potem operater Addon prikaže grafikon Helm z novimi vrednostmi. Kombinacijo grafikona Helm, vrednosti zanj in kavljev smo poimenovali modul (za več podrobnosti glejte spodaj).
  • Uprizoritev. Ni čarobnih skriptov za izdajo. Mehanizem posodabljanja je podoben navadni aplikaciji - zberite dodatke in operaterje dodatkov v sliko, jih označite in razvijte.
  • Kontrola rezultatov. Addon-operator lahko zagotovi meritve za Prometheus.

Kaj je oblazinjenje v addon-operatorju?

Kot dodatek se lahko šteje vse, kar grozdu doda nove funkcije. Na primer, namestitev Ingressa je odličen primer dodatka. To je lahko kateri koli operater ali krmilnik z lastnim CRD: prometheus-operator, cert-manager, kube-controller-manager itd. Ali nekaj majhnega, a enostavnejšega za uporabo - na primer Secret Copier, ki kopira skrivnosti registra v nove imenske prostore, ali sysctl tuner, ki konfigurira parametre sysctl na novih vozliščih.

Za implementacijo dodatkov Addon-operator ponuja več konceptov:

  • Shema krmila uporablja se za namestitev različne programske opreme v gručo - na primer Prometheus, Grafana, nginx-ingress. Če zahtevana komponenta vsebuje grafikon Helm, bo njena namestitev z uporabo operaterja Addon zelo preprosta.
  • Shranjevanje vrednosti. Karte Helm imajo običajno veliko različnih nastavitev, ki se lahko sčasoma spremenijo. Operater dodatka podpira shranjevanje teh nastavitev in lahko spremlja njihove spremembe, da znova namesti grafikon Helm z novimi vrednostmi.
  • Kljuke so izvršljive datoteke, ki jih operater Addon izvaja ob dogodkih in dostopajo do shrambe vrednosti. Kavelj lahko spremlja spremembe v gruči in posodablja vrednosti v shrambi vrednosti. Tisti. Z uporabo kavljev lahko izvedete odkrivanje za zbiranje vrednosti iz gruče ob zagonu ali v skladu z razporedom ali pa izvajate neprekinjeno odkrivanje, zbiranje vrednosti iz gruče na podlagi sprememb v gruči.
  • Modul je kombinacija karte Helm, shrambe vrednosti in kavljev. Module je mogoče omogočiti ali onemogočiti. Onemogočanje modula pomeni brisanje vseh izdaj grafikona Helm. Moduli se lahko dinamično omogočijo, na primer, če so omogočeni vsi moduli, ki jih potrebuje, ali če je odkritje našlo potrebne parametre v kavljih - to se izvede z uporabo pomožnega omogočenega skripta.
  • Globalne kljuke. To so kavlji »sami po sebi«, niso vključeni v module in imajo dostop do globalne shrambe vrednosti, katere vrednosti so na voljo vsem kavljem v modulih.

Kako ti deli delujejo skupaj? Poglejmo sliko iz dokumentacije:

Ali je enostavno in priročno pripraviti gručo Kubernetes? Objava addon-operatorja

Obstajata dva scenarija dela:

  1. Globalni kavelj sproži dogodek – na primer, ko se spremeni vir v gruči. Ta kavelj obdela spremembe in zapiše nove vrednosti v globalno shrambo vrednosti. Operater dodatka opazi, da se je globalni pomnilnik spremenil, in zažene vse module. Vsak modul s svojimi kljukicami ugotovi, ali ga je treba omogočiti, in posodobi svojo shrambo vrednosti. Če je modul omogočen, operater Addon začne namestitev grafikona Helm. V tem primeru ima grafikon Helm dostop do vrednosti iz pomnilnika modula in iz globalnega pomnilnika.
  2. Drugi scenarij je preprostejši: kavelj modula sproži dogodek in spremeni vrednosti v shrambi vrednosti modula. Operater dodatka to opazi in zažene grafikon Helm s posodobljenimi vrednostmi.

Dodatek je lahko izveden kot en sam trnek, ali kot ena Helm karta, oz tudi kot več odvisnih modulov - to je odvisno od kompleksnosti komponente, ki se namesti v gručo, in od želene ravni fleksibilnosti konfiguracije. Na primer, v skladišču (/primeri) obstaja dodatek sysctl-tuner, ki je implementiran tako kot preprost modul s kavljem in grafikonom Helm kot z uporabo shrambe vrednosti, ki omogoča dodajanje nastavitev z urejanjem ConfigMap.

Dostava posodobitev

Nekaj ​​besed o organiziranju posodobitev komponent, ki jih namesti Addon-operator.

Če želite zagnati Addon-operator v gruči, potrebujete zgraditi podobo z dodatki v obliki datotek hook in Helm chart, dodajte binarno datoteko addon-operator in vse, kar potrebujete za kljuke: bash, kubectl, jq, python itd. Nato lahko to sliko uvedete v gručo kot običajno aplikacijo in najverjetneje boste želeli organizirati eno ali drugo shemo označevanja. Če je grozdov malo, je lahko primeren enak pristop kot pri aplikacijah: nova izdaja, nova različica, pojdite na vse grozde in popravite sliko Podov. Vendar pa je bil v primeru uvajanja na večje število grozdov bolj primeren koncept samoposodabljanja iz kanala.

Takole naredimo:

  • Kanal je v bistvu identifikator, ki ga je mogoče nastaviti na karkoli (na primer dev/stage/ea/stable).
  • Ime kanala je oznaka slike. Ko morate za kanal uvesti posodobitve, se sestavi nova slika in označi z imenom kanala.
  • Ko se v registru pojavi nova slika, se Addon-operator znova zažene in zažene z novo sliko.

To ni najboljša praksa, kot je zapisano v Dokumentacija Kubernetes. To ni priporočljivo, vendar govorimo o običajna aplikacija, ki živi v isti gruči. V primeru Addon-operatorja je aplikacija veliko razmestitev, razpršenih po grozdih, samoposodabljanje pa veliko pomaga in olajša življenje.

Kanali pomagajo in pri testiranju: če obstaja pomožna gruča, jo lahko konfigurirate na kanal stage in vanj vnesite posodobitve, preden jih uvedete v kanale ea и stable. Če z gručo na kanalu ea je prišlo do napake, lahko ga preklopite na stable, medtem ko se težava s to gručo preiskuje. Če je gruča vzeta iz aktivne podpore, preklopi na svoj "zamrznjeni" kanal - npr. freeze-2019-03-20.

Poleg posodobitve kavljev in kart Helm boste morda potrebovali posodobitev in komponento tretje osebe. Na primer, opazili ste napako v pogojnem izvozniku vozlišča in celo ugotovili, kako jo popraviti. Nato ste odprli PR in čakate na novo izdajo, da pregledate vse grozde in povečate različico slike. Da ne boste čakali v nedogled, lahko zgradite svoj vozlišče-izvoznik in preklopite nanj, preden sprejmete PR.

Na splošno je to mogoče storiti brez Addon-operatorja, vendar bo z Addon-operatorjem modul za namestitev node-exporter viden v enem repozitoriju, Dockerfile za gradnjo vaše slike lahko shranite kar tam, postane lažje za vse udeležence v postopek, da razumete, kaj se zgodi ... In če obstaja več grozdov, potem postane lažje preizkusiti svoj PR in uvesti novo različico!

Ta organizacija posodabljanja komponent se pri nas uspešno obnese, lahko pa se izvede tudi katera koli druga ustrezna shema - navsezadnje v tem primeru je Addon-operator preprosta binarna datoteka.

Zaključek

Načela, implementirana v Addon-operator, vam omogočajo, da zgradite pregleden postopek za ustvarjanje, testiranje, nameščanje in posodabljanje dodatkov v gruči, podobno razvojnim procesom običajnih aplikacij.

Dodatki za Addon-operator v obliki modula (Helm chart + hooks) so lahko javno dostopni. Mi, podjetje Flant, načrtujemo, da bomo svoj razvoj v obliki takšnih dodatkov objavili poleti. Pridružite se razvoju na GitHubu (lupina-operater, addon-operator), poskusite sestaviti svoj dodatek na podlagi primeri и dokumentacijo, počakajte na novice na Habréju in na našem YouTube kanal!

PS

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar