{"id":34735,"date":"2019-10-31T22:00:06","date_gmt":"2019-10-31T19:00:06","guid":{"rendered":"https:\/\/prohoster.info\/blog\/znakomstvo-s-helm-3\/"},"modified":"2019-10-31T22:00:06","modified_gmt":"2019-10-31T19:00:06","slug":"znakomstvo-s-helm-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/znakomstvo-s-helm-3","title":{"rendered":"\u00davod do Helm 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00davod do Helm 3\" src=\"\/wp-content\/uploads\/2019\/05\/6de0e2887ddcc802f1dd71c902325401.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><b>Pozn. prekl.<\/b>: 16. m\u00e1ja tohto roku \u2014 v\u00fdznamn\u00e1 m\u00ed\u013ea v rozvoji spr\u00e1vcu bal\u00edkov pre Kubernetes \u2014 Helm. V tento de\u0148 bol predstaven\u00fd prv\u00fd alfa-release bud\u00facej ve\u013ekej verzie projektu \u2014 3.0. Jej vydanie prinesie do Helmu podstatn\u00e9 a dlh \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u00e9 zmeny, na ktor\u00e9 mnoh\u00ed v Kubernetes komunite vkladaj\u00fa ve\u013ek\u00e9 n\u00e1deje. K t\u00fdmto zmen\u00e1m patr\u00edme aj my, preto\u017ee akt\u00edvne pou\u017e\u00edvame Helm na nasadzovanie aplik\u00e1ci\u00ed: integrovali sme ho do n\u00e1\u0161ho n\u00e1stroja pre realiz\u00e1ciu CI\/CD. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex> a pr\u00edle\u017eitostne prispievame k rozvoju upstream. Tento preklad sp\u00e1ja 7 pozn\u00e1mok z ofici\u00e1lneho blogu Helmu, ktor\u00e9 s\u00fa venovan\u00e9 prv\u00e9mu alfa-release Helmu 3 a rozpr\u00e1vaj\u00fa o hist\u00f3rii projektu a hlavn\u00fdch funkci\u00e1ch Helmu 3. Ich autorom je Matt \u201ebacongobbler\u201c Fisher, zamestnanec Microsoftu a jeden z k\u013e\u00fa\u010dov\u00fdch spr\u00e1vcov Helmu.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>15. okt\u00f3bra 2015 sa zrodil projekt, dnes zn\u00e1my ako Helm. Len rok po zalo\u017een\u00ed sa komunita Helmu pripojila k Kubernetes, pri\u010dom akt\u00edvne pracovala na Helme 2. V j\u00fani 2018 sa Helm <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cncf.io\/blog\/2018\/06\/01\/cncf-to-host-helm\/\">stal s\u00fa\u010das\u0165ou CNCF<\/a><\/noindex> ako rozv\u00edjaj\u00faci sa (incubating) projekt. Presu\u0148me sa do s\u00fa\u010dasnosti \u2014 a u\u017e je na ceste prv\u00fd alfa-release nov\u00e9ho Helmu 3 <i>(tento release <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/releases\/tag\/v3.0.0-alpha.1\">u\u017e prebehol<\/a><\/noindex> v polovici m\u00e1ja \u2014 pozn. prekl.)<\/i>.<\/p>\n<p>V tomto materi\u00e1li v\u00e1m poviem o tom, ako to v\u0161etko za\u010dalo, ako sme sa dostali k s\u00fa\u010dasn\u00e9mu \u0161t\u00e1diu, predstav\u00edm niektor\u00e9 unik\u00e1tne funkcie, dostupn\u00e9 v prvom alfa-release Helmu 3, a vysvetl\u00edm, ako pl\u00e1nujeme \u010falej rozv\u00edja\u0165.<\/p>\n<p>Kr\u00e1tke zhrnutie:<\/p>\n<ul>\n<li>hist\u00f3ria vzniku Helmu;<\/li>\n<li>jemn\u00e9 rozl\u00fa\u010denie s Tillerom;<\/li>\n<li>repozit\u00e1re chartov;<\/li>\n<li>spr\u00e1va release-ov;<\/li>\n<li>zmeny v z\u00e1vislostiach chartov;<\/li>\n<li>library charts;<\/li>\n<li>\u010do \u010falej?<\/li>\n<\/ul>\n<p><\/p>\n<h2>Hist\u00f3ria vzniku Helmu<\/h2>\n<p><\/p>\n<h3>N\u00e1rodzenie<\/h3>\n<p>\nHelm 1 za\u010d\u00ednal ako Open Source projekt, vytvoren\u00fd spolo\u010dnos\u0165ou Deis. Boli sme mal\u00fd startup, <noindex><a rel=\"nofollow\" href=\"https:\/\/blogs.microsoft.com\/blog\/2017\/04\/10\/microsoft-acquire-deis-help-companies-innovate-containers\/\">pohlten\u00fd<\/a><\/noindex> Microsoftom na jar 2017. Na\u0161im druh\u00fdm Open Source projektom, taktie\u017e nes\u00facim meno Deis, bol n\u00e1stroj <code>deisctl<\/code>, ktor\u00fd bol pou\u017e\u00edvan\u00fd (okrem in\u00e9ho) na in\u0161tal\u00e1ciu a prev\u00e1dzku platformy Deis v <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/coreos\/fleet\">klasteri Fleet<\/a><\/noindex>. V tom \u010dase bol Fleet jednou z prv\u00fdch platforiem pre orchestr\u00e1ciu kontajnerov.<\/p>\n<p>V polovici roka 2015 sme sa rozhodli zmeni\u0165 kurz a previedli sme Deis (v tom \u010dase premenovan\u00fd na Deis Workflow) z Fleet na Kubernetes. Jedn\u00fdm z prv\u00fdch bol prepracovan\u00fd n\u00e1stroj na in\u0161tal\u00e1ciu <code>deisctl<\/code>. Pou\u017e\u00edvali sme ho na in\u0161tal\u00e1ciu a spr\u00e1vu Deis Workflow v klasteri Fleet.<\/p>\n<p>Helm 1 bol vytvoren\u00fd na z\u00e1klade zn\u00e1mych bal\u00edkov\u00fdch mana\u017e\u00e9rov, ako s\u00fa Homebrew, apt a yum. Jeho hlavnou \u00falohou bolo zjednodu\u0161i\u0165 \u00falohy, ako je balenie a in\u0161tal\u00e1cia aplik\u00e1ci\u00ed v Kubernetes. Ofici\u00e1lne bol Helm predstaven\u00fd v roku 2015 na konferencii KubeCon v San Franciscu.<\/p>\n<p>Na\u0161a prv\u00e1 pokus s Helmom bol \u00faspe\u0161n\u00fd, av\u0161ak nevyhli sme sa v\u00e1\u017enym obmedzeniam. Vzal s\u00fabor manifestov Kubernetes, obohaten\u00fdch gener\u00e1tormi ako vstupn\u00e9 YAML bloky <i>(front-matter)<\/i>*, a na\u010d\u00edtal v\u00fdsledky do Kubernetes.<\/p>\n<p><i>* <b>Pozn. prekl.<\/b>: Od prvej verzie Helm bol pre popis zdrojov Kubernetes zvolen\u00fd syntaktick\u00fd jazyk YAML a pri p\u00edsan\u00ed konfigur\u00e1ci\u00ed sa podporovali \u0161abl\u00f3ny Jinja a Python skripty. Viac o tom a prvej verzii Helmu sme p\u00edsali v kapitole \u201eKr\u00e1tka hist\u00f3ria Helmu\u201c <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417079\/\">tohto materi\u00e1lu<\/a><\/noindex>.<\/i><\/p>\n<p>Napr\u00edklad, aby ste nahradili pole v YAML s\u00fabore, bolo potrebn\u00e9 prida\u0165 do manifestu nasleduj\u00facu kon\u0161trukciu:<\/p>\n<pre><code class=\"plaintext\">#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my\/pod.yaml<\/code><\/pre>\n<p>\nJe \u00fa\u017easn\u00e9, \u017ee dnes existuj\u00fa \u0161abloniz\u00e1tory, nie pravda?<\/p>\n<p>Z mnoh\u00fdch d\u00f4vodov tento ran\u00fd in\u0161tal\u00e1tor Kubernetes vy\u017eadoval presne definovan\u00fd zoznam manifestov\u00fdch s\u00faborov a vykon\u00e1val iba mal\u00fa fixn\u00fa sekvenciu udalost\u00ed. Pou\u017e\u00edva\u0165 ho bolo tak \u0165a\u017ek\u00e9, \u017ee R&amp;D t\u00edm Deis Workflow mal \u0165a\u017ekosti, ke\u010f sa pok\u00fasil prenies\u0165 svoj produkt na t\u00fato platformu \u2014 napriek tomu, semeno my\u0161lienky u\u017e bolo zasaden\u00e9. N\u00e1\u0161 prv\u00fd pokus sa stal skvelou pr\u00edle\u017eitos\u0165ou na u\u010denie: uvedomili sme si, \u017ee sme skuto\u010dne nad\u0161en\u00ed vytv\u00e1ran\u00edm pragmatick\u00fdch n\u00e1strojov, ktor\u00e9 rie\u0161ia ka\u017edodenn\u00e9 probl\u00e9my na\u0161ich pou\u017e\u00edvate\u013eov.<\/p>\n<p>Vyu\u017e\u00edvaj\u00fac sk\u00fasenosti z minul\u00fdch ch\u00fdb, sme sa pustili do v\u00fdvoja Helmu 2.<\/p>\n<h3>Vytvorenie Helmu 2<\/h3>\n<p>\nNa konci roka 2015 sa s nami skontaktoval t\u00edm Google. Pracovali na podobnom n\u00e1stroji pre Kubernetes. Deployment Manager pre Kubernetes bol portom existuj\u00faceho n\u00e1stroja, ktor\u00fd sa vyu\u017e\u00edval pre Google Cloud Platform. 'Nechcete, \u2014 p\u00fdtali sa, \u2014 str\u00e1vi\u0165 nieko\u013eko dn\u00ed diskusiou o podobnostiach a rozdieloch?'<\/p>\n<p>V janu\u00e1ri 2016 sa t\u00edmy Helm a Deployment Manager stretli v Seattli, aby si vymenili my\u0161lienky. Rokovania sa skon\u010dili ambici\u00f3znym pl\u00e1nom: spoji\u0165 oba projekty a vytvori\u0165 Helm 2. Spolu s Deis a Google sa k t\u00edmu v\u00fdvoj\u00e1rov pridali chlapci z <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/skippbox\">SkippBox<\/a><\/noindex> <i>(dnes s\u00fa\u010das\u0165 Bitnami \u2014 pozn. prekl.).<\/i>, a my sme sa pustili do pr\u00e1ce na Helme 2.<\/p>\n<p>Chceli sme zachova\u0165 jednoduch\u00e9 pou\u017e\u00edvanie Helm, ale prida\u0165 nasleduj\u00face:<\/p>\n<ul>\n<li> \u0161abl\u00f3ny grafov na prisp\u00f4sobenie;<\/li>\n<li> intern\u00e9 riadenie pre t\u00edmov;<\/li>\n<li> prvotriedny repozit\u00e1r grafov;<\/li>\n<li> stabiln\u00fd form\u00e1t bal\u00edkov s mo\u017enos\u0165ou podpisu;<\/li>\n<li> siln\u00fd z\u00e1v\u00e4zok k semantick\u00e9mu verzionovaniu a zachovaniu sp\u00e4tnej kompatibility medzi verziami.<\/li>\n<\/ul>\n<p>\nNa dosiahnutie t\u00fdchto cie\u013eov bol do ekosyst\u00e9mu Helm pridan\u00fd druh\u00fd komponent. Tento intern\u00fd komponent bol nazvan\u00fd Tiller a zaoberal sa in\u0161tal\u00e1ciou Helm grafov a ich spr\u00e1vou.<\/p>\n<p>Od vydania Helm 2 v roku 2016 Kubernetes pre\u0161iel nieko\u013ek\u00fdmi v\u00fdznamn\u00fdmi novinkami. Objavilo sa riadenie pr\u00edstupu na z\u00e1klade rol\u00ed (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/422801\/\">RBAC<\/a><\/noindex>), ktor\u00e9 nakoniec nahradilo riadenie pr\u00edstupu na z\u00e1klade atrib\u00fatov (ABAC). Boli predstaven\u00e9 nov\u00e9 typy zdrojov (Deployments vtedy boli st\u00e1le v beta verzii). Boli vyn\u00e1jden\u00e9 Defin\u00edcie vlastn\u00fdch zdrojov (p\u00f4vodne sa naz\u00fdvali Third Party Resources alebo TPRs). A \u010do je najd\u00f4le\u017eitej\u0161ie \u2014 objavil sa s\u00fabor najlep\u0161\u00edch prakt\u00edk.<\/p>\n<p>V kontexte v\u0161etk\u00fdch t\u00fdchto zmien Helm na\u010falej sl\u00fa\u017eil verne pou\u017e\u00edvate\u013eom Kubernetes. Po troch rokoch a mnoh\u00fdch nov\u00fdch doplnkoch sa uk\u00e1zalo, \u017ee nastal \u010das na v\u00fdznamn\u00e9 zmeny v k\u00f3dovej z\u00e1kladni, aby Helm mohol na\u010falej uspokojova\u0165 rast\u00face potreby rozv\u00edjaj\u00faceho sa ekosyst\u00e9mu.<\/p>\n<h2>Jemn\u00e9 rozl\u00fa\u010denie s Tillerom<\/h2>\n<p>\nPo\u010das v\u00fdvoja Helm 2 sme predstavili Tiller ako s\u00fa\u010das\u0165 na\u0161ej integr\u00e1cie s Deployment Managerom od Googlu. Tiller hral d\u00f4le\u017eit\u00fa \u00falohu pre t\u00edmy pracuj\u00face v r\u00e1mci spolo\u010dn\u00e9ho klastru: umo\u017enil r\u00f4znym odborn\u00edkom, ktor\u00ed spravovali infra\u0161trukt\u00faru, interagova\u0165 s rovnak\u00fdm s\u00faborom vydan\u00ed.<\/p>\n<p>Ke\u010f\u017ee kontrola pr\u00edstupu na z\u00e1klade rol\u00ed (RBAC) bola v Kubernetes 1.6 predvolene zapnut\u00e1, pr\u00e1ca s Tillerom v produkcii sa stala zlo\u017eitou. Z d\u00f4vodu obrovsk\u00e9ho po\u010dtu mo\u017en\u00fdch bezpe\u010dnostn\u00fdch polit\u00edk bola na\u0161a poz\u00edcia tak\u00e1, \u017ee sme predvolene pon\u00fakali povolen\u00fa konfigur\u00e1ciu. To umo\u017enilo nov\u00e1\u010dikom experimentova\u0165 s Helm a Kubernetes bez toho, aby sa museli najprv zaobera\u0165 bezpe\u010dnostn\u00fdmi nastaveniami. Bohu\u017eia\u013e, t\u00e1to povolen\u00e1 konfigur\u00e1cia mohla poskytn\u00fa\u0165 pou\u017e\u00edvate\u013eom pr\u00edli\u0161 \u0161irok\u00e9 opr\u00e1vnenia, ktor\u00e9 nepotrebovali. In\u017einieri DevOps a SRE museli \u0161tudova\u0165 \u010fal\u0161ie prev\u00e1dzkov\u00e9 kroky pri in\u0161tal\u00e1cii Tiller do multi-tenant klastru.<\/p>\n<p>Zistili sme, ako z\u00e1stupcovia komunity pou\u017e\u00edvaj\u00fa Helm v konkr\u00e9tnych situ\u00e1ci\u00e1ch a pochopili sme, \u017ee syst\u00e9m spr\u00e1vy vydan\u00ed Tiller nepotrebuje spolieha\u0165 na vn\u00fatrokla\u010dov\u00fd komponent, aby udr\u017eal stavy alebo fungoval ako centr\u00e1lny hub s inform\u00e1ciami o vydan\u00ed. Namiesto toho sme mohli jednoducho prij\u00edma\u0165 inform\u00e1cie z API servera Kubernetes, generova\u0165 chart na strane klienta a uchov\u00e1va\u0165 z\u00e1znam o in\u0161tal\u00e1cii v Kubernetes.<\/p>\n<p>Hlavn\u00fa \u00falohu Tiller sa dalo dosiahnu\u0165 aj bez Tiller, preto sa jedno z na\u0161ich prv\u00fdch rozhodnut\u00ed oh\u013eadom Helm 3 stalo \u00fapln\u00e9 odmietnutie Tiller.<\/p>\n<p>S odchodom Tiller sa model bezpe\u010dnosti Helmu radik\u00e1lne zjednodu\u0161il. Helm 3 teraz podporuje v\u0161etky modern\u00e9 sp\u00f4soby zabezpe\u010denia, identifik\u00e1cie a autoriz\u00e1cie s\u00fa\u010dasn\u00e9ho Kubernetes. Opr\u00e1vnenia Helmu sa ur\u010duj\u00fa pomocou <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/organize-cluster-access-kubeconfig\/\">s\u00faboru kubeconfig<\/a><\/noindex>. Spr\u00e1vcovia klastrov m\u00f4\u017eu obmedzi\u0165 pr\u00e1va pou\u017e\u00edvate\u013eov s akouko\u013evek \u00farov\u0148ou podrobnosti. Release zost\u00e1va na\u010falej ulo\u017een\u00fd v r\u00e1mci klastru, ostatn\u00e1 funkcionalita Helmu zost\u00e1va.<\/p>\n<h2>Repository chartov<\/h2>\n<p>\nNa vysokej \u00farovni je repository chartov miesto, kde sa d\u00e1 uchov\u00e1va\u0165 a zdie\u013ea\u0165 chartov. Klient Helm bal\u00ed a odosiela chart do repository. Jednoducho povedan\u00e9, repository chartov je primit\u00edvny HTTP server s index.yaml s\u00faborom a niektor\u00fdmi zabalen\u00fdmi chartami.<\/p>\n<p>Hoci existuj\u00fa niektor\u00e9 v\u00fdhody, ke\u010f API repository chartov vyhovuje z\u00e1kladn\u00fdm po\u017eiadavk\u00e1m na \u00falo\u017eisko, m\u00e1 aj nieko\u013eko nev\u00fdhod:<\/p>\n<ul>\n<li> Repozit\u00e1re grafov s\u00fa zle kompatibiln\u00e9 so v\u00e4\u010d\u0161inou implement\u00e1ci\u00ed zabezpe\u010denia potrebn\u00e9ho v produk\u010dnom prostred\u00ed. Pr\u00edtomnos\u0165 \u0161tandardn\u00e9ho API na autentifik\u00e1ciu a autoriz\u00e1ciu je mimoriadne d\u00f4le\u017eit\u00e1 v produk\u010dn\u00fdch scen\u00e1roch.<\/li>\n<li> N\u00e1stroje Helm na sledovanie p\u00f4vodu grafu, pou\u017e\u00edvan\u00e9 na podpisovanie, kontrolu integrity a p\u00f4vodu grafu, s\u00fa volite\u013enou s\u00fa\u010das\u0165ou procesu publik\u00e1cie grafu.<\/li>\n<li> V multiu\u017e\u00edvate\u013esk\u00fdch scen\u00e1roch m\u00f4\u017ee by\u0165 rovnak\u00fd graf nahran\u00fd \u010fal\u0161\u00edm pou\u017e\u00edvate\u013eom, \u010d\u00edm sa zdvojn\u00e1sob\u00ed objem priestoru potrebn\u00e9ho na ulo\u017eenie rovnak\u00e9ho obsahu. Na rie\u0161enie tohto probl\u00e9mu boli vyvinut\u00e9 inteligentnej\u0161ie repo, ale nie s\u00fa s\u00fa\u010das\u0165ou form\u00e1lnej \u0161pecifik\u00e1cie.<\/li>\n<li> Pou\u017eitie jedn\u00e9ho indexov\u00e9ho s\u00faboru na vyh\u013ead\u00e1vanie, ukladanie metad\u00e1t a z\u00edskavanie grafov s\u0165a\u017eilo v\u00fdvoj bezpe\u010dn\u00fdch multiu\u017e\u00edvate\u013esk\u00fdch implement\u00e1ci\u00ed.<\/li>\n<\/ul>\n<p>\nProjekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/docker\/distribution\">Docker Distribution<\/a><\/noindex> (tie\u017e zn\u00e1my ako Docker Registry v2) je n\u00e1stupcom Docker Registry a vlastne ide o s\u00fabor n\u00e1strojov na balenie, odosielanie, ukladanie a dod\u00e1vanie Docker obrazov. Mnoh\u00e9 ve\u013ek\u00e9 cloudov\u00e9 slu\u017eby pon\u00fakaj\u00fa produkty zalo\u017een\u00e9 na Distribution. V\u010faka zv\u00fd\u0161en\u00e9mu zameraniu z\u00edskal projekt Distribution z mnoh\u00fdch rokov vylep\u0161en\u00ed, osved\u010den\u00fdch bezpe\u010dnostn\u00fdch prakt\u00edk a testovania v 'boji', \u010do ho premenilo na jedn\u00e9ho z naj\u00faspe\u0161nej\u0161\u00edch neocenovan\u00fdch hrdinov sveta open-source.<\/p>\n<p>Ale vedeli ste, \u017ee projekt Distribution bol navrhnut\u00fd na distrib\u00faciu ak\u00e9hoko\u013evek typu obsahu, nie len obrazov kontajnerov?<\/p>\n<p>V\u010faka \u00fasil\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opencontainers.org\/\">Open Container Initiative<\/a><\/noindex> (alebo OCI) m\u00f4\u017eu by\u0165 Helm grafy umiestnen\u00e9 na akomko\u013evek in\u0161tancii Distribution. Zatia\u013e je tento proces experiment\u00e1lny. Pr\u00e1ca na podpore prihl\u00e1sen\u00ed a in\u00fdch funkci\u00ed potrebn\u00fdch pre plnohodnotn\u00fd Helm 3 e\u0161te nie je dokon\u010den\u00e1, ale ve\u013emi sa te\u0161\u00edme na mo\u017enos\u0165 u\u010di\u0165 sa z objavov, ktor\u00e9 za tieto roky uskuto\u010dnili t\u00edmy OCI a Distribution. A v\u010faka ich mentorstvu a vedeniu sa u\u010d\u00edme, \u010do znamen\u00e1 prev\u00e1dzkovanie vysoko dostupnej slu\u017eby vo ve\u013ekom meradle.<\/p>\n<p>Podrobnej\u0161\u00ed popis niektor\u00fdch nadch\u00e1dzaj\u00facich zmien v repozit\u00e1roch Helm grafov je k dispoz\u00edcii <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.bacongobbler.com\/post\/2019-01-25-distributing-with-distribution\/\">na odkaze<\/a><\/noindex>.<\/p>\n<h2>Spr\u00e1va vydan\u00ed<\/h2>\n<p>\nV Helme 3 je stav aplik\u00e1cie sledovan\u00fd v r\u00e1mci klastra dvojicou objektov:<\/p>\n<ul>\n<li> release object \u2014 predstavuje in\u0161tanciu aplik\u00e1cie;<\/li>\n<li> verzia uvo\u013enenia tajn\u00e9 \u2014 predstavuje \u017eelan\u00fd stav aplik\u00e1cie v konkr\u00e9tnom okamihu (napr\u00edklad uvo\u013enenie novej verzie).<\/li>\n<\/ul>\n<p>\nVyvolanie <code>helm install<\/code> vytv\u00e1ra release object a release version secret. Volanie <code>helm upgrade<\/code> vy\u017eaduje existenciu release object (ktor\u00fd m\u00f4\u017ee meni\u0165) a vytv\u00e1ra nov\u00fd release version secret, ktor\u00fd obsahuje nov\u00e9 hodnoty a pripraven\u00fd manifest.<\/p>\n<p>Objekt Release obsahuje inform\u00e1cie o vydan\u00ed, kde vydanie predstavuje konkr\u00e9tnu in\u0161tal\u00e1ciu pomenovanej \u0161abl\u00f3ny a hodn\u00f4t. Tento objekt opisuje metad\u00e1ta na najvy\u0161\u0161ej \u00farovni o vydan\u00ed. Objekt Release sa uchov\u00e1va po\u010das cel\u00e9ho \u017eivotn\u00e9ho cyklu aplik\u00e1cie a je vlastn\u00edkom v\u0161etk\u00fdch tajomstiev verzie vydania, ako aj v\u0161etk\u00fdch objektov, ktor\u00e9 s\u00fa priamo vytvoren\u00e9 \u0161abl\u00f3nou Helm.<\/p>\n<p>Release version secret sp\u00e1ja uvo\u013enenie so s\u00e9riou rev\u00edzi\u00ed (in\u0161tal\u00e1cia, aktualiz\u00e1cie, n\u00e1vraty, odstr\u00e1nenie).<\/p>\n<p>V Helm 2 boli rev\u00edzie striktne sekven\u010dn\u00e9. Volanie <code>helm install<\/code> v1 bol vytvoren\u00fd, nasleduj\u00face aktualiz\u00e1cie (upgrade) na v2 a tak \u010falej. Release a release version secret boli zl\u00fa\u010den\u00e9 do jedn\u00e9ho objektu zn\u00e1meho ako rev\u00edzia. Revizie sa uchov\u00e1vali v tom istom priestore mien, v ktorom bol Tiller, \u010do znamenalo, \u017ee ka\u017ed\u00e9 vydanie bolo \u201eglob\u00e1lne\u201c z poh\u013eadu priestoru mien; v d\u00f4sledku toho mohol by\u0165 pou\u017eit\u00fd len jeden pr\u00edpad n\u00e1zvu.<\/p>\n<p>V Helm 3 je ka\u017ed\u00e9 vydanie spojen\u00e9 s jedn\u00fdm alebo viacer\u00fdmi release version secretami. Objekt Release v\u017edy popisuje aktu\u00e1lne vydanie nasaden\u00e9 v Kubernetes. Ka\u017ed\u00fd release version secret popisuje iba jednu verziu tohto vydania. Aktualiz\u00e1cia (upgrade) napr\u00edklad vytvor\u00ed nov\u00fd release version secret a n\u00e1sledne zmen\u00ed objekt Release, aby odkazoval na t\u00fato nov\u00fa verziu. V pr\u00edpade vr\u00e1tenia sp\u00e4\u0165 (rollback) je mo\u017en\u00e9 vyu\u017ei\u0165 predch\u00e1dzaj\u00face release version secret na vr\u00e1tenie vydania do predch\u00e1dzaj\u00faceho stavu.<\/p>\n<p>Po zru\u0161en\u00ed Tillera Helm 3 uchov\u00e1va \u00fadaje o vydan\u00ed v rovnakom priestore mien ako vydanie. Tak\u00e1to zmena umo\u017e\u0148uje in\u0161talova\u0165 \u0161abl\u00f3nu s rovnak\u00fdm n\u00e1zvom vydania do in\u00e9ho priestoru mien, pri\u010dom \u00fadaje sa zachov\u00e1vaj\u00fa medzi aktualiz\u00e1ciami\/obnoven\u00edm klastrov v etcd. Napr\u00edklad, m\u00f4\u017eete nain\u0161talova\u0165 WordPress do priestoru mien \u201efoo\u201c a potom do priestoru mien \u201ebar\u201c, pri\u010dom oba vydania sa m\u00f4\u017eu vola\u0165 \u201ewordpress\u201c.<\/p>\n<h2>Zmeny v z\u00e1vislostiach \u0161abl\u00f3n<\/h2>\n<p>\n\u0160abl\u00f3ny, zabalene (pomocou <code>helm package<\/code>) na pou\u017eitie s Helm 2, je mo\u017en\u00e9 ho nain\u0161talova\u0165 aj pomocou Helmu 3, av\u0161ak proces v\u00fdvoja chartov bol \u00faplne prepracovan\u00fd, preto je potrebn\u00e9 urobi\u0165 niektor\u00e9 \u00fapravy pre pokra\u010dovanie vo v\u00fdvoji chartov s Helm 3. Konkr\u00e9tne sa zmenil syst\u00e9m spr\u00e1vy z\u00e1vislost\u00ed chartov.<\/p>\n<p>Syst\u00e9m spr\u00e1vy z\u00e1vislost\u00ed chartu pre\u0161iel na <code>requirements.yaml<\/code> a <code>requirements.lock<\/code> na <code>Chart.yaml<\/code> a <code>Chart.lock<\/code>. To znamen\u00e1, \u017ee roomy, ktor\u00e9 pou\u017eili pr\u00edkaz <code>helm dependency<\/code>, vy\u017eaduj\u00fa niektor\u00e9 \u00fapravy, aby fungovali s Helm 3.<\/p>\n<p>Pozrime sa na pr\u00edklad. Pridajme z\u00e1vislos\u0165 k chartu v Helme 2 a pozrime sa, \u010do sa zmen\u00ed pri prechode na Helm 3.<\/p>\n<p>V Helme 2 <code>requirements.yaml<\/code> vyzeralo nasledovne:<\/p>\n<pre><code class=\"plaintext\">dependencies:\n- name: mariadb\n  version: 5.x.x\n  repository: https:\/\/kubernetes-charts.storage.googleapis.com\/\n  condition: mariadb.enabled\n  tags:\n    - database<\/code><\/pre>\n<p>\nV Helme 3 bude t\u00e1 ist\u00e1 z\u00e1vislos\u0165 zobrazen\u00e1 vo va\u0161om <code>Chart.yaml<\/code>:<\/p>\n<pre><code class=\"plaintext\">dependencies:\n- name: mariadb\n  version: 5.x.x\n  repository: https:\/\/kubernetes-charts.storage.googleapis.com\/\n  condition: mariadb.enabled\n  tags:\n    - database<\/code><\/pre>\n<p>\nChartov\u00e9 s\u00fabory sa st\u00e1le na\u010d\u00edtavaj\u00fa a ukladaj\u00fa do adres\u00e1ra <code>charts\/<\/code>, tak\u017ee subcharty <i>(subcharts)<\/i>, le\u017eiace v adres\u00e1ri <code>charts\/<\/code>, bud\u00fa fungova\u0165 bez zmien.<\/p>\n<h2>Predstavujeme Library Charts<\/h2>\n<p>\nHelm 3 podporuje typ chartov, ktor\u00fd dostal n\u00e1zov chartov kni\u017enice <i>(library chart)<\/i>. T\u00e1to \u0161abl\u00f3na sa pou\u017e\u00edva in\u00fdmi \u0161abl\u00f3nami, ale sama o sebe nevytv\u00e1ra \u017eiadne artefakty vydania. \u0160abl\u00f3ny kni\u017eni\u010dn\u00fdch \u0161abl\u00f3n m\u00f4\u017eu vyhlasova\u0165 iba prvky <code>define<\/code>. In\u00fd obsah je jednoducho ignorovan\u00fd. To umo\u017e\u0148uje pou\u017e\u00edvate\u013eom op\u00e4tovne vyu\u017e\u00edva\u0165 a zdie\u013ea\u0165 k\u00f3dov\u00e9 fragmenty, ktor\u00e9 m\u00f4\u017eu by\u0165 pou\u017eit\u00e9 v mnoh\u00fdch chartech, \u010d\u00edm sa vyh\u00fdbaj\u00fa duplikovaniu a dodr\u017eiavaj\u00fa princ\u00edp <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\">DRY<\/a><\/noindex>.<\/p>\n<p>Library charts sa vyhlasuj\u00fa v \u010dasti <code>z\u00e1vislosti<\/code> v s\u00fabore <code>Chart.yaml<\/code>. In\u0161tal\u00e1cia a spr\u00e1va s\u00fa rovnak\u00e9 ako pri in\u00fdch chartech.<\/p>\n<pre><code class=\"plaintext\">dependencies:\n  - name: mylib\n    version: 1.x.x\n    repository: quay.io<\/code><\/pre>\n<p>\nS nap\u00e4t\u00edm \u010dak\u00e1me na mo\u017enosti vyu\u017eitia, ktor\u00e9 tento komponent otvor\u00ed pred v\u00fdvoj\u00e1rmi chartov, ako aj na osved\u010den\u00e9 praktiky, ktor\u00e9 m\u00f4\u017eu vznikn\u00fa\u0165 v\u010faka chartom kni\u017enice.<\/p>\n<h2>\u010co \u010falej?<\/h2>\n<p>\nHelm 3.0.0-alpha.1 je z\u00e1klad, na ktorom za\u010d\u00edname budova\u0165 nov\u00fa verziu Helmu. V \u010dl\u00e1nku som op\u00edsal niektor\u00e9 zauj\u00edmav\u00e9 funkcie Helmu 3. Mnoh\u00e9 z nich s\u00fa zatia\u013e vo f\u00e1ze v\u00fdvoja, a to je v poriadku; podstata alfa verzie spo\u010d\u00edva v testovan\u00ed my\u0161lienky, z\u00edskan\u00ed sp\u00e4tnej v\u00e4zby od prv\u00fdch pou\u017e\u00edvate\u013eov a potvrden\u00ed na\u0161ich predpokladov.<\/p>\n<p>Akon\u00e1hle bude alfa verzia uvo\u013enen\u00e1 <i>(nezab\u00fadajme, \u017ee <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/releases\/tag\/v3.0.0-alpha.1\">u\u017e sa tak stalo<\/a><\/noindex> \u2014 pozn. prekl.)<\/i>, za\u010dneme prij\u00edma\u0165 opravy pre Helm 3 od komunity. Je potrebn\u00e9 vytvori\u0165 spo\u013eahliv\u00fd z\u00e1klad, ktor\u00fd umo\u017en\u00ed vyv\u00edja\u0165 a prij\u00edma\u0165 nov\u00e9 funkcie, pri\u010dom pou\u017e\u00edvatelia sa bud\u00fa m\u00f4c\u0165 c\u00edti\u0165 zapojen\u00ed do procesu, otvoren\u00edm tiketov a zasielan\u00edm opr\u00e1v.<\/p>\n<p>V \u010dl\u00e1nku som sa sna\u017eil osvetli\u0165 niektor\u00e9 v\u00e1\u017ene zlep\u0161enia, ktor\u00e9 sa objavia v Helme 3, av\u0161ak tento zoznam rozhodne nemo\u017eno pova\u017eova\u0165 za vy\u010derp\u00e1vaj\u00faci. Celkov\u00fd pl\u00e1n pre Helm 3 zah\u0155\u0148a tak\u00e9 novinky ako zlep\u0161en\u00e9 strat\u00e9gie aktualiz\u00e1cie, hlb\u0161iu integr\u00e1ciu s OCI registry a vyu\u017eitie JSON sch\u00e9m na overovanie hodn\u00f4t grafov. Taktie\u017e pl\u00e1nujeme vy\u010disti\u0165 k\u00f3dov\u00fa z\u00e1klad\u0148u a aktualizova\u0165 tie jej \u010dasti, ktor\u00e9 zost\u00e1vali bez pov\u0161imnutia posledn\u00e9 tri roky.<\/p>\n<p>Ak m\u00e1te pocit, \u017ee sme na nie\u010do zabudli, radi sa dozvieme va\u0161e n\u00e1zory!<\/p>\n<p>Pridajte sa k diskusii v na\u0161ich <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.slack.com\/\">Slack kan\u00e1loch<\/a><\/noindex>:<\/p>\n<ul>\n<li> <code>#helm-users<\/code> na ot\u00e1zky a jednoduch\u00fa komunik\u00e1ciu s komunitou;<\/li>\n<li> <code>#helm-dev<\/code> na diskusiu o pull requestoch, k\u00f3de a chyb\u00e1ch.<\/li>\n<\/ul>\n<p>\nM\u00f4\u017eete sa tie\u017e z\u00fa\u010dastni\u0165 na\u0161ich t\u00fd\u017edenn\u00fdch verejn\u00fdch v\u00fdvoj\u00e1rskych hovorov ka\u017ed\u00fa stredu o 19:30 MSK. Stretnutia s\u00fa zameran\u00e9 na diskusiu o \u00faloh\u00e1ch, na ktor\u00fdch pracuj\u00fa k\u013e\u00fa\u010dov\u00ed v\u00fdvoj\u00e1ri a komunita, ako aj o t\u00e9mach diskusie na t\u00fd\u017ede\u0148. Ka\u017ed\u00fd, kto m\u00e1 z\u00e1ujem, sa m\u00f4\u017ee pripoji\u0165 a z\u00fa\u010dastni\u0165 sa stretnutia. Odkaz je k dispoz\u00edcii v Slack kan\u00e1li <code>#helm-dev<\/code>.<\/p>\n<h2>P.S. od prekladate\u013ea<\/h2>\n<p>\nPre\u010d\u00edtajte si tie\u017e na na\u0161om blogu:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417079\/\">Spr\u00e1vca bal\u00edkov pre Kubernetes \u2013 Helm: minulos\u0165, pr\u00edtomnos\u0165, bud\u00facnos\u0165<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438814\/\">Triezvy poh\u013ead na Helm 2: \u201eTak\u00fd, ak\u00fd je\u2026\u201c<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/420437\/\">Praktick\u00e9 obozn\u00e1menie sa so spr\u00e1vcom bal\u00edkov pre Kubernetes \u2013 Helm<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Kubernetes tipy &amp; triky: preklad funguj\u00facich prostriedkov v klastri pod spr\u00e1vou Helmu 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/336170\/\">Praktika s dapp. \u010cas\u0165 2. Nasadenie Docker obrazov do Kubernetes pomocou Helmu<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/453734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: 16 \u043c\u0430\u044f \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0437\u043d\u0430\u0447\u0438\u043c\u0430\u044f \u0432\u0435\u0445\u0430 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f Kubernetes \u2014 Helm. \u0412 \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u043b\u044c\u0444\u0430-\u0440\u0435\u043b\u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 3.0. \u0415\u0451 \u0432\u044b\u0445\u043e\u0434 \u043f\u0440\u0438\u043d\u0435\u0441\u0451\u0442 \u0432 Helm \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438 \u0434\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432 Kubernetes-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043d\u0430\u0434\u0435\u0436\u0434\u044b. \u041a \u0442\u0430\u043a\u043e\u0432\u044b\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u043c\u0441\u044f \u0438 \u043c\u044b \u0441\u0430\u043c\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34735","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\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\/sk\/blog\/administrirovanie\/znakomstvo-s-helm-3\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Helm 3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/znakomstvo-s-helm-3\" \/>\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:00:06+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:06+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\udd47Oznamovanie Helmu 3 | ProHoster","description":"Pr\u00edklad","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/znakomstvo-s-helm-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Helm 3 | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/znakomstvo-s-helm-3","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:00:06+00:00","article:modified_time":"2019-10-31T19:00:06+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34735","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 20:26:53","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 23:08:04","updated":"2026-01-21 20:26:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/34735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=34735"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/34735\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/26173"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=34735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=34735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=34735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}