{"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\/ro\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","title":{"rendered":"Este simplu \u0219i convenabil s\u0103 preg\u0103te\u0219ti un cluster Kubernetes? Anun\u021b\u0103m addon-operator","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Este simplu \u0219i convenabil s\u0103 preg\u0103te\u0219ti un cluster Kubernetes? Anun\u021b\u0103m addon-operator\" src=\"\/wp-content\/uploads\/8df3959f765d5d1bc8d427d3258aacc4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDup\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">shell-operator<\/a><\/noindex> \u00eei prezent\u0103m fratele s\u0103u mai mare \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>. Acesta este un proiect Open Source, care este folosit pentru instalarea componentelor sistemului \u00een cluster-ul Kubernetes, pe care le putem numi \u00eentr-un cuv\u00e2nt comun \u2014 addon-uri.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>De ce avem nevoie de addon-uri?<\/h2>\n<p>\nNu este un secret c\u0103 Kubernetes nu este un produs gata preg\u0103tit, all-in-one, iar pentru construirea unui cluster \"matur\" sunt necesare diverse addon-uri. Addon-operator va ajuta la instalarea, configurarea \u0219i men\u021binerea acestor addon-uri actualizate.<\/p>\n<p>Nevoia de componente suplimentare \u00een cluster este discutat\u0103 \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">raportul<\/a><\/noindex> colegilor <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/driusha\/\" class=\"user_link\">driusha<\/a><\/noindex>. Pe scurt, situa\u021bia cu Kubernetes \u00een acest moment este c\u0103 pentru o instalare simpl\u0103, pentru a \"experimentat\", po\u021bi folosi componentele din cutie, pentru dezvoltatori \u0219i testare po\u021bi ad\u0103uga Ingress, dar pentru o instalare complet\u0103, despre care putem spune c\u0103 \"produc\u021bia ta este gata\", este necesar s\u0103 adaugi o duzin\u0103 de addon-uri diferite: ceva pentru monitorizare, ceva pentru jurnale, s\u0103 nu uit\u0103m de ingress \u0219i cert-manager, s\u0103 aloc\u0103m grupuri de noduri, s\u0103 ad\u0103ug\u0103m politici de re\u021bea, s\u0103 condiment\u0103m cu set\u0103ri sysctl \u0219i pod autoscaler\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Este simplu \u0219i convenabil s\u0103 preg\u0103te\u0219ti un cluster Kubernetes? Anun\u021b\u0103m addon-operator\" src=\"\/wp-content\/uploads\/ab3bed8ee8b29d4e51905e45c908f078.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Care este specificul lucrului cu ele?<\/h2>\n<p>\nDup\u0103 cum arat\u0103 practica, instalarea singur\u0103 nu este suficient\u0103. Pentru a lucra confortabil cu cluster-ul, addon-urile trebuie actualizate, dezactivate (eliminate din cluster), iar unele vor trebui testate \u00eenainte de a fi instalate \u00een cluster-ul de produc\u021bie.<\/p>\n<p>Deci, poate c\u0103 aici ar fi suficient Ansible? Posibil. Dar <b>addon-urile complete, \u00een general, nu func\u021bioneaz\u0103 f\u0103r\u0103 configura\u021bii<\/b>. Aceste set\u0103ri pot varia \u00een func\u021bie de tipul de cluster (aws, gce, azure, bare-metal, do, &#8230;). Anumite set\u0103ri nu pot fi precizate dinainte \u2014 acestea trebuie ob\u021binute din cluster. Iar clusterul nu este static: pentru unele set\u0103ri va fi necesar\u0103 monitorizarea modific\u0103rilor. Aici Ansible nu este suficient: este nevoie de un program care s\u0103 ruleze \u00een cluster, adic\u0103 un Kubernetes Operator.<\/p>\n<p>Cei care au \u00eencercat \u00een practic\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, vor spune c\u0103 sarcinile de instalare \u0219i actualizare a addon-urilor \u0219i de urm\u0103rire a configura\u021biilor pot fi, de fapt, rezolvate cu ajutorul <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\/blob\/master\/HOOKS.md\">hook-urilor<\/a><\/noindex> pentru shell-operator. Po\u021bi scrie un script care va face un fel de <code>kubectl apply<\/code> \u0219i va urm\u0103ri, de exemplu, ConfigMap-ul, unde vor fi stocate configura\u021biile. Aproape asta este implementat \u00een addon-operator.<\/p>\n<h2>Cum este organizat \u00een addon-operator?<\/h2>\n<p>\nCre\u00e2nd o nou\u0103 solu\u021bie, ne-am bazat pe urm\u0103toarele principii:<\/p>\n<ul>\n<li> Instalatorul de addon-uri trebuie s\u0103 suport\u0103 <b>\u0219abloane \u0219i configura\u021bie declarativ\u0103<\/b>. Nu cre\u0103m scripturi magice care instaleaz\u0103 addon-uri. Addon-operator folose\u0219te Helm pentru instalarea addon-urilor. Pentru instalare, trebuie s\u0103 crea\u021bi un chart \u0219i s\u0103 defini\u021bi valori care vor fi utilizate pentru configurare. <\/li>\n<li> Set\u0103rile pot fi <b>generate la instalare<\/b>, pot fi <b>ob\u021binute din cluster<\/b>, sau <b>ob\u021bine actualiz\u0103ri<\/b>, monitoriz\u00e2nd resursele cluster-ului. Aceste opera\u021biuni pot fi realizate cu ajutorul hook-urilor.<\/li>\n<li> Set\u0103rile pot fi <b>stocate \u00een cluster<\/b>. Pentru a stoca set\u0103rile \u00een cluster, se creeaz\u0103 ConfigMap\/addon-operator, iar Addon-operator monitorizeaz\u0103 modific\u0103rile acestui ConfigMap. Addon-operator ofer\u0103 hook-urilor acces la set\u0103ri prin conven\u021bii simple.<\/li>\n<li> <b>Addon-ul depinde de set\u0103ri<\/b>. Dac\u0103 set\u0103rile s-au schimbat, Addon-operator desface Helm-chart cu noile valori. Combinarea Helm-chart-ului, valorilor pentru acesta \u0219i hook-urilor le-am numit modul (mai multe detalii mai jos).<\/li>\n<li> <b>Stage-izare<\/b>. Nu exist\u0103 scripturi magice de lansare. Mecanismul de actualizare este similar cu o aplica\u021bie obi\u0219nuit\u0103 \u2014 s\u0103 construim addon-urile \u0219i addon-operatorul \u00eentr-un imagine, etichet\u0103m \u0219i lans\u0103m.<\/li>\n<li> <b>Controlul rezultatelor<\/b>. Addon-operator poate oferi metrici pentru Prometheus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ce este un addon \u00een addon-operator?<\/h2>\n<p>\nUn addon poate fi considerat tot ceea ce adaug\u0103 func\u021bii noi \u00een cluster. De exemplu, instalarea Ingress - un exemplu excelent de addon. Poate fi orice operator sau controler cu propriul s\u0103u CRD: prometheus-operator, cert-manager, kube-controller-manager etc. Sau ceva mai mic, dar care simplific\u0103 opera\u021biunile - de exemplu, secret copier, care copiaz\u0103 secretele registry \u00een noi spa\u021bii de nume, sau sysctl tuner, care configureaz\u0103 parametrii sysctl pe noi noduri.<\/p>\n<p>Pentru a implementa addon-uri, Addon-operator ofer\u0103 c\u00e2teva concepte:<\/p>\n<ul>\n<li> <b>Helm-chart<\/b> este folosit pentru a instala diverse software \u00een cluster \u2014 de exemplu, Prometheus, Grafana, nginx-ingress. Dac\u0103 componenta necesar\u0103 are un Helm-chart, va fi foarte simplu s\u0103-l instala\u021bi cu Addon-operator.<\/li>\n<li> <b>Depozitul de valori<\/b>. Helm-charts au de obicei multe set\u0103ri diferite, care pot varia \u00een timp. Addon-operator suport\u0103 stocarea acestor set\u0103ri \u0219i poate monitoriza modific\u0103rile pentru a reinstala Helm-chart-ul cu noile valori.<\/li>\n<li> <b>Hook-uri<\/b> \u2014 sunt fi\u0219iere executabile pe care Addon-operator le ruleaz\u0103 la evenimente \u0219i care au acces la depozitul de valori. Hook-ul poate monitoriza modific\u0103rile din cluster \u0219i actualiza valorile din depozitul de valori. Asta \u00eenseamn\u0103 c\u0103, cu ajutorul hook-urilor, se poate realiza un discovery pentru a colecta valori din cluster la pornire sau conform unui program, sau se poate realiza un discovery continuu, colect\u00e2nd valori din cluster pe baza modific\u0103rilor din cluster.<\/li>\n<li> <b>Modulul<\/b> \u2014 este o combina\u021bie de chart Helm, depozit de valori \u0219i hook-uri. Modulele pot fi activate sau dezactivate. Dezactivarea unui modul const\u0103 \u00een eliminarea tuturor eliber\u0103rilor chart-ului Helm. Modulele se pot include dinamic, de exemplu, dac\u0103 toate modulele necesare sunt activate sau dac\u0103 discovery-ul din hook-uri a g\u0103sit parametrii necesari \u2014 acest lucru se face cu ajutorul unui script auxiliary enabled.<\/li>\n<li> <b>Hook-uri globale<\/b>. Acestea sunt hook-uri \u201ede sine st\u0103t\u0103toare\u201d, nu sunt incluse \u00een module \u0219i au acces la depozitul global de valori, ale c\u0103ror valori sunt accesibile tuturor hook-urilor din module.<\/li>\n<\/ul>\n<p>\nCum func\u021bioneaz\u0103 aceste p\u0103r\u021bi \u00eempreun\u0103? S\u0103 ne uit\u0103m la imaginea din documenta\u021bie:<\/p>\n<p><img decoding=\"async\" alt=\"Este simplu \u0219i convenabil s\u0103 preg\u0103te\u0219ti un cluster Kubernetes? Anun\u021b\u0103m addon-operator\" src=\"\/wp-content\/uploads\/c9bb8e5ae78aa5df0d6c4fbf353e4236.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExist\u0103 dou\u0103 scenarii de lucru:<\/p>\n<ol>\n<li> Hook-ul global este d\u00e9clan\u0219at de un eveniment \u2014 de exemplu, la modificarea unei resurse din cluster. Acest hook proceseaz\u0103 modific\u0103rile \u0219i scrie noi valori \u00een depozitul global de valori. Addon-operator observ\u0103 c\u0103 depozitul global a fost modificat \u0219i declan\u0219eaz\u0103 toate modulele. Fiecare modul, prin hook-urile sale, stabile\u0219te dac\u0103 trebuie s\u0103 se activeze \u0219i \u00ee\u0219i actualizeaz\u0103 propria depozit de valori. Dac\u0103 modulul este activat, atunci Addon-operator \u00eencepe instalarea chart-ului Helm. Chart-ului Helm \u00eei sunt disponibile valorile din depozitul modulului \u0219i din depozitul global.<\/li>\n<li> Al doilea scenariu este mai simplu: hook-ul modular este d\u00e9clan\u0219at de un eveniment \u0219i modific\u0103 valorile din depozitul de valori al modulului. Addon-operator observ\u0103 acest lucru \u0219i lanseaz\u0103 chart-ul Helm cu valorile actualizate.<\/li>\n<\/ol>\n<p>\nUn addon poate fi implementat ca un singur hook sau ca un chart Helm, sau <b>chiar ca mai multe module dependente.<\/b> \u2014 depinde de complexitatea componentei instalate \u00een cluster \u0219i de nivelul necesar de flexibilitate a set\u0103rilor. De exemplu, \u00een repository-ul (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">\/examples<\/a><\/noindex>) exist\u0103 addon-ul sysctl-tuner, care este implementat at\u00e2t ca un modul simplu cu un hook \u0219i chart Helm, c\u00e2t \u0219i utiliz\u00e2nd depozitul de valori, ceea ce ofer\u0103 posibilitatea de a ad\u0103uga set\u0103ri prin editarea ConfigMap-ului.<\/p>\n<h2>Livrarea actualiz\u0103rilor<\/h2>\n<p>\nC\u00e2teva cuvinte despre organizarea actualiz\u0103rilor componentelor pe care le instaleaz\u0103 Addon-operator.<\/p>\n<p>Pentru a lansa Addon-operator \u00een cluster, trebuie <b>s\u0103 construie\u0219ti o imagine cu ad\u0103ugiri<\/b> sub form\u0103 de fi\u0219iere hook \u0219i chart-uri Helm, s\u0103 adaugi fi\u0219ierul binar <code>addon-operator<\/code> \u0219i tot ce este necesar pentru hooks: <code>bash<\/code>, <code>kubectl<\/code>, <code>jq<\/code>, <code>python<\/code> etc. Apoi, aceast\u0103 imagine poate fi lansat\u0103 \u00een cluster ca o aplica\u021bie obi\u0219nuit\u0103 \u0219i, cel mai probabil, vei dori s\u0103 organizezi un anumit sistem de etichetare. Dac\u0103 exist\u0103 pu\u021bine clustere, acela\u0219i abordare ca \u0219i cu aplica\u021biile ar putea func\u021biona: nou\u0103 versiune, nou\u0103 versiune, s\u0103 mergi prin toate clusterele \u0219i s\u0103 modifici imaginea Pod-urilor. Totu\u0219i, \u00een cazul lans\u0103rii pe un num\u0103r considerabil de clustere, ne-a fost mai util\u0103 concep\u021bia de auto-actualizare din canal. <\/p>\n<p>La noi, este organizat astfel:<\/p>\n<ul>\n<li>Canalul este, \u00een esen\u021b\u0103, un identificator, care poate fi setat la orice (de exemplu, dev\/stage\/ea\/stable).<\/li>\n<li>Numele canalului este eticheta imaginii. C\u00e2nd trebuie s\u0103 lansezi actualiz\u0103ri \u00een canal, se construie\u0219te o nou\u0103 imagine \u0219i se eticheteaz\u0103 cu numele canalului.<\/li>\n<li>C\u00e2nd o nou\u0103 imagine apare \u00een registry, Addon-operator se restarteaz\u0103 \u0219i porne\u0219te cu noua imagine.<\/li>\n<\/ul>\n<p>\nAceasta nu este cea mai bun\u0103 practic\u0103, a\u0219a cum este men\u021bionat \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/images\/#updating-images\">documenta\u021bia Kubernetes<\/a><\/noindex>. A\u0219a ceva nu este recomandat, dar este vorba despre <i>o aplica\u021bie obi\u0219nuit\u0103, care tr\u0103ie\u0219te \u00eentr-un singur cluster<\/i>. \u00cen cazul Addon-operator, aplica\u021bia este un num\u0103r mare de Deployments, dispersate prin clustere, iar auto-actualizarea ajut\u0103 foarte mult \u0219i simplific\u0103 via\u021ba. <\/p>\n<p>Canalele ajut\u0103 \u0219i <b>\u00een testare<\/b>: dac\u0103 exist\u0103 un cluster auxiliar, acesta poate fi configurat pentru canalul <code>stage<\/code> \u0219i po\u021bi rula actualiz\u0103ri \u00een el \u00eenainte de a le lansa \u00een canalele <code>ea<\/code> \u0219i <code>stable<\/code>. Dac\u0103 a ap\u0103rut o eroare cu clusterul pe canal, acesta poate fi schimbat pe <code>ea<\/code> , \u00een timp ce se investigheaz\u0103 problema cu acest cluster. Dac\u0103 clusterul este scos din suport activ, acesta este schimbat pe canalul s\u0103u '\u00eenghe\u021bat' \u2014 de exemplu, <code>stable<\/code>freeze-2019-03-20 <code>Pe l\u00e2ng\u0103 actualiz\u0103rile hooks \u0219i chart-uri Helm, este posibil s\u0103 fie necesar<\/code>.<\/p>\n<p>s\u0103 actualizezi \u0219i un component extern <b>. De exemplu, ai observat o eroare \u00een node-exporter \u0219i chiar ai g\u0103sit o solu\u021bie pentru a-l patch-ui. Apoi, ai deschis un PR \u0219i a\u0219tep\u021bi o nou\u0103 lansare pentru a merge prin toate clusterele \u0219i a cre\u0219te versiunea imaginii. Pentru a nu a\u0219tepta o perioad\u0103 nedeterminat\u0103, po\u021bi construi propriul node-exporter \u0219i s\u0103 treci pe el p\u00e2n\u0103 la aprobarea PR-ului.<\/b>. De exemplu, ai observat o eroare \u00een node-exporter \u0219i chiar ai g\u0103sit o modalitate de a o corecta. Apoi, ai deschis un PR \u0219i a\u0219tep\u021bi o nou\u0103 versiune pentru a trece prin toate clusterele \u0219i a actualiza versiunea imaginii. Pentru a nu a\u0219tepta o perioad\u0103 nedeterminat\u0103, po\u021bi s\u0103-\u021bi compilezi propriul node-exporter \u0219i s\u0103 te schimbi pe el p\u00e2n\u0103 la acceptarea PR-ului.<\/p>\n<p>\u00cen general, este posibil \u0219i f\u0103r\u0103 Addon-operator, dar cu Addon-operator, modulul pentru instalarea node-exporter va fi vizibil \u00eentr-un singur depozit, Dockerfile-ul pentru construirea propriei imagini poate fi p\u0103strat aici, astfel fiind mai u\u0219or pentru to\u021bi participan\u021bii s\u0103 \u00een\u021beleag\u0103 ce se \u00eent\u00e2mpl\u0103... Iar dac\u0103 sunt mai multe clustere, devine mai u\u0219or at\u00e2t s\u0103 testezi PR-ul t\u0103u, c\u00e2t \u0219i s\u0103 aplici o nou\u0103 versiune!<\/p>\n<p>Aceast\u0103 organiza\u021bie de actualizare a componentelor func\u021bioneaz\u0103 cu succes pentru noi, dar poate fi implementat\u0103 orice alt\u0103 schem\u0103 potrivit\u0103 \u2014 pentru c\u0103 <b>\u00een acest caz, Addon-operator este un simplu fi\u0219ier binar<\/b>.<\/p>\n<h2>Concluzie<\/h2>\n<p>\nPrincipiile implementate \u00een Addon-operator permit construirea unui proces transparent de creare, testare, instalare \u0219i actualizare a extensiilor \u00een cluster, similar proceselor de dezvoltare a aplica\u021biilor obi\u0219nuite.<\/p>\n<p>Extensiile pentru Addon-operator \u00een format de module (Helm-chart + hooks) pot fi publicate \u00een acces larg. Noi, compania Flant, planific\u0103m s\u0103 public\u0103m pe parcursul verii rezultatele noastre sub form\u0103 de astfel de extensii. Al\u0103tura\u021bi-v\u0103 dezvolt\u0103rii pe GitHub (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\"><b>addon-operator<\/b><\/a><\/noindex>), \u00eencerca\u021bi s\u0103 crea\u021bi propria extensie pe baza <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">exemplelor<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/blob\/master\/README.md\">documentation<\/a><\/noindex>, a\u0219tepta\u021bi \u0219tiri pe Habr \u0219i pe canalul nostru de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/c\/%D0%A4%D0%BB%D0%B0%D0%BD%D1%82\">YouTube<\/a><\/noindex>!<\/p>\n<h2>P.S.<\/h2>\n<p>\nCiti\u021bi \u0219i \u00een blogul nostru:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Extindem \u0219i complet\u0103m Kubernetes (prezentare general\u0103 \u0219i video al expunerii)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">Prezent\u0103m shell-operator: a devenit \u0219i mai simplu s\u0103 creezi operatori pentru Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Sursa: <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.4 - 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\/ro\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Este simplu \u0219i convenabil s\u0103 preg\u0103te\u0219ti un cluster Kubernetes? Anun\u021b\u0103m addon-operator | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/35226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=35226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/35226\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=35226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=35226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=35226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}