Erraza eta erosoa al da Kubernetes kluster bat prestatzea? Eragile gehigarria iragartzen du

Erraza eta erosoa al da Kubernetes kluster bat prestatzea? Eragile gehigarria iragartzen du

Ondoren shell-operadore bere anaia nagusia aurkezten dugu - gehigarri-eragile. Hau kode irekiko proiektu bat da, sistemaren osagaiak Kubernetes kluster batean instalatzeko erabiltzen dena, gehigarri deitu daitekeena.

Zergatik gehikuntzarik?

Ez da sekretua Kubernetes ez dela prest egindako produktu bat, eta "helduen" kluster bat eraikitzeko hainbat gehigarri beharko dituzu. Addon-operator-ek gehigarri hauek instalatzen, konfiguratzen eta eguneratuta mantentzen lagunduko dizu.

Klusterrean osagai gehigarrien beharra urtean azaltzen da txostena lankideek driusha. Laburbilduz, une honetan Kubernetes-en egoera halakoa da "jolastu" instalazio soil baterako osagaiak kaxatik kanpo atera ditzakezula, garatzaileentzako eta probak egiteko Ingress gehi dezakezu, baina instalazio oso baterako, eta horri buruz. "zure ekoizpena prest dago" esan dezakezu, dozena gehigarri ezberdinekin gehitu behar dituzu: monitorizaziorako zerbait, erregistrorako zerbait, ez ahaztu sarrera eta cert-kudeatzailea, nodo taldeak hautatu, sare-politikak gehitu, denboraldia. sysctl eta pod autoscaler ezarpenekin...

Erraza eta erosoa al da Kubernetes kluster bat prestatzea? Eragile gehigarria iragartzen du

Zeintzuk dira haiekin lan egitearen berezitasunak?

Praktikak erakusten duenez, gaia ez da instalazio bakarrera mugatzen. Klusterarekin eroso lan egiteko, gehigarriak eguneratu, desgaitu (klusterretik kendu) eta batzuk probatu nahi izango dituzu ekoizpen-klusterean instalatu aurretik.

Beraz, agian Ansible nahikoa izango da hemen? Agian. Baina Oro har, osagarri osoak ez dira ezarpenik gabe bizi. Ezarpen hauek kluster aldaeraren arabera desberdinak izan daitezke (aws, gce, azure, bare-metal, do, ...). Ezarpen batzuk ezin dira aldez aurretik zehaztu; clusterretik lortu behar dira. Eta clusterra ez da estatikoa: ezarpen batzuetarako aldaketak kontrolatu beharko dituzu. Eta hemen Ansible falta da jada: kluster batean bizi den programa bat behar duzu, hau da. Kubernetesen operadorea.

Lanean probatu zutenak shell-operadore, esango dute gehigarriak eta monitorizazio ezarpenak instalatzeko eta eguneratzeko zereginak guztiz konpondu daitezkeela erabiliz amuak shell-operadorearentzat. Baldintza bat egingo duen script bat idatz dezakezu kubectl apply eta monitorizatu, adibidez, ConfigMap, non ezarpenak gordeko diren. Hau da gutxi gorabehera addon-operator-en inplementatzen dena.

Nola antolatzen da hau gehigarri-operadorean?

Irtenbide berri bat sortzean, printzipio hauetatik abiatu ginen:

  • Gehigarrien instalatzaileak onartu behar du txantiloia eta konfigurazio deklaratiboa. Ez dugu gehigarriak instalatzen dituzten script magikorik egiten. Gehigarri-operadoreak Helm erabiltzen du gehigarriak instalatzeko. Instalatzeko, diagrama bat sortu eta konfiguraziorako erabiliko diren balioak hautatu behar dituzu.
  • Ezarpenak izan daitezke instalazioan sortu, ahal dute taldetik ateraEdo eguneraketak jaso, kluster baliabideen jarraipena. Eragiketa hauek kakoen bidez gauzatu daitezke.
  • Ezarpenak izan daitezke kluster batean gorde. Ezarpenak klusterrean gordetzeko, ConfigMap/addon-operator bat sortzen da eta Addon-operator-ek ConfigMap honen aldaketak kontrolatzen ditu. Gehigarri-operadoreak konbentzio errazak erabiliz ezarpenetarako sarbidea ematen die kakoei.
  • Gehitzea ezarpenen araberakoa da. Ezarpenak aldatu badira, Gehigarri-operadoreak Helm taula kaleratzen du balio berriekin. Helm grafikoaren konbinazioa, haren balioak eta modulu bat engantxatzea deitu genuen (ikus behean xehetasun gehiago lortzeko).
  • Eszenaraztea. Ez dago argitalpen magikorik. Eguneratze-mekanismoa ohiko aplikazio baten antzekoa da: bildu gehigarriak eta gehigarri-eragileak irudi batean, etiketatu eta zabaldu.
  • Emaitzen kontrola. Gehigarri-operadoreak Prometheus-en neurketak eman ditzake.

Zer da betegarria addon-operator-en?

Gehikuntza bat klusterari funtzio berriak gehitzen dizkion edozertzat har daiteke. Adibidez, Ingress instalatzea gehigarri baten adibide bikaina da. Hau bere CRD propioa duen edozein operadore edo kontrolatzaile izan daiteke: prometheus-operator, cert-manager, kube-controller-manager, etab. Edo zerbait txikia, baina erabiltzeko errazago; adibidez, kopiatzaile sekretua, erregistroko sekretuak izen-eremu berrietara kopiatzen dituena, edo sysctl tuner, nodo berrietan sysctl parametroak konfiguratzen dituena.

Gehigarriak ezartzeko, Addon-operator-ek hainbat kontzeptu eskaintzen ditu:

  • Helm taula klusterrean hainbat software instalatzeko erabiltzen da - adibidez, Prometheus, Grafana, nginx-ingress. Beharrezko osagaiak Helm diagrama bat badu, Addon-operator erabiliz instalatzea oso erraza izango da.
  • Balioen biltegiratzea. Helm-en diagramek denboran zehar alda daitezkeen ezarpen desberdinak izan ohi dituzte. Gehigarri-operadoreak ezarpen hauek gordetzea onartzen du eta haien aldaketak kontrola ditzake Helm diagrama balio berriekin berriro instalatzeko.
  • Amuak Gehigarri-operadoreak gertaeren gainean exekutatzen dituen fitxategi exekutagarriak dira eta balio-dendan sartzen diren fitxategiak dira. Amuak klusterreko aldaketak kontrola ditzake eta balioak dendako balioak eguneratu ditzake. Horiek. Amuak erabiliz, abiaraztean edo egutegi baten arabera klusterreko balioak biltzeko aurkikuntza egin dezakezu, edo etengabeko aurkikuntza egin dezakezu, klusterreko balioak bilduz klusterreko aldaketetan oinarrituta.
  • Modulua Helm grafiko baten, balio-denda baten eta kakoen konbinazioa da. Moduluak gaitu edo desgaitu daitezke. Modulu bat desgaitzeak Helm diagramen bertsio guztiak ezabatzea dakar. Moduluak modu dinamikoan gaitu daitezke, adibidez, behar dituen modulu guztiak gaituta badaude edo aurkikuntzak kakoetan beharrezko parametroak aurkitu baditu, gaitutako script laguntzaile bat erabiliz egiten da.
  • Amu globalak. Hauek "bere kabuz" amuak dira, ez daude moduluetan sartuta eta balio-denda global baterako sarbidea dute, horien balioak moduluetako amu guztientzat eskuragarri daude.

Nola funtzionatzen dute zati hauek elkarrekin? Ikus dezagun dokumentazioko argazkia:

Erraza eta erosoa al da Kubernetes kluster bat prestatzea? Eragile gehigarria iragartzen du

Bi lan agertoki daude:

  1. Hook globala gertaera batek abiarazten du; adibidez, klusterreko baliabide bat aldatzen denean. Kako honek aldaketak prozesatzen ditu eta balio berriak idazten ditu balio globalaren biltegian. Gehigarri-operadoreak biltegiratze globala aldatu dela ohartu eta modulu guztiak abiarazten ditu. Modulu bakoitzak, bere kakoen bidez, gaitu behar den ala ez zehazten du eta bere balio-denda eguneratzen du. Modulua gaituta badago, Gehigarri-operadoreak Helm diagramaren instalazioa hasiko du. Kasu honetan, Helm grafikoak modulu biltegiratzetik eta biltegiratze orokorretik balioetara sarbidea du.
  2. Bigarren eszenatokia sinpleagoa da: moduluaren kako bat gertaera batek abiarazten du eta balioak aldatzen ditu moduluaren balio-dendan. Gehigarri-operadoreak hori ohartu eta Helm diagrama abiarazten du balio eguneratuekin.

Gehitzea kako bakar gisa inplementa daiteke, edo Helm-en diagrama gisa, edo menpeko hainbat modulu gisa ere - hori klusterrean instalatzen ari den osagaiaren konplexutasunaren eta nahi den konfigurazio-malgutasunaren araberakoa da. Adibidez, biltegian (/adibideak) sysctl-tuner gehigarri bat dago, zeina modulu soil gisa inplementatzen dena kako batekin eta Helm diagrama batekin, eta balio-denda erabiliz, ezarpenak gehitzeko aukera ematen duena ConfigMap editatuz.

Eguneratzeen entrega

Addon-operator instalatzen dituen osagaien eguneraketak antolatzeari buruzko hitz batzuk.

Addon-operator kluster batean exekutatzeko, behar duzu gehigarriekin irudi bat eraiki Hook eta Helm diagrama fitxategien moduan, gehitu fitxategi bitar bat addon-operator eta kakoetarako behar duzun guztia: bash, kubectl, jq, python etab. Ondoren, irudi hau klusterera aplikazio arrunt gisa zabaldu daiteke, eta ziurrenik etiketa-eskema bat edo beste antolatu nahi izango duzu. Kluster gutxi badaude, aplikazioen ikuspegi bera egokia izan daiteke: bertsio berria, bertsio berria, joan kluster guztietara eta zuzendu Pods-en irudia. Hala ere, kluster kopuru esanguratsu batera zabaltzeko kasuan, kanal batetik autoeguneratzearen kontzeptua egokiagoa zen guretzat.

Hona hemen nola egiten dugun:

  • Kanal bat, funtsean, edozertan ezar daitekeen identifikatzaile bat da (adibidez, dev/stage/ea/stable).
  • Kanalaren izena irudiaren etiketa da. Kanal batean eguneratzeak zabaldu behar dituzunean, irudi berri bat muntatzen da eta kanalaren izenarekin etiketatzen da.
  • Erregistroan irudi berri bat agertzen denean, Addon-operator berrabiarazi eta irudi berriarekin abiarazten da.

Hau ez da praktikarik onena, idatzi bezala Kubernetesen dokumentazioa. Ez da gomendagarria hori egitea, baina horretaz ari gara kluster berean bizi den ohiko aplikazioa. Addon-operator-en kasuan, aplikazio bat klusterren artean sakabanatuta dagoen Inplementazio asko da, eta autoeguneratzeak asko laguntzen du eta bizitza errazten du.

Kanalak laguntzen eta probetan: kluster laguntzaile bat badago, kanalean konfigura dezakezu stage eta bidali eguneratzeak kanaletara zabaldu aurretik ea ΠΈ stable. Kanalean kluster batekin bada ea errore bat gertatu da, hona alda dezakezu stable, kluster honen arazoa ikertzen ari diren bitartean. Klusterra euskarri aktibotik kentzen bada, bere "izoztutako" kanalera aldatzen da - adibidez, freeze-2019-03-20.

Amuak eta Helm diagramak eguneratzeaz gain, baliteke behar izatea eguneratzea eta hirugarrenen osagaia. Adibidez, baldintzapeko nodo-esportatzailean akats bat nabaritu duzu eta nola adabakitu ere asmatu duzu. Ondoren, PR ireki duzu eta bertsio berria kluster guztiak igaro eta irudiaren bertsioa handitzeko zain zaude. Mugagabean itxaron ez dadin, zure nodo-esportatzailea eraiki dezakezu eta bertara aldatu PRa onartu aurretik.

Oro har, Addon-operator gabe egin daiteke, baina Addon-operator-ekin nodo-esportatzailea instalatzeko modulua biltegi batean ikusgai egongo da, zure irudia eraikitzeko Dockerfile-a bertan gorde daiteke, errazagoa da parte-hartzaile guztientzat. gertatzen dena ulertzeko prozesua... Eta hainbat kluster badaude, orduan errazagoa da zure PR probatzea eta bertsio berri bat zabaltzea!

Osagaien eguneratzearen antolaketa honek arrakastaz funtzionatzen du guretzat, baina beste edozein eskema egoki inplementa daiteke - azken finean kasu honetan Addon-operator fitxategi bitar soil bat da.

Ondorioa

Addon-operator-en inplementatutako printzipioei esker, gehigarriak sortzeko, probatzeko, instalatzeko eta eguneratzeko prozesu gardena eraiki dezakezu cluster batean, ohiko aplikazioen garapen prozesuen antzera.

Modulu formatuan (Helm diagrama + kakoak) Gehigarri-operadorearen gehigarriak publikoki eskuragarri egon daitezke. Guk, Flant enpresak, udan zehar gure garapenak horrelako gehigarri moduan argitaratzeko asmoa dugu. Batu garapenean GitHub-en (shell-operadore, gehigarri-eragile), saiatu zure gehiketa egiten oinarrituta adibide ΠΈ dokumentazioa, itxaron HabrΓ©-n eta gurean berriei YouTube kanala!

PS

Irakurri ere gure blogean:

Iturria: www.habr.com

Gehitu iruzkin berria