Ar lengva ir patogu paruošti Kubernetes klasterį? Skelbiame priedo operatorių

Ar lengva ir patogu paruošti Kubernetes klasterį? Skelbiame priedo operatorių

Po to apvalkalo operatorius pristatome jo vyresnįjį brolį - priedų operatorius. Tai atvirojo kodo projektas, naudojamas sistemos komponentams įdiegti į Kubernetes klasterį, kuris gali būti vadinamas priedais.

Kam išvis papildyti?

Ne paslaptis, kad „Kubernetes“ nėra paruoštas „viskas viename“ produktas, o norint sukurti „suaugusiųjų“ klasterį, jums reikės įvairių priedų. „Addon-operator“ padės įdiegti, konfigūruoti ir atnaujinti šiuos priedus.

Papildomų komponentų poreikis klasteryje yra atskleistas ataskaita kolegos driusha. Trumpai tariant, šiuo metu situacija su Kubernetes yra tokia, kad paprastam "play around" diegimui galite apsieiti su komponentais iš dėžutės, kūrėjams ir testavimui galite pridėti Ingress, bet pilnam diegimui, apie kurį galite pasakyti „jūsų gamyba paruošta“, reikia pridėti su keliolika skirtingų priedų: kažkas stebėjimui, kažkas registravimui, nepamirškite įvesties ir sertifikatų tvarkyklės, pasirinkti mazgų grupes, pridėti tinklo politiką, sezoną su sysctl ir pod autoscaler nustatymais...

Ar lengva ir patogu paruošti Kubernetes klasterį? Skelbiame priedo operatorių

Kokia darbo su jais specifika?

Kaip rodo praktika, reikalas neapsiriboja vienu įrenginiu. Norint patogiai dirbti su klasteriu, priedus reikės atnaujinti, išjungti (pašalinti iš klasterio), o prieš diegdami juos į gamybinį klasterį norėsite kai kuriuos išbandyti.

Taigi, gal čia užteks Ansible? Gal būt. Bet Apskritai visaverčiai priedai negyvena be nustatymų. Šie nustatymai gali skirtis priklausomai nuo klasterio varianto (aws, gce, azure, bare-metal, do, ...). Kai kurių nustatymų negalima nurodyti iš anksto, juos reikia gauti iš klasterio. Ir klasteris nėra statinis: kai kuriems nustatymams turėsite stebėti pakeitimus. O štai Ansible jau trūksta: reikia programos, kuri gyvena klasteryje, t.y. Kubernetes operatorius.

Tie, kurie tai išbandė darbe apvalkalo operatorius, jie sakys, kad priedų diegimo ir atnaujinimo bei stebėjimo nustatymų užduotis galima visiškai išspręsti naudojant kabliukai apvalkalo operatoriui. Galite parašyti scenarijų, kuris atliks sąlyginį veiksmą kubectl apply ir stebėti, pavyzdžiui, ConfigMap, kur bus saugomi nustatymai. Maždaug tai yra įdiegta addon-operator.

Kaip tai organizuojama priedų operatoriuje?

Kurdami naują sprendimą vadovavosi šiais principais:

  • Priedo diegimo programa turi palaikyti šabloninė ir deklaratyvioji konfigūracija. Mes nekuriame stebuklingų scenarijų, kurie įdiegia priedus. „Addon-operator“ priedams įdiegti naudoja „Helm“. Norėdami įdiegti, turite sukurti diagramą ir pasirinkti reikšmes, kurios bus naudojamos konfigūravimui.
  • Nustatymai gali būti sukurti diegimo metu, jie gali būti gauti iš klasterioArba gauti atnaujinimus, stebėti klasterio išteklius. Šios operacijos gali būti įgyvendintos naudojant kabliukus.
  • Nustatymai gali būti laikyti klasteryje. Norint išsaugoti nustatymus klasteryje, sukuriamas „ConfigMap“ / „addon“ operatorius, o „Addon“ operatorius stebi šio „ConfigMap“ pakeitimus. „Addon-operator“ suteikia kabliams prieigą prie nustatymų naudojant paprastas konvencijas.
  • Papildymas priklauso nuo nustatymų. Jei parametrai pasikeitė, „Addon“ operatorius išskleidžia vairo diagramą su naujomis reikšmėmis. Vairo diagramos, jos verčių ir kabliukų derinį pavadinome moduliu (daugiau informacijos rasite toliau).
  • Inscenizacija. Nėra stebuklingų išleidimo scenarijų. Atnaujinimo mechanizmas panašus į įprastą programą – surinkite priedus ir priedų operatorius į vaizdą, pažymėkite juos ir išleiskite.
  • Rezultato kontrolė. „Addon“ operatorius gali pateikti „Prometheus“ metrikas.

Kas yra papildymas priedų operatoriuje?

Papildymu galima laikyti viską, kas prideda naujų funkcijų klasteriui. Pavyzdžiui, Ingress įdiegimas yra puikus priedo pavyzdys. Tai gali būti bet kuris operatorius arba valdiklis, turintis savo CRD: „prometheus-operator“, „cert-manager“, „kube-controller-manager“ ir kt. Arba kažkas mažo, bet lengviau naudojamo – pavyzdžiui, slaptas kopijuoklis, kuris kopijuoja registro paslaptis į naujas vardų sritis, arba sysctl derintuvas, sukonfigūruojantis sysctl parametrus naujuose mazguose.

Norėdami įdiegti priedus, „Addon-operator“ pateikia keletą koncepcijų:

  • Vairo diagrama naudojama įvairiai programinei įrangai įdiegti į klasterį - pavyzdžiui, Prometheus, Grafana, nginx-ingress. Jei reikalingas komponentas turi vairo diagramą, jį įdiegti naudojant „Addon-operator“ bus labai paprasta.
  • Vertybių saugojimas. Vairo diagramose paprastai yra daug skirtingų nustatymų, kurie laikui bėgant gali keistis. „Addon-operator“ palaiko šių nustatymų saugojimą ir gali stebėti jų pakeitimus, kad iš naujo įdiegtų vairo diagramą su naujomis reikšmėmis.
  • Kabliukai yra vykdomieji failai, kuriuos „Addon“ operatorius vykdo įvykiuose ir kurie pasiekia verčių saugyklą. Kablys gali stebėti klasterio pokyčius ir atnaujinti reikšmes vertybių saugykloje. Tie. Naudodami kabliukus, galite atlikti atradimą, kad rinktumėte vertes iš klasterio paleidžiant arba pagal tvarkaraštį, arba galite atlikti nuolatinį atradimą, rinkdami reikšmes iš klasterio pagal klasterio pokyčius.
  • Modulis yra vairo diagramos, vertybių saugyklos ir kabliukų derinys. Modulius galima įjungti arba išjungti. Modulio išjungimas reiškia visų Helm diagramos leidimų ištrynimą. Moduliai gali įsijungti dinamiškai, pavyzdžiui, jei įjungti visi reikalingi moduliai arba atradimas surado reikiamus parametrus kabliuose – tai daroma naudojant pagalbinį įjungtą scenarijų.
  • Pasauliniai kabliukai. Tai yra „savarankiški“ kabliukai, jie nėra įtraukti į modulius ir turi prieigą prie pasaulinės vertybių saugyklos, kurios vertės yra prieinamos visiems modulių kabliams.

Kaip šios dalys veikia kartu? Pažvelkime į nuotrauką iš dokumentacijos:

Ar lengva ir patogu paruošti Kubernetes klasterį? Skelbiame priedo operatorių

Yra du darbo scenarijai:

  1. Visuotinį kabliuką suaktyvina įvykis – pavyzdžiui, pasikeitus klasterio ištekliui. Šis kabliukas apdoroja pakeitimus ir įrašo naujas reikšmes į pasaulinę vertybių saugyklą. Priedo operatorius pastebi, kad pasikeitė pasaulinė saugykla, ir paleidžia visus modulius. Kiekvienas modulis, naudodamas savo kabliukus, nustato, ar jį reikia įjungti, ir atnaujina savo verčių saugyklą. Jei modulis įjungtas, „Addon“ operatorius pradeda „Helm“ diagramos diegimą. Šiuo atveju vairo diagrama turi prieigą prie verčių iš modulio saugyklos ir iš pasaulinės saugyklos.
  2. Antrasis scenarijus yra paprastesnis: modulio kabliukas suveikia dėl įvykio ir pakeičia reikšmes modulio verčių saugykloje. „Addon-operator“ tai pastebi ir paleidžia vairo diagramą su atnaujintomis reikšmėmis.

Papildymas gali būti įgyvendintas kaip vienas kabliukas arba kaip viena Helm diagrama, arba net kaip keli priklausomi moduliai - tai priklauso nuo į klasterį montuojamo komponento sudėtingumo ir nuo norimo konfigūracijos lankstumo lygio. Pavyzdžiui, saugykloje (/pavyzdžiai) yra sysctl-tuner priedas, kuris įgyvendinamas tiek kaip paprastas modulis su kabliu ir Helm diagrama, tiek naudojant reikšmių saugyklą, kuri leidžia pridėti nustatymus redaguojant ConfigMap.

Atnaujinimų pristatymas

Keletas žodžių apie komponentų naujinimų, kuriuos įdiegia „Addon-operator“, organizavimą.

Norėdami paleisti „Addon-operator“ klasteryje, jums reikia sukurti vaizdą su priedais hook ir Helm diagramos failų pavidalu, pridėkite dvejetainį failą addon-operator ir viskas, ko reikia kabliukams: bash, kubectl, jq, python ir tt Tada šis vaizdas gali būti įtrauktas į klasterį kaip įprastą programą ir greičiausiai norėsite sutvarkyti vieną ar kitą žymėjimo schemą. Jei klasterių yra nedaug, gali tikti tas pats metodas, kaip ir su programomis: nauja versija, nauja versija, eikite į visas grupes ir pataisykite Pod vaizdą. Tačiau išleidus daugybei grupių, mums labiau tiko savaiminio atnaujinimo iš kanalo koncepcija.

Štai kaip tai darome:

  • Kanalas iš esmės yra identifikatorius, kurį galima nustatyti į bet ką (pavyzdžiui, dev/stage/ea/stable).
  • Kanalo pavadinimas yra vaizdo žyma. Kai reikia išleisti kanalo naujinimus, surenkamas naujas vaizdas ir pažymimas kanalo pavadinimu.
  • Kai registre pasirodo naujas vaizdas, „Addon-operator“ paleidžiamas iš naujo ir paleidžiamas su nauju vaizdu.

Tai nėra geriausia praktika, kaip parašyta Kubernetes dokumentacija. Nerekomenduojama to daryti, bet mes kalbame apie įprasta programa, kuri yra tame pačiame klasteryje. „Addon-operator“ atveju programa yra daugybė diegimų, išsibarsčiusių po grupes, o savarankiškas atnaujinimas labai padeda ir palengvina gyvenimą.

Kanalai padeda ir bandymuose: jei yra pagalbinis klasteris, galite jį konfigūruoti kanale stage ir įdėkite naujinimus prieš išleisdami kanaluose ea и stable. Jei kanale yra spiečius ea įvyko klaida, galite ją perjungti stable, kol šio klasterio problema tiriama. Jei klasteris pašalinamas iš aktyvaus palaikymo, jis persijungia į „užšaldytą“ kanalą, pvz. freeze-2019-03-20.

Be kabliukų ir vairo diagramų atnaujinimo, jums gali prireikti naujinimas ir trečiosios šalies komponentas. Pavyzdžiui, pastebėjote sąlyginio mazgo eksportuotojo klaidą ir net sugalvojote, kaip ją pataisyti. Tada atidarėte PR ir laukiate, kol nauja versija pereis per visas grupes ir padidins vaizdo versiją. Kad nelauktumėte be galo, prieš priimdami PR galite sukurti savo mazgo eksportuotoją ir pereiti prie jo.

Apskritai tai galima padaryti be „Addon-operator“, tačiau naudojant „Addon-operator“ mazgo eksportuotojo diegimo modulis bus matomas vienoje saugykloje, „Dockerfile“, skirtas jūsų įvaizdžiui kurti, gali būti laikomas čia pat, todėl visiems programos dalyviams bus lengviau. procesas, norint suprasti, kas atsitiks... O jei yra kelios klasteriai, tampa lengviau ir išbandyti savo PR, ir išleisti naują versiją!

Toks komponentų atnaujinimo organizavimas pas mus veikia sėkmingai, tačiau galima įgyvendinti bet kokią kitą tinkamą schemą – juk šiuo atveju Addon-operator yra paprastas dvejetainis failas.

išvada

„Addon-operator“ įdiegti principai leidžia sukurti skaidrų priedų kūrimo, testavimo, diegimo ir atnaujinimo procesą klasteryje, panašų į įprastų programų kūrimo procesus.

„Addon-operator“ priedai modulio formatu (valmo diagrama + kabliukai) gali būti viešai prieinami. Mes, bendrovė Flant, planuojame paskelbti savo pokyčius tokių papildymų forma vasaros metu. Prisijunkite prie kūrimo GitHub (apvalkalo operatorius, priedų operatorius), pabandykite padaryti savo priedą pagal pavyzdžių и dokumentacija, laukite naujienų apie Habré ir mūsų YouTube kanalas!

PS

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий