{"id":36918,"date":"2019-10-31T22:14:43","date_gmt":"2019-10-31T19:14:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/bezopasnost-helm\/"},"modified":"2019-10-31T22:14:43","modified_gmt":"2019-10-31T19:14:43","slug":"bezopasnost-helm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Bezpe\u010dnos\u0165 Helm","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Podstata pr\u00edbehu o najpopul\u00e1rnej\u0161om bal\u00ed\u010dkovom spr\u00e1vcovi pre Kubernetes by sa dala zn\u00e1zorni\u0165 pomocou emoji:<\/p>\n<ul>\n<li>krabica \u2014 to je Helm (to je najvhodnej\u0161ie, \u010do m\u00e1me v najnov\u0161ej verzii Emoji);<\/li>\n<li>z\u00e1mok \u2014 bezpe\u010dnos\u0165;<\/li>\n<li>\u010dlovek \u2014 rie\u0161enie probl\u00e9mu.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV skuto\u010dnosti to v\u0161ak bude o \u010dosi zlo\u017eitej\u0161ie a pr\u00edbeh je pln\u00fd technick\u00fdch podrobnost\u00ed o tom, <b>ako zabezpe\u010di\u0165 Helm.<\/b>.<\/p>\n<ul>\n<li>Stru\u010dne, \u010do je Helm, ak ste to nevedeli alebo ste zabudli. Ak\u00e9 probl\u00e9my rie\u0161i a kde sa nach\u00e1dza v ekosyst\u00e9me.<\/li>\n<li>Pozrime sa na architekt\u00faru Helmu. \u017diadna diskusia o bezpe\u010dnosti a o tom, ako urobi\u0165 n\u00e1stroj alebo rie\u0161enie bezpe\u010dnej\u0161\u00edm, sa nezaob\u00edde bez pochopenia architekt\u00fary komponentu.<\/li>\n<li>Prediskutujme komponenty Helmu.<\/li>\n<li>Najpal\u010divej\u0161ia ot\u00e1zka \u2014 bud\u00facnos\u0165 \u2014 nov\u00e1 verzia Helmu 3.\u00a0<\/li>\n<\/ul>\n<p>\nV\u0161etko v tomto \u010dl\u00e1nku sa t\u00fdka Helmu 2. T\u00e1to verzia je teraz v produkcii a pravdepodobne ju pr\u00e1ve pou\u017e\u00edvate, a pr\u00e1ve v nej s\u00fa bezpe\u010dnostn\u00e9 hrozby.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"_8zNTJ1_R5I\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/_8zNTJ1_R5I\/hqdefault.jpg\" alt=\"Prehrajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<strong>O predn\u00e1\u0161aj\u00facom:<\/strong> Alexander Chajov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">allexx<\/a><\/noindex>) sa vyv\u00edjan\u00edm zaober\u00e1 10 rokov, pom\u00e1ha zlep\u0161ova\u0165 obsah <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">Moscow Python Conf++<\/a><\/noindex> a pripojil sa k v\u00fdboru <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">Helm Summit<\/a><\/noindex>. Teraz pracuje v Chainstack na poz\u00edcii ved\u00faceho v\u00fdvoja \u2014 to je hybrid medzi riadite\u013eom v\u00fdvoja a osobou zodpovednou za dod\u00e1vku kone\u010dn\u00fdch vydan\u00ed. To znamen\u00e1, \u017ee sa nach\u00e1dza na bojisku, kde sa deje v\u0161etko od vytvorenia produktu a\u017e po jeho prev\u00e1dzku.<\/p>\n<p>Chainstack je mal\u00fd, akt\u00edvne rast\u00faci startup, ktor\u00e9ho \u00falohou je umo\u017eni\u0165 klientom zabudn\u00fa\u0165 na infra\u0161trukt\u00faru a zlo\u017eitosti prev\u00e1dzkovania decentralizovan\u00fdch aplik\u00e1ci\u00ed, t\u00edm v\u00fdvoja sa nach\u00e1dza v Singapure. Nep\u00fdtajte sa Chainstack na predaj alebo n\u00e1kup kryptomien, ale pon\u00faknite sa, \u017ee sa porozpr\u00e1vate o podnikov\u00fdch blockchainov\u00fdch r\u00e1mcoch, a oni v\u00e1m s rados\u0165ou odpovedia.<\/p>\n<h2>Helm<\/h2>\n<p>\nJe to bal\u00ed\u010dkov\u00fd spr\u00e1vca (graf) pre Kubernetes. Najzrozumite\u013enej\u0161\u00ed a najuniverz\u00e1lnej\u0161\u00ed sp\u00f4sob, ako prinies\u0165 aplik\u00e1cie do Kubernetes klastra.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSamozrejme, ide o \u0161trukt\u00farnej\u0161\u00ed a priemyseln\u00fd pr\u00edstup, ne\u017e je vytv\u00e1ranie vlastn\u00fdch YAML manifestov a p\u00edsanie mal\u00fdch util\u00edt.<\/p>\n<blockquote><p>Helm je to najlep\u0161ie, \u010do teraz m\u00e1me z dostupn\u00fdch a popul\u00e1rnych mo\u017enost\u00ed.<\/p><\/blockquote>\n<p>\nPre\u010do Helm? Predov\u0161etk\u00fdm preto, \u017ee je podporovan\u00fd CNCF. Cloud Native \u2014 ve\u013ek\u00e1 organiz\u00e1cia, matersk\u00e1 spolo\u010dnos\u0165 pre projekty Kubernetes, etcd, Fluentd a \u010fal\u0161ie.<\/p>\n<p>\u010eal\u0161\u00ed d\u00f4le\u017eit\u00fd fakt, Helm je ve\u013emi popul\u00e1rny projekt. Ke\u010f som v janu\u00e1ri 2019 za\u010dal prem\u00fd\u0161\u013ea\u0165 o tom, ako urobi\u0165 Helm bezpe\u010dn\u00fdm, projekt mal tis\u00edc hviezdi\u010diek na GitHub. Do m\u00e1ja ich bolo 12 tis\u00edc.<\/p>\n<p>Mnoh\u00ed sa zauj\u00edmaj\u00fa o Helm, tak\u017ee aj ke\u010f ho zatia\u013e nepou\u017e\u00edvate, poznatky o jeho bezpe\u010dnosti sa v\u00e1m z\u00eddu. <strong>Bezpe\u010dnos\u0165 je d\u00f4le\u017eit\u00e1.<\/strong><\/p>\n<p>Hlavn\u00fd t\u00edm Helm podporuje Microsoft Azure, a preto je projekt celkom stabiln\u00fd na rozdiel od mnoh\u00fdch in\u00fdch. Vydanie Helm 3 Alpha 2 v polovici j\u00fala nazna\u010duje, \u017ee na projekte pracuje dos\u0165 \u013eud\u00ed a maj\u00fa chu\u0165 a silu vyv\u00edja\u0165 a zlep\u0161ova\u0165 Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm rie\u0161i nieko\u013eko z\u00e1kladn\u00fdch probl\u00e9mov spr\u00e1vy aplik\u00e1ci\u00ed v Kubernetes.<\/p>\n<ul>\n<li>Balenie aplik\u00e1cie. Aj aplik\u00e1cia typu \u201eHello, World\u201c na WordPress u\u017e predstavuje nieko\u013eko slu\u017eieb, a tie by sme chceli zabalit dokopy.<\/li>\n<li>Riadenie zlo\u017eitosti, ktor\u00e1 vznik\u00e1 pri spr\u00e1ve t\u00fdchto aplik\u00e1ci\u00ed.<\/li>\n<li>\u017divotn\u00fd cyklus, ktor\u00fd sa nekon\u010d\u00ed po in\u0161tal\u00e1cii alebo nasaden\u00ed aplik\u00e1cie. Pokra\u010duje v \u017eivote, je potrebn\u00e9 ho aktualizova\u0165, a v tom mu pom\u00e1ha Helm, sna\u017e\u00ed sa prinies\u0165 spr\u00e1vne opatrenia a politiky.<\/li>\n<\/ul>\n<p>\n<strong>Balenie<\/strong> je zorganizovan\u00e9 zrozumite\u013en\u00fdm sp\u00f4sobom: existuj\u00fa metad\u00e1ta v \u00faplnom s\u00falade s fungovan\u00edm be\u017en\u00e9ho spr\u00e1vcu bal\u00edkov pre Linux, Windows alebo MacOS. Teda repozit\u00e1r, z\u00e1vislosti od r\u00f4znych bal\u00edkov, metainform\u00e1cie pre aplik\u00e1cie, nastavenia, \u0161pecifik\u00e1 konfigur\u00e1cie, indexovanie inform\u00e1ci\u00ed a podobne. To v\u0161etko Helm umo\u017e\u0148uje z\u00edska\u0165 a vyu\u017ei\u0165 pre aplik\u00e1cie.<\/p>\n<p><strong>Riadenie zlo\u017eitosti<\/strong>. Ak m\u00e1te ve\u013ea rovnak\u00fdch aplik\u00e1ci\u00ed, potrebujete parametraz\u00e1ciu. Z toho vypl\u00fdvaj\u00fa \u0161abl\u00f3ny, no aby ste nevym\u00fd\u0161\u013eali svoj sp\u00f4sob vytv\u00e1rania \u0161abl\u00f3n, m\u00f4\u017eete vyu\u017ei\u0165 to, \u010do Helm pon\u00faka priamo.<\/p>\n<p><strong>Spr\u00e1va \u017eivotn\u00e9ho cyklu aplik\u00e1cie<\/strong> \u2014 pod\u013ea m\u00f4jho n\u00e1zoru je to najzauj\u00edmavej\u0161ia a nevyrie\u0161en\u00e1 ot\u00e1zka. To je d\u00f4vod, pre\u010do som sa v minulosti dostal k Helmu. Museli sme sledova\u0165 \u017eivotn\u00fd cyklus aplik\u00e1cie, chceli sme presun\u00fa\u0165 svoj CI\/CD a cykly aplik\u00e1ci\u00ed do tejto paradigmy.<\/p>\n<p>Helm umo\u017e\u0148uje:<\/p>\n<ul>\n<li>spravova\u0165 nasadenia, zav\u00e1dza pojem konfigur\u00e1cie a rev\u00edzi\u00ed;<\/li>\n<li>\u00faspe\u0161ne vykon\u00e1va\u0165 rollback;<\/li>\n<li>pou\u017e\u00edva\u0165 hooky na r\u00f4zne udalosti;<\/li>\n<li>prid\u00e1va\u0165 dodato\u010dn\u00e9 kontroly aplik\u00e1ci\u00ed a reagova\u0165 na ich v\u00fdsledky.<\/li>\n<\/ul>\n<p>\nOkrem toho <strong>V Helm s\u00fa \"bat\u00e9rie\"<\/strong> \u2014 obrovsk\u00e9 mno\u017estvo skvel\u00fdch vec\u00ed, ktor\u00e9 m\u00f4\u017eete zahrn\u00fa\u0165 ako pluginy a u\u013eah\u010di\u0165 si \u017eivot. Pluginy si m\u00f4\u017eete nap\u00edsa\u0165 sami, s\u00fa dostato\u010dne izolovan\u00e9 a nevy\u017eaduj\u00fa zlo\u017eit\u00fa architekt\u00faru. Ak chcete nie\u010do implementova\u0165, odpor\u00fa\u010dam to urobi\u0165 ako plugin a nesk\u00f4r to mo\u017eno zahrn\u00fa\u0165 do upstream.<\/p>\n<p>Helm je zalo\u017een\u00fd na troch z\u00e1kladn\u00fdch konceptoch:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 popis a s\u00fabor parametrov, ktor\u00e9 s\u00fa mo\u017en\u00e9 pre v\u00e1\u0161 manifest.\u00a0<\/li>\n<li><strong>Konfigur\u00e1cia<\/strong> \u2014 to znamen\u00e1 hodnoty, ktor\u00e9 bud\u00fa aplikovan\u00e9 (text, \u010d\u00edseln\u00e9 hodnoty a pod.).<\/li>\n<li><strong>Verzia<\/strong> zhroma\u017e\u010fuje dva horn\u00e9 komponenty, ktor\u00e9 sa spolu premenia na Release. Vydania m\u00f4\u017eeme verziova\u0165, \u010d\u00edm organizujeme \u017eivotn\u00fd cyklus: men\u0161ie pri in\u0161tal\u00e1cii a v\u00e4\u010d\u0161ie pri upgrade, downgrade alebo rollback.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Architekt\u00fara Helm<\/h2>\n<p>\nNa sch\u00e9me konceptu\u00e1lne zobrazen\u00e1 vysok\u00e1 \u00farove\u0148 architekt\u00fary Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPripom\u00ednam, \u017ee Helm je nie\u010do, \u010do s\u00favis\u00ed s Kubernetes. Preto sa nezaob\u00eddeme bez Kubernetes klastrov (obd\u013a\u017enik). Komponent kube-apiserver sa nach\u00e1dza na master uzle. Bez Helmu m\u00e1me Kubeconfig. Helm prin\u00e1\u0161a jednu mal\u00fa bin\u00e1rku, ak to m\u00f4\u017eem tak nazva\u0165, n\u00e1stroj Helm CLI, ktor\u00fd je nain\u0161talovan\u00fd na po\u010d\u00edta\u010di, notebooku, mainframe \u2014 na \u010domko\u013evek.<\/p>\n<p>Ale to nesta\u010d\u00ed. Helm m\u00e1 serverov\u00fd komponent Tiller. Ten zastupuje z\u00e1ujmy Helmu vn\u00fatri klastrov, je to aplik\u00e1cia vo vn\u00fatri klastrov Kubernetes, ako ktor\u00e1ko\u013evek in\u00e1.<\/p>\n<p>\u010eal\u0161\u00ed komponent Chart Repo \u2014 repozit\u00e1r s chartami. Existuje ofici\u00e1lny repozit\u00e1r, a m\u00f4\u017ee existova\u0165 aj s\u00fakromn\u00fd repozit\u00e1r spolo\u010dnosti alebo projektu.<\/p>\n<h3>Interakcia<\/h3>\n<p>\nPozrime sa, ako interaguj\u00fa komponenty architekt\u00fary, ke\u010f chceme nain\u0161talova\u0165 aplik\u00e1ciu pomocou Helmu.<\/p>\n<ul>\n<li>Hovor\u00edme <code>Helm install<\/code>, obraciame sa na repozit\u00e1r (Chart Repo) a z\u00edskame Helm chart.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>N\u00e1stroj Helm (Helm CLI) interaguje s Kubeconfig, aby zistil, na ktor\u00fd klaster sa obr\u00e1ti\u0165.\u00a0<\/li>\n<li>Po z\u00edskan\u00ed t\u00fdchto inform\u00e1ci\u00ed sa n\u00e1stroj obracia na Tiller, ktor\u00fd sa nach\u00e1dza v na\u0161om klastri, u\u017e ako na aplik\u00e1ciu.\u00a0<\/li>\n<li>Tiller sa obracia na Kube-apiserver, aby vykonal akcie v Kubernetes, vytvoril nejak\u00e9 objekty (slu\u017eby, pody, repliky, tajomstv\u00e1 at\u010f.).<\/li>\n<\/ul>\n<p>\nN\u00e1sledne zlo\u017e\u00edme sch\u00e9mu, aby sme videli vektory \u00fatokov, ktor\u00fdm m\u00f4\u017ee by\u0165 cel\u00e1 architekt\u00fara Helmu vystaven\u00e1. A potom sa pok\u00fasime ju ochr\u00e1ni\u0165.<\/p>\n<h3>Vektor \u00fatokov<\/h3>\n<p>\nPrv\u00e9 potenci\u00e1lne slab\u00e9 miesto \u2014 <strong>privilegovan\u00fd API<\/strong>\u2014<strong>pou\u017e\u00edvate\u013e<\/strong>. V r\u00e1mci sch\u00e9my je to hacker, ktor\u00fd z\u00edskal administr\u00e1torsk\u00fd pr\u00edstup k Helm CLI.<\/p>\n<p><strong>Nepprivilegovan\u00fd API pou\u017e\u00edvate\u013e<\/strong> taktie\u017e m\u00f4\u017ee predstavova\u0165 nebezpe\u010denstvo, ak je niekde nabl\u00edzku. Tento pou\u017e\u00edvate\u013e bude ma\u0165 in\u00fd kontext, napr\u00edklad m\u00f4\u017ee by\u0165 zafixovan\u00fd v jednom namespace klastru v nastaveniach Kubeconfig.<\/p>\n<p>Najzauj\u00edmavej\u0161\u00edm vektorom \u00fatoku m\u00f4\u017ee by\u0165 proces, ktor\u00fd sa nach\u00e1dza vo vn\u00fatri klastru niekde nabl\u00edzku Tilleru a m\u00f4\u017ee s n\u00edm komunikova\u0165. M\u00f4\u017ee to by\u0165 webov\u00fd server alebo mikroservis, ktor\u00fd vid\u00ed sie\u0165ov\u00e9 prostredie klastru.<\/p>\n<p>Exotick\u00e1, ale \u010doraz popul\u00e1rnej\u0161ia varianta \u00fatoku je spojen\u00e1 s Chart Repo. Chart vytvoren\u00fd nepoctiv\u00fdm autorom m\u00f4\u017ee obsahova\u0165 nebezpe\u010dn\u00fd zdroj, a vy ho vykon\u00e1te, prij\u00edmaj\u00fac ho na vieru. Alebo m\u00f4\u017ee zmeni\u0165 chart, ktor\u00fd s\u0165ahujete z ofici\u00e1lneho repozit\u00e1ra, a napr\u00edklad vytvori\u0165 zdroj vo forme polit\u00edk a eskalova\u0165 si pr\u00edstup.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSk\u00fasime sa br\u00e1ni\u0165 proti \u00fatokom zo v\u0161etk\u00fdch \u0161tyroch str\u00e1n a zisti\u0165, kde s\u00fa tu probl\u00e9my v architekt\u00fare Helm a kde, mo\u017eno, nie s\u00fa.<\/p>\n<p>Roz\u0161\u00edrime sch\u00e9mu, prid\u00e1me viac prvkov, ale zachov\u00e1me v\u0161etky z\u00e1kladn\u00e9 zlo\u017eky.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm CLI komunikuje s Chart Repo, interaguje s Kubeconfig, pr\u00e1ca sa pren\u00e1\u0161a do klastru do komponentu Tiller.<\/p>\n<p>Tiller je zast\u00fapen\u00fd dvoma objektmi:<\/p>\n<ul>\n<li>Tiller-deploy svc, ktor\u00fd vystavuje ur\u010dit\u00fd slu\u017ebu;<\/li>\n<li>Tiller-deploy pod (na sch\u00e9me v jedinom exempl\u00e1ri v jednej replik\u00e1cii), na ktorom be\u017e\u00ed cel\u00e1 z\u00e1\u0165a\u017e, ktor\u00fd sa obracia na klaster.<\/li>\n<\/ul>\n<p>\nNa interakciu sa pou\u017e\u00edvaj\u00fa r\u00f4zne protokoly a sch\u00e9my. Z h\u013eadiska bezpe\u010dnosti n\u00e1s najviac zauj\u00edmaj\u00fa:<\/p>\n<ul>\n<li>Mechanizmus, pomocou ktor\u00e9ho Helm CLI oslovuje chart repo: ak\u00fd protokol, \u010di existuje autentifik\u00e1cia a \u010do s t\u00fdm m\u00f4\u017eeme urobi\u0165.<\/li>\n<li>Protokol, ktor\u00fdm Helm CLI, pomocou kubectl, komunikuje s Tillerom. Je to RPC server, nain\u0161talovan\u00fd vo vn\u00fatri klastru.<\/li>\n<li>S\u00e1m Tiller je dostupn\u00fd pre mikroservisy, ktor\u00e9 sa nach\u00e1dzaj\u00fa v klastru, a interaguje s Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrejdeme v\u0161etky tieto smery postupne.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Je bezpredmetn\u00e9 hovori\u0165 o akejko\u013evek bezpe\u010dnosti Helm alebo inej slu\u017eby vo vn\u00fatri klastru, ak nie je zapnut\u00fd RBAC.<\/p><\/blockquote>\n<p>\nZd\u00e1 sa, \u017ee to nie je najnov\u0161ia odpor\u00fa\u010danie, ale som si ist\u00fd, \u017ee mnoh\u00ed st\u00e1le nezapli RBAC ani v produkcii, preto\u017ee je to ve\u013ea starost\u00ed a treba ve\u013ea nastavi\u0165. Napriek tomu vyz\u00fdvam na to, aby ste tak urobili.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/37ee8aeb2b331b75ea5569c0b114a756.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/rbac.dev\/\">https:\/\/rbac.dev\/<\/a><\/noindex> \u2014 pr\u00e1vny web pre RBAC. Obsahuje mno\u017estvo zauj\u00edmav\u00fdch materi\u00e1lov, ktor\u00e9 pom\u00f4\u017eu nastavi\u0165 RBAC, uk\u00e1\u017eu, pre\u010do je dobr\u00fd a ako s n\u00edm \u017ei\u0165 v produkcii.<\/p>\n<p>Sk\u00fasim vysvetli\u0165, ako funguje Tiller a RBAC. Tiller funguje vo vn\u00fatri klastera pod nejak\u00fdm servisn\u00fdm \u00fa\u010dtom. Spravidla, ak nie je nastaven\u00e9 RBAC, bude to superu\u017e\u00edvate\u013e. V z\u00e1kladnej konfigur\u00e1cii bude Tiller administr\u00e1torom. Preto sa \u010dasto hovor\u00ed, \u017ee Tiller je SSH tunel do v\u00e1\u0161ho klastera. V skuto\u010dnosti je to pravda, tak\u017ee m\u00f4\u017eete pou\u017ei\u0165 samostatn\u00fd \u0161pecializovan\u00fd servisn\u00fd \u00fa\u010det namiesto Predvolen\u00e9ho servisn\u00e9ho \u00fa\u010dtu na sch\u00e9me vy\u0161\u0161ie.<\/p>\n<p>Ke\u010f inicializujete Helm, prv\u00fdkr\u00e1t ho in\u0161talujete na server, m\u00f4\u017eete zada\u0165 servisn\u00fd \u00fa\u010det pomocou <code>--service-account<\/code>. To umo\u017en\u00ed pou\u017e\u00edva\u0165 u\u017e\u00edvate\u013ea s minim\u00e1lnym potrebn\u00fdm s\u00faborom pr\u00e1v. Pravda, budete musie\u0165 vytvori\u0165 tak\u00fa \"girlandu\": Role a RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBohu\u017eia\u013e, Helm to za v\u00e1s neurob\u00ed. Vy alebo v\u00e1\u0161 spr\u00e1vca Kubernetes klastera mus\u00edte vopred pripravi\u0165 s\u00fabor Role, RoleBinding pre servisn\u00fd \u00fa\u010det, aby ste ho mohli odovzda\u0165 Helmu.<\/p>\n<p>Objavuje sa ot\u00e1zka \u2014 ak\u00fd je rozdiel medzi Role a ClusterRole? Rozdiel spo\u010d\u00edva v tom, \u017ee ClusterRole sa uplat\u0148uje pre v\u0161etky namespaces, na rozdiel od oby\u010dajn\u00fdch Role a RoleBinding, ktor\u00e9 funguj\u00fa iba pre \u0161pecializovan\u00fd namespace. M\u00f4\u017eete nastavi\u0165 politiky pre cel\u00fd klaster a v\u0161etky namespaces, ako aj personalizovane pre ka\u017ed\u00fd namespace osobitne.<\/p>\n<p>Stoj\u00ed za zmienku, \u017ee RBAC umo\u017e\u0148uje vyrie\u0161i\u0165 e\u0161te jeden ve\u013ek\u00fd probl\u00e9m. Mnoh\u00ed si s\u0165a\u017euj\u00fa, \u017ee Helm, bohu\u017eia\u013e, nie je multitenancy (nepodporuje viacn\u00e1jomn\u00fast). Ak viacero t\u00edmov konzumuje klaster a pou\u017e\u00edva Helm, nie je mo\u017en\u00e9 v z\u00e1sade nastavi\u0165 politiky a ohrani\u010di\u0165 ich pr\u00edstup v r\u00e1mci tohto klastera, preto\u017ee existuje nejak\u00fd servisn\u00fd \u00fa\u010det, pod ktor\u00fdm funguje Helm, a on vytvor\u00ed pod n\u00edm v\u0161etky zdroje v klasteri, \u010do je ob\u010das ve\u013emi nepr\u00edjemn\u00e9. To je pravda \u2014 ako samotn\u00fd bin\u00e1rny s\u00fabor, ako proces, <strong>Helm Tiller nem\u00e1 pojem o multitenancy<\/strong>.<\/p>\n<p>Av\u0161ak existuje skvel\u00fd sp\u00f4sob, ktor\u00fd umo\u017e\u0148uje spusti\u0165 Tiller v klasteri viackr\u00e1t. S t\u00fdm nie s\u00fa \u017eiadne probl\u00e9my, Tiller mo\u017eno spusti\u0165 v ka\u017edom namespace. T\u00fdmto sp\u00f4sobom m\u00f4\u017eete vyu\u017ei\u0165 RBAC, Kubeconfig ako kontext a obmedzi\u0165 pr\u00edstup k \u0161peci\u00e1lnemu Helmu.<\/p>\n<p>Bude to vyzera\u0165 nasledovne.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNapr\u00edklad existuj\u00fa dva Kubeconfig s kontextom pre r\u00f4zne t\u00edmy (dve namespaces): X Team pre t\u00edm v\u00fdvoj\u00e1rov a cluster admina. Cluster admina m\u00e1 svoj \u0161irok\u00fd Tiller, ktor\u00fd sa nach\u00e1dza v namespace Kube-system, pri\u010dom m\u00e1 pokro\u010dil\u00fd service-account. A samostatn\u00fd namespace pre t\u00edm v\u00fdvoj\u00e1rov, ktor\u00ed m\u00f4\u017eu nasadzova\u0165 svoje slu\u017eby do \u0161peci\u00e1lneho namespace.<\/p>\n<p>Toto je efekt\u00edvny pr\u00edstup, Tiller nie je tak\u00fd n\u00e1ro\u010dn\u00fd, aby to mohlo v\u00fdrazne ovplyvni\u0165 v\u00e1\u0161 rozpo\u010det. Je to jedno z r\u00fdchlych rie\u0161en\u00ed.<\/p>\n<blockquote><p>Nev\u00e1hajte samostatne nastavi\u0165 Tiller a poskytn\u00fa\u0165 Kubeconfig s kontextom pre t\u00edm, pre konkr\u00e9tneho v\u00fdvoj\u00e1ra alebo pre prostredie: Dev, Staging, Production (je nepravdepodobn\u00e9, \u017ee v\u0161etko bude na jednom clustri, av\u0161ak je to mo\u017en\u00e9).<\/p><\/blockquote>\n<p>\nPokra\u010duj\u00fac v na\u0161om pr\u00edbehu, prepneme sa z RBAC a porozpr\u00e1vame sa o ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm pou\u017e\u00edva ConfigMaps ako \u00falo\u017eisko \u00fadajov. Ke\u010f sme hovorili o architekt\u00fare, nikde tam neexistovala datab\u00e1za, v ktorej by boli ulo\u017een\u00e9 inform\u00e1cie o relezoch, konfigur\u00e1ci\u00e1ch, rollbacks at\u010f. Na to sl\u00fa\u017ei ConfigMaps.<\/p>\n<p>Hlavn\u00fd probl\u00e9m s ConfigMaps je zn\u00e1my \u2014 nie s\u00fa bezpe\u010dn\u00e9 v z\u00e1sade, v nich <strong>nie je mo\u017en\u00e9 uchov\u00e1va\u0165 sensitive-\u00fadaje<\/strong>. Hovor\u00edme o v\u0161etkom, \u010do by nemalo unikn\u00fa\u0165 za slu\u017ebu, napr\u00edklad hesl\u00e1. Najnativnej\u0161\u00edm sp\u00f4sobom pre Helm teraz je prechod od pou\u017e\u00edvania ConfigMaps k tajomstv\u00e1m.<\/p>\n<p>Rob\u00ed sa to ve\u013emi jednoducho. Predefinujete nastavenie Tiller a ur\u010d\u00edte, \u017ee \u00falo\u017eiskom bud\u00fa tajomstv\u00e1. Potom pri ka\u017edom nasaden\u00ed dostanete nie ConfigMap, ale tajomstvo.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00f4\u017eete namieta\u0165, \u017ee samotn\u00e9 tajomstv\u00e1 s\u00fa zvl\u00e1\u0161tna koncepcia a nie s\u00fa ve\u013emi bezpe\u010dn\u00e9. Av\u0161ak, je treba si uvedomi\u0165, \u017ee t\u00fdmto sa zaoberaj\u00fa samotn\u00ed v\u00fdvoj\u00e1ri Kubernetes. Od verzie 1.10, t.j. u\u017e dos\u0165 d\u00e1vno, je mo\u017enos\u0165, aspo\u0148 v verejn\u00fdch cloudov\u00fdch slu\u017eb\u00e1ch, pripoji\u0165 spr\u00e1vne \u00falo\u017eisko na uchov\u00e1vanie tajomstiev. V s\u00fa\u010dasnosti t\u00edm pracuje na e\u0161te lep\u0161om spr\u00edstupnen\u00ed tajomstiev, jednotliv\u00fdm podom alebo in\u00fdm entit\u00e1m.<\/p>\n<blockquote><p>\u00dalo\u017eisko Helm je lep\u0161ie prelo\u017ei\u0165 na tajomstv\u00e1, a tie n\u00e1sledne zabezpe\u010di\u0165 centralizovane.<\/p><\/blockquote>\n<p>\nSamozrejme, zostane <strong>limit na uchov\u00e1vanie \u00fadajov vo ve\u013ekosti 1 MB<\/strong>. Helm pou\u017e\u00edva etcd ako distribuovan\u00e9 \u00falo\u017eisko pre ConfigMaps. Pova\u017euj\u00fa to za vhodn\u00fd chunk d\u00e1t pre replik\u00e1cie a podobne. O tejto t\u00e9me sa vedie zauj\u00edmav\u00e1 diskusia na Reddite, odpor\u00fa\u010dam n\u00e1js\u0165 si tento z\u00e1bavn\u00fd \u010dl\u00e1nok na v\u00edkend alebo si pre\u010d\u00edta\u0165 zhrnutie. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">tu<\/a><\/noindex>.<\/p>\n<h3>Chart Repos<\/h3>\n<p>\n\u010carty s\u00fa najviac soci\u00e1lne zranite\u013en\u00e9 a m\u00f4\u017eu sa sta\u0165 zdrojom \"Man in the middle\", obzvl\u00e1\u0161\u0165 ak pou\u017e\u00edvate \u0161tandardn\u00e9 rie\u0161enie. Ide najm\u00e4 o repozit\u00e1re, ktor\u00e9 s\u00fa vystaven\u00e9 cez HTTP.<\/p>\n<blockquote><p>Rozhodne je potrebn\u00e9 vystavi\u0165 Helm Repo cez HTTPS \u2013 to je najlep\u0161\u00ed variant a nie je to drah\u00e9.<\/p><\/blockquote>\n<p>\nVenujte pozornos\u0165 <strong>mechanizmu podpisov \u010dartov<\/strong>. Technol\u00f3gia je neuverite\u013ene jednoduch\u00e1. Je to to ist\u00e9, \u010do pou\u017e\u00edvate na GitHub-e, be\u017en\u00e1 PGP ma\u0161in\u00e9ria s verejn\u00fdmi a s\u00fakromn\u00fdmi k\u013e\u00fa\u010dmi. Nastavte si to a budete si ist\u00ed, \u017ee m\u00e1te potrebn\u00e9 k\u013e\u00fa\u010de a podpisujete v\u0161etko, \u010do je skuto\u010dne v\u00e1\u0161 chart.<\/p>\n<p>Okrem toho, <strong>Helm klient podporuje TLS<\/strong> (nie v zmysle HTTP zo strany servera, ale vz\u00e1jomn\u00fd TLS). M\u00f4\u017eete pou\u017ei\u0165 serverov\u00e9 a klientsk\u00e9 k\u013e\u00fa\u010de na komunik\u00e1ciu. Poviem \u00faprimne, ja tento mechanizmus nepou\u017e\u00edvam kv\u00f4li neochote vo\u010di vz\u00e1jomn\u00fdm certifik\u00e1tom. V podstate, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2013 hlavn\u00fd n\u00e1stroj na vystavovanie Helm Repos pre Helm 2 \u2013 podporuje aj z\u00e1kladn\u00e9 autentifik\u00e1cie. M\u00f4\u017eete pou\u017ei\u0165 z\u00e1kladn\u00fa autentifik\u00e1ciu, ak je to pohodlnej\u0161ie a pokojnej\u0161ie.<\/p>\n<p>Existuje aj plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, ktor\u00fd umo\u017e\u0148uje umiest\u0148ova\u0165 Chart Repos do Google Cloud Storage. Je to ve\u013emi pohodln\u00e9, skvele funguje a je dostato\u010dne bezpe\u010dn\u00e9, preto\u017ee sa realizuj\u00fa v\u0161etky pop\u00edsan\u00e9 mechanizmy.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAk zapnete HTTPS alebo TLS, pou\u017eijete mTLS, zapnete z\u00e1kladn\u00fa autentifik\u00e1ciu na zn\u00ed\u017eenie riz\u00edk, z\u00edskate bezpe\u010dn\u00fd komunika\u010dn\u00fd kan\u00e1l medzi Helm CLI a Chart Repo.<\/p>\n<h3>gRPC API<\/h3>\n<p>\n\u010eal\u0161\u00ed krok je ve\u013emi zodpovedn\u00fd \u2013 zabezpe\u010di\u0165 Tiller, ktor\u00fd je v klastre a na jednej strane je serverom, na druhej strane sa s\u00e1m obracia na in\u00e9 komponenty a sna\u017e\u00ed sa predstavi\u0165 ako niekto in\u00fd.<\/p>\n<p>Ako som u\u017e povedal, Tiller je slu\u017eba, ktor\u00e1 vystavuje gRPC, Helm klient sa ku nemu dost\u00e1va cez gRPC. Predvolene je samozrejme TLS vypnut\u00e9. Pre\u010do je to takto nastaven\u00e9 \u2013 ot\u00e1zka na diskusiu, mysl\u00edm, \u017ee ide o zjednodu\u0161enie nastavenia na za\u010diatku.<\/p>\n<blockquote><p>Pre produkciu a dokonca aj pre staging odpor\u00fa\u010dam zapn\u00fa\u0165 TLS na gRPC.<\/p><\/blockquote>\n<p>\nPod\u013ea m\u00f4jho n\u00e1zoru, na rozdiel od mTLS pre chart, je tu toto vhodn\u00e9 a ve\u013emi jednoduch\u00e9 \u2014 vytvor\u00edte PQI infra\u0161trukt\u00faru, vytvor\u00edte certifik\u00e1t, spust\u00edte Tiller a odovzd\u00e1te certifik\u00e1t po\u010das inicializ\u00e1cie. Potom m\u00f4\u017eete vykon\u00e1va\u0165 v\u0161etky Helm pr\u00edkazy s generovan\u00fdm certifik\u00e1tom a s\u00fakromn\u00fdm k\u013e\u00fa\u010dom.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00fdmto sa ochr\u00e1nite pred v\u0161etk\u00fdmi po\u017eiadavkami na Tiller zvonka klastrom.<\/p>\n<p>Tak\u017ee sme zabezpe\u010dili pripojovac\u00ed kan\u00e1l k Tilleru, u\u017e sme prediskutovali RBAC a nastavili pr\u00e1va Kubernetes apiserver, zmen\u0161ili dom\u00e9nu, s ktorou m\u00f4\u017ee interagova\u0165.<\/p>\n<h2>Zabezpe\u010den\u00fd Helm<\/h2>\n<p>\nPozrime sa na fin\u00e1lnu sch\u00e9mu. Toto je t\u00e1 ist\u00e1 architekt\u00fara s t\u00fdmi ist\u00fdmi \u0161\u00edpkami.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u0161etky pripojenia teraz pokojne m\u00f4\u017eeme zn\u00e1zorni\u0165 zelenou farbou:<\/p>\n<ul>\n<li>pre Chart Repo pou\u017e\u00edvame TLS alebo mTLS a z\u00e1kladn\u00fa autentifik\u00e1ciu;<\/li>\n<li>mTLS pre Tiller, a je vystaven\u00fd ako gRPC slu\u017eba s TLS, pou\u017e\u00edvame certifik\u00e1ty;<\/li>\n<li>v klastre sa pou\u017e\u00edva \u0161peci\u00e1lny servisn\u00fd \u00fa\u010det s rolou a RoleBindingom.\u00a0<\/li>\n<\/ul>\n<p>\nV\u00fdrazne sme zabezpe\u010dili klaster, ale niekto m\u00fadry povedal:<\/p>\n<blockquote><p>\u201eAbsol\u00fatne bezpe\u010dn\u00e9 rie\u0161enie m\u00f4\u017ee by\u0165 len jedno \u2014 vypnut\u00fd po\u010d\u00edta\u010d, ktor\u00fd sa nach\u00e1dza v bet\u00f3novej krabici a str\u00e1\u017eia ho vojaci\u201c.<\/p><\/blockquote>\n<p>\nExistuj\u00fa r\u00f4zne sp\u00f4soby manipul\u00e1cie s d\u00e1tami a nach\u00e1dzania nov\u00fdch vektorov \u00fatokov. Som si v\u0161ak ist\u00fd, \u017ee tieto odpor\u00fa\u010dania umo\u017enia realizova\u0165 z\u00e1kladn\u00fd priemyseln\u00fd \u0161tandard bezpe\u010dnosti.<\/p>\n<h2>Bonus<\/h2>\n<p>\nT\u00e1to \u010das\u0165 nes\u00favis\u00ed priamo s bezpe\u010dnos\u0165ou, ale bude tie\u017e u\u017eito\u010dn\u00e1. Uk\u00e1\u017eem niektor\u00e9 zauj\u00edmav\u00e9 veci, o ktor\u00fdch m\u00e1lo \u013eud\u00ed vie. Napr\u00edklad, ako h\u013eada\u0165 charty \u2014 ofici\u00e1lne a neofici\u00e1lne.<\/p>\n<p>V repozit\u00e1ri <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> teraz je asi 300 chartov a dva pr\u00fady: stable a incubator. Ten, kto prispieva, dokonale vie, ako \u0165a\u017ek\u00e9 je dosta\u0165 sa z incubator do stable, a ako \u013eahk\u00e9 je z stable vypadn\u00fa\u0165. Av\u0161ak, nie je to najlep\u0161\u00ed n\u00e1stroj na h\u013eadanie chartov pre Prometheus a v\u0161etko, \u010do sa v\u00e1m p\u00e1\u010di, z jedn\u00e9ho jednoduch\u00e9ho d\u00f4vodu \u2014 nie je to port\u00e1l, kde je pohodln\u00e9 h\u013eada\u0165 bal\u00edky.<\/p>\n<p>Ale existuje slu\u017eba <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, s pomocou ktorej je h\u013eadanie chartov ove\u013ea pohodlnej\u0161ie. Najd\u00f4le\u017eitej\u0161ie je, \u017ee tam je ove\u013ea viac extern\u00fdch repozit\u00e1rov a je dostupn\u00fdch takmer 800 chartov. Navy\u0161e, m\u00f4\u017eete pripoji\u0165 svoj repozit\u00e1r, ak z nejak\u00e9ho d\u00f4vodu nechcete odosiela\u0165 svoje charty do stable.<\/p>\n<p>Vysk\u00fa\u0161ajte hub.helm.sh a po\u010fme ho spolu rozv\u00edja\u0165. T\u00e1to slu\u017eba je pod Helm projektom a m\u00f4\u017eete prispie\u0165 aj do jeho UI, ak ste frontendov\u00fd v\u00fdvoj\u00e1r a chcete jednoducho vylep\u0161i\u0165 jeho vzh\u013ead.<\/p>\n<p>E\u0161te chcem upriami\u0165 va\u0161u pozornos\u0165 na <strong>Integr\u00e1ciu Open Service Broker API<\/strong>. Znie to \u0165a\u017ekop\u00e1dne a nejasne, ale rie\u0161i \u00falohy, s ktor\u00fdmi sa v\u0161etci stret\u00e1vaj\u00fa. Vysvetl\u00edm na jednoduchom pr\u00edklade.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExistuje Kubernetes klaster, v ktorom chceme spusti\u0165 klasick\u00fa aplik\u00e1ciu \u2014 WordPress. Zvy\u010dajne je potrebn\u00e1 datab\u00e1za na pln\u00fa funk\u010dnos\u0165. Existuje mnoho r\u00f4znych rie\u0161en\u00ed, napr\u00edklad, m\u00f4\u017eeme spusti\u0165 svoj stateful service. To nie je ve\u013emi pohodln\u00e9, ale mnoh\u00ed to tak robia.<\/p>\n<p>In\u00ed, napr\u00edklad my v Chainstack, pou\u017e\u00edvaj\u00fa spravovan\u00e9 datab\u00e1zy, ako MySQL alebo PostgreSQL, pre servery. Preto m\u00e1me DB niekde v oblaku.<\/p>\n<p>Ale vznik\u00e1 probl\u00e9m: mus\u00edme prepoji\u0165 n\u00e1\u0161 service s datab\u00e1zou, vytvori\u0165 flavor datab\u00e1zy, odovzda\u0165 credential a nejako nimi spravova\u0165. To v\u0161etko sa zvy\u010dajne rob\u00ed ru\u010dne syst\u00e9mov\u00fdm administr\u00e1torom alebo v\u00fdvoj\u00e1rom. A nie je s t\u00fdm \u017eiadny probl\u00e9m, ke\u010f je m\u00e1lo aplik\u00e1ci\u00ed. Ke\u010f ich je ve\u013ea, potrebujete kombajn. Tak\u00fd kombajn existuje \u2014 to je Service Broker. Umo\u017e\u0148uje pou\u017e\u00edva\u0165 \u0161peci\u00e1lny plugin ku klasteru verejn\u00e9ho oblakov\u00e9ho poskytovate\u013ea a objedn\u00e1va\u0165 zdroje od poskytovate\u013ea cez Broker, akoby to bolo API. Na to m\u00f4\u017eete pou\u017ei\u0165 nat\u00edvne prostriedky Kubernetes.<\/p>\n<p>Je to ve\u013emi jednoduch\u00e9. M\u00f4\u017eete po\u017eiada\u0165 napr\u00edklad o Managed MySQL v Azure s z\u00e1kladn\u00fdm tier (to si m\u00f4\u017eete nastavi\u0165). S pou\u017eit\u00edm API Azure bude datab\u00e1za vytvoren\u00e1 a pripraven\u00e1 na pou\u017e\u00edvanie. Nemus\u00edte do toho zasahova\u0165, o to sa star\u00e1 plugin. Napr\u00edklad, OSBA (plugin Azure) vr\u00e1ti credential do service, odovzd\u00e1 to Helm. M\u00f4\u017eete pou\u017e\u00edva\u0165 WordPress s cloudov\u00fdm MySQL, \u00faplne sa nezam\u00fd\u0161\u013ea\u0165 o spravovan\u00fdch datab\u00e1zach a netr\u00e1pi\u0165 sa o stateful services vo vn\u00fatri.<\/p>\n<blockquote><p>M\u00f4\u017eeme poveda\u0165, \u017ee Helm je lepidlo, ktor\u00e9 z jednej strany umo\u017e\u0148uje nasadzova\u0165 slu\u017eby, a z druhej strany \u2014 vyu\u017e\u00edva\u0165 zdroje oblakov\u00fdch poskytovate\u013eov.<\/p><\/blockquote>\n<p>\nM\u00f4\u017eete nap\u00edsa\u0165 svoj plugin a vyu\u017ei\u0165 cel\u00fa t\u00fato hist\u00f3riu on-premise. Potom budete ma\u0165 len svoj plugin ku korpor\u00e1tnemu Cloud poskytovate\u013eovi. Odpor\u00fa\u010dam vysk\u00fa\u0161a\u0165 tak\u00fd pr\u00edstup, najm\u00e4 ak m\u00e1te ve\u013ek\u00fd rozsah a chcete r\u00fdchlo nasadi\u0165 dev, staging alebo cel\u00fa infra\u0161trukt\u00faru pod funkciu. To u\u013eah\u010d\u00ed \u017eivot va\u0161im operations alebo DevOps.<\/p>\n<p>E\u0161te jeden n\u00e1lez, ktor\u00fd som u\u017e spom\u00ednal \u2014 to je <strong>plugin helm-gcs<\/strong>, ktor\u00fd umo\u017e\u0148uje pou\u017e\u00edva\u0165 Google-buckets (objektov\u00e9 \u00falo\u017eisko) na ukladanie Helm chartov.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa za\u010diatok potrebujete iba \u0161tyri pr\u00edkazy:<\/p>\n<ol>\n<li>nain\u0161talova\u0165 plugin;<\/li>\n<li>iniciova\u0165 ho;<\/li>\n<li>nastavi\u0165 cestu k bucketu, ktor\u00fd sa nach\u00e1dza v gcp;<\/li>\n<li>publikova\u0165 grafy \u0161tandardn\u00fdm sp\u00f4sobom.<\/li>\n<\/ol>\n<p>\nKr\u00e1sa spo\u010d\u00edva v tom, \u017ee sa bude pou\u017e\u00edva\u0165 nat\u00edvny sp\u00f4sob gcp na autoriz\u00e1ciu. M\u00f4\u017eete pou\u017ei\u0165 slu\u017eobn\u00fd \u00fa\u010det, \u00fa\u010det v\u00fdvoj\u00e1ra \u2013 \u010doko\u013evek. Je to ve\u013emi pohodln\u00e9 a ni\u010d to nestoj\u00ed na prev\u00e1dzku. Ak, ako ja, propagujete filozofiu bez ops, bude to ve\u013emi pohodln\u00e9, najm\u00e4 pre mal\u00e9 t\u00edmy.<\/p>\n<h2>Alternat\u00edvy<\/h2>\n<p>\nHelm nie je jedin\u00e9 rie\u0161enie na spr\u00e1vu slu\u017eieb. K nemu je ve\u013ea ot\u00e1zok, pravdepodobne preto sa tak r\u00fdchlo objavila tretia verzia. Samozrejme, existuj\u00fa alternat\u00edvy.<\/p>\n<p>M\u00f4\u017eu to by\u0165 ako \u0161pecializovan\u00e9 rie\u0161enia, napr\u00edklad Ksonnet alebo Metaparticle. M\u00f4\u017eete pou\u017ei\u0165 svoje klasick\u00e9 prostriedky spr\u00e1vy infra\u0161trukt\u00fary (Ansible, Terraform, Chef a pod.) na rovnak\u00e9 \u00fa\u010dely, o ktor\u00fdch som hovoril.<\/p>\n<p>Nakoniec existuje rie\u0161enie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Operator Framework<\/a><\/noindex>, ktor\u00e9ho popularita rastie.<\/p>\n<blockquote><p>Operator Framework je hlavn\u00e1 alternat\u00edva k Helmu, na ktor\u00fa by ste sa mali zamera\u0165.<\/p><\/blockquote>\n<p>\nJe to viac nat\u00edvne pre CNCF a Kubernetes, <strong>ale vstupn\u00fd prah je ove\u013ea vy\u0161\u0161\u00ed<\/strong>, je potrebn\u00e9 viac programova\u0165 a menej opisova\u0165 manifiesty.<\/p>\n<p>Existuj\u00fa r\u00f4zne doplnky, ako Draft, Scaffold. Tie ve\u013emi u\u013eah\u010duj\u00fa \u017eivot, napr\u00edklad v\u00fdvoj\u00e1rom zjednodu\u0161uj\u00fa cyklus odosielania a sp\u00fa\u0161\u0165ania Helmu na nasadenie testovacieho prostredia. Nazval by som ich roz\u0161\u00edreniami mo\u017enost\u00ed.<\/p>\n<p>Tu je n\u00e1zorn\u00fd graf o tom, kde sa \u010do nach\u00e1dza.<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dnos\u0165 Helm\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa osi x je \u00farove\u0148 va\u0161ej osobnej kontroly nad udalos\u0165ami, na osi y \u2013 \u00farove\u0148 nat\u00edvnosti Kubernetes. Helm verzia 2 sa nach\u00e1dza niekde uprostred. V verzii 3 nie je obrovsk\u00fd skok, ale zlep\u0161il sa aj kontrola aj \u00farove\u0148 nat\u00edvnosti. Rie\u0161enia \u00farovne Ksonnet s\u00fa predsa len slab\u0161ie ako Helm 2. Av\u0161ak stoj\u00ed za to sa na ne pozrie\u0165, aby ste vedeli, \u010do v\u0161etko existuje vo svete. Samozrejme, v\u00e1\u0161 konfigura\u010dn\u00fd mana\u017e\u00e9r bude vo va\u0161ej kontrole, ale nie je \u00faplne nat\u00edvny pre Kubernetes.<\/p>\n<p>Operator Framework je \u00faplne nat\u00edvny pre Kubernetes a umo\u017e\u0148uje elegantnej\u0161ie a prec\u00edznej\u0161ie spravova\u0165 (ale pam\u00e4tajme na \u00farove\u0148 vstupu). Sk\u00f4r to vhodn\u00e9 pre \u0161pecializovan\u00fa aplik\u00e1ciu a jej mana\u017eovanie, ne\u017e pre hromadn\u00e9ho kombajna na balenie ve\u013ek\u00e9ho mno\u017estva aplik\u00e1ci\u00ed pomocou Helmu.<\/p>\n<p>Roz\u0161\u00edrenia len tro\u0161ka zlep\u0161uj\u00fa kontrolu, dop\u013a\u0148aj\u00fa workflow alebo \u0161etria kroky v CI\/CD pipeline.<\/p>\n<h2>Bud\u00facnos\u0165 Helmu<\/h2>\n<p>\nDobr\u00e1 spr\u00e1va je, \u017ee prich\u00e1dza Helm 3. U\u017e bol vydan\u00fd alpha-release verzie Helm 3.0.0-alpha.2, m\u00f4\u017eete si ho vysk\u00fa\u0161a\u0165. Je dos\u0165 stabiln\u00fd, ale funk\u010dnos\u0165 je zatia\u013e obmedzen\u00e1.<\/p>\n<p>Pre\u010do je potrebn\u00fd Helm 3? Predov\u0161etk\u00fdm ide o <strong>zru\u0161enie Tilleru<\/strong>, ako komponentu. To je, ako u\u017e rozumiete, obrovsk\u00fd krok dopredu, preto\u017ee z poh\u013eadu bezpe\u010dnosti architekt\u00fary sa v\u0161etko zjednodu\u0161uje.<\/p>\n<p>Ke\u010f sa vytv\u00e1ral Helm 2, a to bolo v \u010dasoch Kubernetes 1.8 alebo dokonca sk\u00f4r, mnoh\u00e9 koncepty boli nezrel\u00e9. Napr\u00edklad koncept CRD sa teraz akt\u00edvne implementuje a Helm bude <strong>pou\u017e\u00edva\u0165 CRD<\/strong>, aby uchov\u00e1val \u0161trukt\u00fary. Bude mo\u017en\u00e9 pou\u017e\u00edva\u0165 iba klienta a nemus\u00edte ma\u0165 serverov\u00fa \u010das\u0165. T\u00fdm p\u00e1dom, vyu\u017e\u00edva\u0165 nat\u00edvne pr\u00edkazy Kubernetes na pr\u00e1cu so \u0161trukt\u00farami a zdrojmi. To je obrovsk\u00fd krok dopredu.<\/p>\n<p>Objav\u00ed sa <strong>podpora nat\u00edvnych OCI repozit\u00e1rov<\/strong> (Open Container Initiative). Toto je obrovsk\u00e1 iniciat\u00edva, a pre Helm je zauj\u00edmav\u00e1 predov\u0161etk\u00fdm pre umiest\u0148ovanie vlastn\u00fdch chartov. A\u017e do takej miery, \u017ee napr\u00edklad Docker Hub podporuje mnoho \u0161tandardov OCI. Nechcem predpoveda\u0165, ale je mo\u017en\u00e9, \u017ee klasick\u00ed poskytovatelia Docker-repozit\u00e1rov za\u010dn\u00fa pon\u00faka\u0165 mo\u017enos\u0165 umiestnenia va\u0161ich Helm chartov.<\/p>\n<p>Sporn\u00e1 pre m\u0148a je <strong>podpora Lua<\/strong>, ako templating engine na p\u00edsanie skriptov. Nie som ve\u013ek\u00fd fan\u00fa\u0161ik Luu, ale t\u00e1to mo\u017enos\u0165 bude \u00faplne volite\u013en\u00e1. Trikr\u00e1t som to overil \u2014 pou\u017eitie Luu nebude povinn\u00e9. Preto, kto chce m\u00f4c\u0165 pou\u017ei\u0165 Lua, ten, komu sa p\u00e1\u010di Go \u2014 pridajte sa k n\u00e1\u0161mu ve\u013ek\u00e9mu t\u00e1boru a pou\u017e\u00edvajte go-tmpl na to.<\/p>\n<p>Kone\u010dne to, \u010do mi ur\u010dite ch\u00fdbalo \u2014 <strong>zavedenie sch\u00e9my a valid\u00e1cia d\u00e1tov\u00fdch typov<\/strong>. U\u017e nebud\u00fa probl\u00e9my s int alebo string, nebude potrebn\u00e9 obklopova\u0165 nulu dvojit\u00fdmi \u00favodzovkami. Objav\u00ed sa JSON schema, ktor\u00e1 to umo\u017en\u00ed jasne pop\u00edsa\u0165 pre values.<\/p>\n<p>Bude ve\u013emi silno prepracovan\u00e1 <strong>event-driven model.<\/strong>U\u017e je konceptu\u00e1lne op\u00edsan\u00e1. Pozrite sa do vetvy Helm 3 a uvid\u00edte, ko\u013eko bolo pridan\u00fdch udalost\u00ed a hookov a in\u00e9ho, \u010do v\u00fdrazne zjednodu\u0161\u00ed a na druhej strane prid\u00e1 kontrolu nad procesmi nasadenia a ich reakciami.<\/p>\n<p>Helm 3 bude jednoduch\u0161\u00ed, bezpe\u010dnej\u0161\u00ed a zauj\u00edmavej\u0161\u00ed nie preto, \u017ee nem\u00e1me radi Helm 2, ale preto, \u017ee Kubernetes sa st\u00e1va pokrokovej\u0161\u00edm. T\u00fdm p\u00e1dom, Helm m\u00f4\u017ee vyu\u017ei\u0165 schopnosti Kubernetes a vytv\u00e1ra\u0165 na \u0148om skvel\u00e9 mana\u017e\u00e9ry pre Kubernetes.<\/p>\n<blockquote><p>E\u0161te jedna dobr\u00e1 spr\u00e1va je, \u017ee na <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexandr Chajov rozpr\u00e1va, <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">\u010di m\u00f4\u017eu by\u0165 kontajnery bezpe\u010dn\u00e9?<\/a><\/noindex> Pripom\u00edname, \u017ee konferencia o integr\u00e1cii procesov v\u00fdvoja, testovania a prev\u00e1dzky sa uskuto\u010dn\u00ed v Moskve <strong>30. septembra a 1. okt\u00f3bra<\/strong>. Do 20. augusta e\u0161te m\u00f4\u017eete <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">alebo v pokoji<\/a><\/noindex> a podeli\u0165 sa o svoje sk\u00fasenosti s rie\u0161en\u00edm <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">jednej z mnoh\u00fdch<\/a><\/noindex> \u00faloh pr\u00edstupu DevOps.<\/p>\n<p>Sledujte najnov\u0161ie spr\u00e1vy a checkpointy konferencie v <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">zaslan\u00e9 spr\u00e1ve<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">telegramovom kan\u00e1li<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/462665\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji); \u0437\u0430\u043c\u043e\u043a \u2014 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c; \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u043a \u2014 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0436\u0435 \u0434\u0435\u043b\u0435, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0436\u0435\u0447\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043f\u043e\u043b\u043e\u043d \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c Helm \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27661,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36918","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.\" \/>\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\/bezopasnost-helm\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\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\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c Helm | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/bezopasnost-helm\" \/>\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:14:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:14:43+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\udd47Bezpe\u010dnos\u0165 Helmu | ProHoster","description":"Podstata rozpr\u00e1vania o najpopul\u00e1rnej\u0161om bal\u00edkovom mana\u017e\u00e9ri pre Kubernetes by sa dala zn\u00e1zorni\u0165 pomocou emod\u017ei: krabica - to je Helm (to je najvhodnej\u0161ie, \u010do existuje v najnov\u0161ej verzii Emoji);","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/bezopasnost-helm","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\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c Helm | ProHoster","og:description":"\u0421\u0443\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043e \u0441\u0430\u043c\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u043c\u043e\u0434\u0436\u0438: \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e Helm (\u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Emoji);.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/bezopasnost-helm","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:14:43+00:00","article:modified_time":"2019-10-31T19:14:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36918","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-22 05:19:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:36:25","updated":"2026-01-22 05:19:19","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\/36918","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=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}