{"id":35226,"date":"2019-10-31T22:03:05","date_gmt":"2019-10-31T19:03:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\/"},"modified":"2019-10-31T22:03:05","modified_gmt":"2019-10-31T19:03:05","slug":"gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","title":{"rendered":"Sagatavot Kubernetes klasteri ir vienk\u0101r\u0161i un \u0113rti? Pazi\u0146ojam par addon-operatoru","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Sagatavot Kubernetes klasteri ir vienk\u0101r\u0161i un \u0113rti? Pazi\u0146ojam par addon-operatoru\" src=\"\/wp-content\/uploads\/8df3959f765d5d1bc8d427d3258aacc4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSekojot <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">. Izmantojot to, var \u0161o izveidot bez Go zin\u0101\u0161an\u0101m, bet ar administratoriem pierast\u0101m metod\u0113m: uz Bash, Python utt.<\/a><\/noindex> m\u0113s iepaz\u012bstin\u0101m ar t\u0101 vec\u0101ko br\u0101li \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>. Tas ir Open Source projekts, kas tiek izmantots sist\u0113mas komponentu instal\u0113\u0161anai Kubernetes klaster\u012b, ko var apz\u012bm\u0113t ar kop\u012bgu terminu \u2014 papildin\u0101jumi.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>K\u0101p\u0113c visp\u0101r nepiecie\u0161ami k\u0101di papildin\u0101jumi?<\/h2>\n<p>\nNav nosl\u0113pums, ka Kubernetes nav gatavs produktu komplekts viss-vien\u0101, un, lai izveidotu \u201cnopietnu\u201d klasteri, b\u016bs nepiecie\u0161ami da\u017e\u0101di papildin\u0101jumi. Addon-operator pal\u012bdz\u0113s instal\u0113t, konfigur\u0113t un uztur\u0113t \u0161os papildin\u0101jumus aktu\u0101l\u0101 st\u0101vokl\u012b.<\/p>\n<p>Papildu komponentu nepiecie\u0161am\u012bba klaster\u012b ir izkl\u0101st\u012bta <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">prezent\u0101cij\u0101<\/a><\/noindex> kol\u0113\u0123i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/driusha\/\" class=\"user_link\">driusha<\/a><\/noindex>. \u012asum\u0101, situ\u0101cija ar Kubernetes pa\u0161laik ir t\u0101da, ka vienk\u0101r\u0161ai instal\u0113\u0161anai \u201cpasp\u0113l\u0113ties\u201d var iztikt ar izejas komponentiem, izstr\u0101d\u0101t\u0101jiem un test\u0113\u0161anai var pievienot Ingress, bet, lai veiktu pilnv\u0113rt\u012bgu uzst\u0101d\u012b\u0161anu, par kuru var teikt \u201cj\u016bsu ra\u017eo\u0161anas vide ir gatava\u201d, nepiecie\u0161ams pievienot apm\u0113ram desmit da\u017e\u0101dus papildin\u0101jumus: kaut kas monitor\u0113\u0161anai, kaut kas \u017eurn\u0101liem, neaizmirstot par ingress un cert-manager, nodalot mezglu grupas, pievienot t\u012bkla politikas, k\u0101rtot ar sysctl iestat\u012bjumiem un pod autoscaler\u2019u\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Sagatavot Kubernetes klasteri ir vienk\u0101r\u0161i un \u0113rti? Pazi\u0146ojam par addon-operatoru\" src=\"\/wp-content\/uploads\/ab3bed8ee8b29d4e51905e45c908f078.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>K\u0101das ir to izmanto\u0161anas \u012bpatn\u012bbas?<\/h2>\n<p>\nK\u0101 r\u0101da pieredze, vien\u012bgi instal\u0101cija nav pietiekama. Lai \u0113rti str\u0101d\u0101tu ar klasteri, papildin\u0101jumus b\u016bs j\u0101atjaunina, j\u0101izsl\u0113dz (j\u0101m\u0113rina no klastera) un kaut ko var b\u016bt v\u0113l\u0113sities izm\u0113\u0123in\u0101t pirms instal\u0101cijas ra\u017eo\u0161anas klaster\u012b.<\/p>\n<p>T\u0101tad, varb\u016bt Ansible b\u016bs pietiekami? Varb\u016bt. Bet <b>pilnv\u0113rt\u012bgi papildin\u0101jumi parasti nevar dz\u012bvot bez iestat\u012bjumiem<\/b>\u0160ie iestat\u012bjumi var at\u0161\u0137irties atkar\u012bb\u0101 no klastera veida (aws, gce, azure, bare-metal, do, \u2026). Da\u017eus iestat\u012bjumus nevar noteikt iepriek\u0161 \u2014 tos j\u0101ieg\u016bst no klastera. Un klasteris nav statisks: da\u017eu iestat\u012bjumu izmai\u0146as b\u016bs j\u0101seko l\u012bdzi. \u0160aj\u0101 br\u012bd\u012b Ansible ir nepietiekams: nepiecie\u0161ama programma, kas darbojas klaster\u012b, t.i., Kubernetes Operators.<\/p>\n<p>Tie, kas ir m\u0113\u0123in\u0101ju\u0161i darb\u0101 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">. Izmantojot to, var \u0161o izveidot bez Go zin\u0101\u0161an\u0101m, bet ar administratoriem pierast\u0101m metod\u0113m: uz Bash, Python utt.<\/a><\/noindex>, teiks, ka papildin\u0101jumu uzst\u0101d\u012b\u0161anas un atjaunin\u0101\u0161anas uzdevumus un iestat\u012bjumu uzraudz\u012bbu var diezgan labi atrisin\u0101t ar <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\/blob\/master\/HOOKS.md\">hooku<\/a><\/noindex> shell-operator. Var uzrakst\u012bt skriptu, kas dar\u012bs nosac\u012btu <code>kubectl apply<\/code> un uzraudz\u012bs, piem\u0113ram, ConfigMap, kur\u0101 tiks glab\u0101ti iestat\u012bjumi. Aptuveni tas ir \u012bstenots addon-operator.<\/p>\n<h2>K\u0101 tas organiz\u0113ts addon-operator?<\/h2>\n<p>\nIzstr\u0101d\u0101jot jaunu risin\u0101jumu, m\u0113s izvirz\u012bj\u0101m \u0161\u0101dus principus:<\/p>\n<ul>\n<li> Papildin\u0101jumu uzst\u0101d\u012bt\u0101jam j\u0101atbalsta <b>\u0161abloniz\u0101cija un deklarat\u012bv\u0101 konfigur\u0101cija<\/b>. M\u0113s neveidojam ma\u0123iskas skriptus, kas instal\u0113 papla\u0161in\u0101jumus. Addon-operator izmanto Helm, lai instal\u0113tu papla\u0161in\u0101jumus. Lai uzst\u0101d\u012btu, ir j\u0101izveido charts un j\u0101piek\u0101rto v\u0113rt\u012bbas, kas tiks izmantotas konfigur\u0113\u0161anai. <\/li>\n<li> Iestat\u012bjumus var <b>\u0123ener\u0113t uzst\u0101d\u012b\u0161anas laik\u0101<\/b>, tos var <b>ieg\u016bt no klastera<\/b>, vai <b>sa\u0146emt atjaunin\u0101jumus<\/b>, uzraugot klastera resursus. \u0160\u012bs darb\u012bbas var \u012bstenot, izmantojot hookus.<\/li>\n<li> Iestat\u012bjumus var <b>glab\u0101t klaster\u012b<\/b>. Lai saglab\u0101tu iestat\u012bjumus klaster\u012b, tiek izveidots ConfigMap\/addon-operator, un Addon-operator uzrauga \u0161\u012b ConfigMap izmai\u0146as. Addon-operator pie\u0161\u0137ir hookiem piek\u013cuvi iestat\u012bjumiem, izmantojot vienk\u0101r\u0161as vieno\u0161an\u0101s.<\/li>\n<li> <b>Papla\u0161in\u0101jums ir atkar\u012bgs no iestat\u012bjumiem<\/b>. Ja iestat\u012bjumi main\u0101s, tad Addon-operator ievie\u0161 Helm-chart ar jaun\u0101m v\u0113rt\u012bb\u0101m. Helm-charta, v\u0113rt\u012bbu tam un hooku apvieno\u0161anai m\u0113s saucam par moduli (lasiet pla\u0161\u0101k zem\u0101k).<\/li>\n<li> <b>Posm\u0101<\/b>. Nav ma\u0123isku izlaides skriptu. Atjaunin\u0101\u0161anas meh\u0101nisms ir l\u012bdz\u012bgs parastam lietojumam \u2014 apkopot papla\u0161in\u0101jumus un addon-operatoru att\u0113l\u0101, pieg\u0101d\u0101t un izlaist.<\/li>\n<li> <b>Rezult\u0101ta kontrole<\/b>. Addon-operator sp\u0113j sniegt metriku Prometheus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kas ir papla\u0161in\u0101jums addon-operator?<\/h2>\n<p>\nPapla\u0161in\u0101jumu var uzskat\u012bt par visu, kas pievieno klasterim jaunas funkcionalit\u0101tes. Piem\u0113ram, Ingress uzst\u0101d\u012b\u0161ana ir lielisks papla\u0161in\u0101juma piem\u0113rs. Tas var b\u016bt jebkur\u0161 operators vai kontrolieris ar savu CRD: prometheus-operator, cert-manager, kube-controller-manager utt. Vai kaut kas mazs, bet atvieglojo\u0161s darb\u012bbu \u2014 piem\u0113ram, slepeno datu kop\u0113t\u0101js, kas kop\u0113 re\u0123istra slepen\u0101s datu uz jauniem nosaukuma ier\u0101m\u0113m, vai sysctl tuner, kas nosaka sysctl parametrus uz jaunajiem mezgliem.<\/p>\n<p>Papla\u0161in\u0101jumu \u012bsteno\u0161anai Addon-operator pied\u0101v\u0101 vair\u0101kas koncepcijas:<\/p>\n<ul>\n<li> <b>Helm-chart<\/b> tiek izmantots, lai instal\u0113tu klaster\u012b da\u017e\u0101du programmat\u016bru \u2014 piem\u0113ram, Prometheus, Grafana, nginx-ingress. Ja attiec\u012bgajam komponentam ir Helm-chart, tad t\u0101 uzst\u0101d\u012b\u0161ana, izmantojot Addon-operator, b\u016bs \u013coti vienk\u0101r\u0161a.<\/li>\n<li> <b>V\u0113rt\u012bbu kr\u0101tuve<\/b>. Helm-chartiem parasti ir daudz da\u017e\u0101du iestat\u012bjumu, kas var main\u012bties ar laiku. Addon-operator atbalsta \u0161o iestat\u012bjumu glab\u0101\u0161anu un sp\u0113j sekot to izmai\u0146\u0101m, lai atjaunotu Helm-chart ar jaun\u0101m v\u0113rt\u012bb\u0101m.<\/li>\n<li> <b>Hooki<\/b> \u2014 ir izpild\u0101mi faili, kurus Addon-operator izpilda notikumu rezult\u0101t\u0101 un kuriem ir piek\u013cuve v\u0113rt\u012bbu kr\u0101tuv\u0113m. Hooks var uzraudz\u012bt izmai\u0146as klaster\u012b un atjaunin\u0101t v\u0113rt\u012bbas v\u0113rt\u012bbu kr\u0101tuv\u0113. T.i., izmantojot hookus, var veikt discovery, lai v\u0101ktu v\u0113rt\u012bbas no klastera palai\u0161anas vai p\u0113c grafika, k\u0101 ar\u012b nep\u0101rtrauktu discovery, v\u0101cot v\u0113rt\u012bbas no klastera, rea\u0123\u0113jot uz izmai\u0146\u0101m klaster\u012b.<\/li>\n<li> <b>Modulis<\/b> \u2014 ir Helm grafika, v\u0113rt\u012bbu kr\u0101tuves un hooku apvienojums. Modu\u013cus var iesl\u0113gt un izsl\u0113gt. Modu\u013ca izsl\u0113g\u0161ana noz\u012bm\u0113 visu Helm grafika rel\u012b\u017eu no\u0146em\u0161anu. Modu\u013ci var autom\u0101tiski iek\u013caut sevi, piem\u0113ram, ja ir iesl\u0113gti visi nepiecie\u0161amie modu\u013ci vai ja discovery hookos ir atrasti vajadz\u012bgie parametri \u2014 tas tiek veikts ar pal\u012bgskopu enabled skriptu.<\/li>\n<li> <b>Glob\u0101lie hooki<\/b>. Tie ir hooki \u201epa\u0161i par sevi\u201d, tie nav iek\u013cauti modul\u012b un tiem ir piek\u013cuve glob\u0101lajai v\u0113rt\u012bbu kr\u0101tuvei, kuras v\u0113rt\u012bbas ir pieejamas visiem hookiem modul\u012b.<\/li>\n<\/ul>\n<p>\nK\u0101 \u0161\u012bs da\u013cas darbojas kop\u0101? Apskat\u012bsim att\u0113lu no dokument\u0101cijas:<\/p>\n<p><img decoding=\"async\" alt=\"Sagatavot Kubernetes klasteri ir vienk\u0101r\u0161i un \u0113rti? Pazi\u0146ojam par addon-operatoru\" src=\"\/wp-content\/uploads\/c9bb8e5ae78aa5df0d6c4fbf353e4236.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDarba scen\u0101riji ir divi:<\/p>\n<ol>\n<li> Glob\u0101lais hook tiek aktiviz\u0113ts notikuma rezult\u0101t\u0101 \u2014 piem\u0113ram, mainoties resursam klaster\u012b. \u0160is hook apstr\u0101d\u0101 izmai\u0146as un ieraksta jaunas v\u0113rt\u012bbas glob\u0101laj\u0101 v\u0113rt\u012bbu kr\u0101tuv\u0113. Addon-operator paman\u012bs, ka glob\u0101l\u0101 kr\u0101tuve ir main\u012bjusies, un aktiviz\u0113s visus modu\u013cus. Katrs modulis, izmantojot savus hookus, nosaka, vai tam ir j\u0101iesl\u0113dzas, un atjaunina savu v\u0113rt\u012bbu kr\u0101tuvi. Ja modulis ir iesl\u0113gts, tad Addon-operator uzs\u0101k Helm grafika uzst\u0101d\u012b\u0161anu. Helm grafik\u0101 \u0161aj\u0101 proces\u0101 ir pieejamas v\u0113rt\u012bbas no modu\u013ca kr\u0101tuves un no glob\u0101l\u0101s kr\u0101tuves.<\/li>\n<li> Otrais scen\u0101rijs ir vienk\u0101r\u0161\u0101ks: modul\u0101rais hook tiek aktiviz\u0113ts notikuma rezult\u0101t\u0101 un maina v\u0113rt\u012bbas modul\u012b eso\u0161aj\u0101 v\u0113rt\u012bbu kr\u0101tuv\u0113. Addon-operator to paman\u012bs un uzs\u0101ks Helm grafika uzst\u0101d\u012b\u0161anu ar atjaunin\u0101taj\u0101m v\u0113rt\u012bb\u0101m.<\/li>\n<\/ol>\n<p>\nPapildin\u0101jums var tikt \u012bstenots k\u0101 viens vien\u012bgs hook vai k\u0101 viens Helm grafiks, vai <b>pat k\u0101 vair\u0101ki atkar\u012bgi modu\u013ci<\/b> \u2014 tas ir atkar\u012bgs no uzst\u0101d\u0101m\u0101 komponenta sare\u017e\u0123\u012bt\u012bbas klaster\u012b un nepiecie\u0161am\u0101 piel\u0101gojamo iestat\u012bjumu l\u012bme\u0146a. Piem\u0113ram, repozitorij\u0101 (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">\/examples<\/a><\/noindex>) ir papildin\u0101jums sysctl-tuner, kas \u012bstenots gan k\u0101 vienk\u0101r\u0161s modulis ar hooku un Helm grafiku, gan, izmantojot v\u0113rt\u012bbu kr\u0101tuvi, kas \u013cauj pievienot iestat\u012bjumus, redi\u0123\u0113jot ConfigMap.<\/p>\n<h2>Atjaunin\u0101jumu pieg\u0101de<\/h2>\n<p>\nDa\u017ei v\u0101rdi par komponentu atjaunin\u0101\u0161anas organiz\u0101ciju, kuras instal\u0113 Addon-operator.<\/p>\n<p>Lai palaistu Addon-operator klaster\u012b, ir nepiecie\u0161ams <b>sagatavot att\u0113lu ar papildin\u0101jumiem<\/b> k\u0101 skriptu un Helm chartu failus, pievienot bin\u0101ro failu <code>addon-operator<\/code> un visu p\u0101r\u0113jo, kas nepiecie\u0161ams skriptiem: <code>bash<\/code>, <code>kubectl<\/code>, <code>jq<\/code>, <code>python<\/code> utt. P\u0113c tam \u0161o att\u0113lu var izvietot klaster\u012b k\u0101 parastu lietotni un, iesp\u0113jams, v\u0113l\u0113sities organiz\u0113t k\u0101du tago\u0161anas sh\u0113mu. Ja klasteru ir maz, var izdoties izmantot to pa\u0161u pieeju k\u0101 ar lietotn\u0113m: jauns izlaidums, jauna versija, doties cauri visiem klasteriem un labot att\u0113lu Pod\u2019iem. Tom\u0113r, ja ir j\u0101uzs\u0101k liela skaita klasteri, vair\u0101k der\u0113s pa\u0161atjaunin\u0101\u0161anas koncepcija no kan\u0101la. <\/p>\n<p>Mums tas ir organiz\u0113ts \u0161\u0101di:<\/p>\n<ul>\n<li>Kan\u0101ls \u2014 b\u016bt\u012bb\u0101 tas ir identifikators, ko var defin\u0113t k\u0101 jebko (piem\u0113ram, dev\/stage\/ea\/stable).<\/li>\n<li>Kan\u0101la nosaukums \u2014 tas ir att\u0113la tags. Kad ir j\u0101sagatavo atjaunin\u0101jumi kan\u0101lam, tiek sagatavots jauns att\u0113ls un tas tiek mar\u0137\u0113ts ar kan\u0101la nosaukumu.<\/li>\n<li>Kad re\u0123istr\u0101 par\u0101d\u0101s jauns att\u0113ls, Addon-operator tiek p\u0101rstart\u0113ts un tiek palaists ar jauno att\u0113lu.<\/li>\n<\/ul>\n<p>\nTas nav lab\u0101kais praks\u0113, par ko ir rakst\u012bts <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/images\/#updating-images\">Kubernetes dokument\u0101cija<\/a><\/noindex>. T\u0101 dar\u012bt nav ieteicams, bet runa ir par <i>parastu lietotni, kas dz\u012bvo vien\u0101 klaster\u012b<\/i>. Pievienojot Addon-operator, lietotne ir daudzas izvietojumi, kas izklied\u0113ti pa klasteriem, un pa\u0161atjaunin\u0101\u0161ana \u013coti pal\u012bdz un vienk\u0101r\u0161o dz\u012bvi. <\/p>\n<p>Kan\u0101li pal\u012bdz ar\u012b <b>test\u0113\u0161an\u0101<\/b>: ja ir pal\u012bgklasteris, var to iestat\u012bt uz kan\u0101lu <code>stage<\/code> un test\u0113t atjaunin\u0101jumus taj\u0101 pirms to izlaides k\u0101d\u0101 no kan\u0101liem <code>ea<\/code> un <code>stable<\/code>. Ja ar klasteri kan\u0101l\u0101 <code>ea<\/code> notika k\u013c\u016bda, to var p\u0101rsl\u0113gt uz <code>stable<\/code>, kam\u0113r notiek probl\u0113mas izmekl\u0113\u0161ana ar \u0161o klasteri. Ja klasteris tiek izsl\u0113gts no akt\u012bv\u0101s atbalsta, tas tiek p\u0101rsl\u0113gts uz savu \"sasalsto\u0161o\" kan\u0101lu \u2014 piem\u0113ram, <code>freeze-2019-03-20<\/code>.<\/p>\n<p>Papildus skriptu un Helm chartu atjaunin\u0101jumiem var b\u016bt nepiecie\u0161ams <b>atjaunin\u0101t ar\u012b tre\u0161o pu\u0161u komponentu<\/b>. Piem\u0113ram, ja esat paman\u012bjis k\u013c\u016bdu nosac\u012btaj\u0101 node-exporter un pat esat izdom\u0101ju\u0161i, k\u0101 to salabot. P\u0113c tam atv\u0113ra PR un gaid\u0101t jauno izlaidumu, lai var\u0113tu apiet visus klasterus un palielin\u0101t att\u0113la versiju. Lai negaid\u012btu nenoteiktu laiku, varat sagatavot savu node-exporter un p\u0101rsl\u0113gties uz to l\u012bdz PR pie\u0146em\u0161anai.<\/p>\n<p>Lai gan to var izdar\u012bt ar\u012b bez Addon-operator, ar Addon-operator modulis node-exporter instal\u0113\u0161anai b\u016bs redzams vien\u0101 kr\u0101tuv\u0113, Dockerfile savam att\u0113lam var tur\u0113t tepat, un visiem procesa dal\u012bbniekiem k\u013c\u016bst viegl\u0101k saprast, kas notiek... Ja ir vair\u0101ki klasteri, p\u0101rbaud\u012bt savu PR un uzst\u0101d\u012bt jauno versiju k\u013c\u016bst viegl\u0101k!<\/p>\n<p>\u0160\u012b komponentu atjaunin\u0101\u0161anas organiz\u0101cija pie mums darbojas veiksm\u012bgi, bet var \u012bstenot ar\u012b jebkuru citu piem\u0113rotu sh\u0113mu \u2014 jo <b>\u0161aj\u0101 gad\u012bjum\u0101 Addon-operator ir vienk\u0101r\u0161s bin\u0101rais fails.<\/b>.<\/p>\n<h2>Secin\u0101jums<\/h2>\n<p>\nPrincipi, kas \u012bstenoti Addon-operator, \u013cauj izveidot caurredzamu procesu papildin\u0101jumu izstr\u0101d\u0113, test\u0113\u0161an\u0101, uzst\u0101d\u0113 un atjaunin\u0101\u0161an\u0101 klaster\u012b, l\u012bdz\u012bgu parast\u0101s lietojumprogrammu izstr\u0101des procesiem.<\/p>\n<p>Addon-operator papildin\u0101jumi modul\u0101ru form\u0101t\u0101 (Helm-chart + hooki) b\u016bs pieejami pla\u0161am lietot\u0101ju lokam. M\u0113s, uz\u0146\u0113mums Flant, pl\u0101nojam vasar\u0101 public\u0113t m\u016bsu izstr\u0101d\u0101jumus \u0161\u0101du papildin\u0101jumu veid\u0101. Pievienojieties att\u012bst\u012bbai GitHub (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">. Izmantojot to, var \u0161o izveidot bez Go zin\u0101\u0161an\u0101m, bet ar administratoriem pierast\u0101m metod\u0113m: uz Bash, Python utt.<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\"><b>addon-operator<\/b><\/a><\/noindex>), m\u0113\u0123iniet izveidot savu papildin\u0101jumu, balstoties uz <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">piem\u0113riem<\/a><\/noindex> un <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/blob\/master\/README.md\">dokument\u0101cij\u0101<\/a><\/noindex>, gaidiet zi\u0146as Habr\u0113 un m\u016bsu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/c\/%D0%A4%D0%BB%D0%B0%D0%BD%D1%82\">YouTube kan\u0101l\u0101<\/a><\/noindex>!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLasiet ar\u012b m\u016bsu emu\u0101ra rakstos:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Papla\u0161in\u0101m un papildin\u0101m Kubernetes (p\u0101rskats un video prezent\u0101cija)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">Iepaz\u012bstin\u0101m ar shell-operator: veidot operatorus Kubernetes tagad ir v\u0113l viegl\u0101k.<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u043b\u0435\u0434 \u0437\u0430 shell-operator \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0442\u0430 \u2014 addon-operator. \u042d\u0442\u043e Open Source-\u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f? \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e Kubernetes \u044d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0432\u0441\u0451-\u0432-\u043e\u0434\u043d\u043e\u043c, \u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0433\u043e\u00bb \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. Addon-operator \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35226","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0413\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e? \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c addon-operator | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:03:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:03:05+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Izveidot Kubernetes klasteri ir vienk\u0101r\u0161i un \u0113rti? Pazi\u0146ojam par addon-operator | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0413\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e? \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c addon-operator | ProHoster","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:03:05+00:00","article:modified_time":"2019-10-31T19:03:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35226","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 22:25:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:07:29","updated":"2026-01-21 22:25:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/35226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=35226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/35226\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=35226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=35226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=35226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}