Vai ir viegli un ērti sagatavot Kubernetes klasteru? Tiek paziņots par papildinājuma operatoru

Vai ir viegli un ērti sagatavot Kubernetes klasteru? Tiek paziņots par papildinājuma operatoru

Pēc čaulas operators mēs piedāvājam viņa vecāko brāli - papildinājumu operators. Šis ir atvērtā pirmkoda projekts, ko izmanto, lai instalētu sistēmas komponentus Kubernetes klasterī, ko var saukt par papildinājumiem.

Kāpēc vispār kādi papildinājumi?

Nav noslēpums, ka Kubernetes nav gatavs viss vienā produkts, un, lai izveidotu “pieaugušo” klasteru, jums būs nepieciešami dažādi papildinājumi. Addon-operator palīdzēs jums instalēt, konfigurēt un atjaunināt šos papildinājumus.

Nepieciešamība pēc papildu komponentiem klasterī ir atklāta Ziņot kolēģiem driusha. Īsāk sakot, situācija ar Kubernetes šobrīd ir tāda, ka vienkāršai “play around” instalācijai var iztikt ar komponentiem, kas izņemti no kastes, izstrādātājiem un testēšanai var pievienot Ingress, bet pilnai instalācijai, par kuru jūs varat teikt “jūsu produkcija ir gatava”, jums ir jāpievieno ducis dažādu papildinājumu: kaut kas uzraudzībai, kaut kas reģistrēšanai, neaizmirstiet ievadi un sertifikātu pārvaldnieku, atlasiet mezglu grupas, pievienojiet tīkla politikas, sezonu ar sysctl un pod autoscaler iestatījumiem...

Vai ir viegli un ērti sagatavot Kubernetes klasteru? Tiek paziņots par papildinājuma operatoru

Kāda ir darba specifika ar viņiem?

Kā liecina prakse, lieta neaprobežojas tikai ar vienu instalāciju. Lai ērti strādātu ar kopu, pievienojumprogrammas būs jāatjaunina, jāatspējo (jāizņem no klastera), un pirms to instalēšanas ražošanas klasterī vēlēsities dažus pārbaudīt.

Tātad, varbūt šeit pietiks ar Ansible? Var būt. Bet Kopumā pilnvērtīgi papildinājumi neiztiek bez iestatījumiem. Šie iestatījumi var atšķirties atkarībā no klastera varianta (aws, gce, debeszils, tukšs metāls, do, ...). Dažus iestatījumus nevar norādīt iepriekš, tie ir jāiegūst no klastera. Un klasteris nav statisks: dažiem iestatījumiem jums būs jāuzrauga izmaiņas. Un te jau Ansible pietrūkst: vajag programmu, kas dzīvo klasterī, t.i. Kubernetes operators.

Tie, kas to izmēģināja darbā čaulas operators, viņi teiks, ka pievienojumprogrammu un uzraudzības iestatījumu instalēšanas un atjaunināšanas uzdevumus var pilnībā atrisināt, izmantojot āķi čaulas operatoram. Varat uzrakstīt skriptu, kas izpildīs nosacījumu kubectl apply un uzraudzīt, piemēram, ConfigMap, kur tiks saglabāti iestatījumi. Tas ir aptuveni tas, kas tiek ieviests addon-operator.

Kā tas tiek organizēts papildinājumu operatorā?

Veidojot jaunu risinājumu, mēs balstījāmies uz šādiem principiem:

  • Papildinājuma instalētājam ir jāatbalsta veidņu un deklaratīvā konfigurācija. Mēs neveidojam burvju skriptus, kas instalē pievienojumprogrammas. Addon-operators pievienojumprogrammu instalēšanai izmanto Helm. Lai instalētu, jums ir jāizveido diagramma un jāizvēlas vērtības, kas tiks izmantotas konfigurēšanai.
  • Iestatījumi var būt ģenerēt instalēšanas laikā, viņi var iegūt no klasteraVai saņemt atjauninājumus, uzraugot klastera resursus. Šīs darbības var īstenot, izmantojot āķus.
  • Iestatījumi var būt uzglabāt klasterī. Lai saglabātu iestatījumus klasterī, tiek izveidots ConfigMap/addon-operators, un Addon-operators uzrauga šīs ConfigMap izmaiņas. Addon-operators nodrošina āķiem piekļuvi iestatījumiem, izmantojot vienkāršas konvencijas.
  • Papildinājums ir atkarīgs no iestatījumiem. Ja iestatījumi ir mainīti, Addon operators izlaiž Helm diagrammu ar jaunām vērtībām. Mēs nosaucām Helm diagrammas, tās vērtību un āķu kombināciju par moduli (sīkāku informāciju skatiet tālāk).
  • Iestudējums. Nav burvju izlaišanas skriptu. Atjaunināšanas mehānisms ir līdzīgs parastai lietojumprogrammai — savāc pievienojumprogrammas un papildinājumu operatorus attēlā, atzīmē tos un izlaiž tos.
  • Rezultātu kontrole. Addon-operators var nodrošināt Prometheus metriku.

Kas ir papildinājumu operatora polsterējums?

Par papildinājumu var uzskatīt visu, kas klasterim pievieno jaunas funkcijas. Piemēram, Ingress instalēšana ir lielisks papildinājuma piemērs. Tas var būt jebkurš operators vai kontrolieris ar savu CRD: prometheus-operator, cert-manager, kube-controller-manager utt. Vai kaut kas mazs, bet vieglāk lietojams - piemēram, slepenais kopētājs, kas kopē reģistra noslēpumus jaunās nosaukumvietās, vai sysctl uztvērējs, kas konfigurē sysctl parametrus jaunos mezglos.

Lai ieviestu papildinājumus, Addon-operator piedāvā vairākas koncepcijas:

  • Stūres diagramma izmanto, lai klasterī instalētu dažādas programmatūras - piemēram, Prometheus, Grafana, nginx-ingress. Ja nepieciešamajam komponentam ir Helm diagramma, tad tās instalēšana, izmantojot Addon-operator, būs ļoti vienkārša.
  • Vērtību glabāšana. Stūres diagrammām parasti ir daudz dažādu iestatījumu, kas laika gaitā var mainīties. Addon-operators atbalsta šo iestatījumu saglabāšanu un var pārraudzīt to izmaiņas, lai pārinstalētu Helm diagrammu ar jaunām vērtībām.
  • Āķi ir izpildāmi faili, kurus Addon operators palaiž notikumos un piekļūst vērtību krātuvei. Āķis var pārraudzīt izmaiņas klasterī un atjaunināt vērtības vērtību krātuvē. Tie. Izmantojot āķus, varat veikt atklāšanu, lai savāktu vērtības no klastera palaišanas laikā vai saskaņā ar grafiku, vai arī varat veikt nepārtrauktu atklāšanu, apkopojot vērtības no klastera, pamatojoties uz izmaiņām klasterī.
  • Modulis ir Helm diagrammas, vērtību krātuves un āķu kombinācija. Moduļus var iespējot vai atspējot. Moduļa atspējošana nozīmē visu Helm diagrammas izlaidumu dzēšanu. Moduļi var sevi iespējot dinamiski, piemēram, ja ir iespējoti visi nepieciešamie moduļi vai ja Discovery ir atradusi vajadzīgos parametrus āķos – tas tiek darīts, izmantojot iespējotu palīgskriptu.
  • Globālie āķi. Tie ir āķi “patstāvīgi”, tie nav iekļauti moduļos un tiem ir pieeja globālam vērtību krātuvei, kura vērtības ir pieejamas visiem moduļu āķiem.

Kā šīs daļas darbojas kopā? Apskatīsim attēlu no dokumentācijas:

Vai ir viegli un ērti sagatavot Kubernetes klasteru? Tiek paziņots par papildinājuma operatoru

Ir divi darba scenāriji:

  1. Globālo āķi aktivizē notikums, piemēram, kad mainās resurss klasterī. Šis āķis apstrādā izmaiņas un ieraksta jaunās vērtības globālajā vērtību krātuvē. Addon-operators pamana, ka globālā krātuve ir mainījusies, un sāk visus moduļus. Katrs modulis, izmantojot savus āķus, nosaka, vai tas ir jāiespējo, un atjaunina vērtību krātuvi. Ja modulis ir iespējots, Addon operators sāk Helm diagrammas instalēšanu. Šajā gadījumā Helm diagrammai ir piekļuve vērtībām no moduļa krātuves un no globālās krātuves.
  2. Otrais scenārijs ir vienkāršāks: moduļa āķis tiek aktivizēts notikuma rezultātā un maina vērtības moduļa vērtību krātuvē. Addon-operators to pamana un palaiž Helm diagrammu ar atjauninātām vērtībām.

Papildinājumu var īstenot kā vienu āķi vai kā vienu Helm diagrammu, vai pat kā vairāki atkarīgi moduļi - tas ir atkarīgs no klasterī instalējamā komponenta sarežģītības un no vēlamā konfigurācijas elastības līmeņa. Piemēram, repozitorijā (/piemēri) ir sysctl-tuner papildinājums, kas tiek realizēts gan kā vienkāršs modulis ar āķi un Helm diagrammu, gan izmantojot vērtību krātuvi, kas ļauj pievienot iestatījumus, rediģējot ConfigMap.

Atjauninājumu piegāde

Daži vārdi par komponentu atjauninājumu organizēšanu, ko instalē Addon-operator.

Lai klasterī palaistu Addon-operatoru, jums ir nepieciešams veidojiet attēlu ar papildinājumiem āķa un Helm diagrammas failu veidā pievienojiet bināro failu addon-operator un viss nepieciešamais āķiem: bash, kubectl, jq, python utt. Pēc tam šo attēlu var izvērst klasterī kā parastu lietojumprogrammu, un, visticamāk, jūs vēlēsities sakārtot vienu vai otru tagu piešķiršanas shēmu. Ja klasteru ir maz, var būt piemērota tāda pati pieeja kā lietojumprogrammām: jauns laidiens, jauna versija, pārejiet uz visiem klasteriem un labojiet Pods attēlu. Tomēr izlaišanas gadījumā ievērojamam skaitam klasteru mums piemērotāks bija pašatjaunināšanas no kanāla jēdziens.

Lūk, kā mēs to darām:

  • Kanāls būtībā ir identifikators, ko var iestatīt uz jebko (piemēram, dev/stage/ea/stable).
  • Kanāla nosaukums ir attēla atzīme. Kad jums ir jāizlaiž kanāla atjauninājumi, tiek izveidots jauns attēls un pievienots kanāla nosaukums.
  • Kad reģistrā parādās jauns attēls, Addon-operator tiek restartēts un palaists ar jauno attēlu.

Tā nav labākā prakse, kā rakstīts Kubernetes dokumentācija. Nav ieteicams to darīt, bet mēs runājam par parasta lietojumprogramma, kas dzīvo tajā pašā klasterī. Addon-operatora gadījumā lietojumprogramma ir daudz izvietojumu, kas izkaisīti pa klasteriem, un pašatjaunināšana ļoti palīdz un atvieglo dzīvi.

Kanāli palīdz un testēšanā: ja ir papildu klasteris, varat to konfigurēt kanālam stage un ievietojiet tajā atjauninājumus, pirms tos izlaižat kanālos ea и stable. Ja kanālā ir klasteris ea radās kļūda, varat to pārslēgt uz stable, kamēr tiek izmeklēta problēma ar šo kopu. Ja klasteris tiek izņemts no aktīvā atbalsta, tas pārslēdzas uz savu "iesaldēto" kanālu, piemēram, freeze-2019-03-20.

Papildus āķu un Helm diagrammu atjaunināšanai jums var būt nepieciešams atjauninājums un trešās puses komponents. Piemēram, jūs pamanījāt kļūdu nosacījuma mezgla eksportētājā un pat izdomājāt, kā to izlabot. Pēc tam jūs atvērāt PR un gaidāt, kamēr jaunais laidiens iziet cauri visām kopām un palielinās attēla versiju. Lai negaidītu bezgalīgi, pirms PR pieņemšanas varat izveidot savu mezglu-eksportētāju un pārslēgties uz to.

Kopumā to var izdarīt bez Addon-operatora, bet ar Addon-operator modulis node-exporter instalēšanai būs redzams vienā repozitorijā, Dockerfile attēla veidošanai var tikt glabāts tieši tur, tas kļūst vieglāk visiem programmas dalībniekiem. process, lai saprastu, kas notiek... Un, ja ir vairāki klasteri, tad kļūst vieglāk gan pārbaudīt savu PR, gan izlaist jaunu versiju!

Šāda komponentu atjaunināšanas organizācija mums darbojas veiksmīgi, taču var ieviest jebkuru citu piemērotu shēmu - galu galā šajā gadījumā Addon-operators ir vienkāršs binārs fails.

Secinājums

Addon-operator ieviestie principi ļauj izveidot caurspīdīgu procesu pievienojumprogrammu izveidei, testēšanai, instalēšanai un atjaunināšanai klasterī, līdzīgi kā parasto lietojumprogrammu izstrādes procesos.

Addon-operatora papildinājumi moduļa formātā (Stūres diagramma + āķi) var būt publiski pieejami. Mēs, uzņēmums Flant, plānojam vasaras laikā publicēt savus notikumus šādu papildinājumu veidā. Pievienojieties attīstībai vietnē GitHub (čaulas operators, papildinājumu operators), mēģiniet izveidot savu papildinājumu, pamatojoties uz piemēri и dokumentācija, gaidiet ziņas par Habré un mūsu YouTube kanāls!

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru