{"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\/sv\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Helm-s\u00e4kerhet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>K\u00e4rnan i ber\u00e4ttelsen om den mest popul\u00e4ra paketchefen f\u00f6r Kubernetes kan beskrivas med hj\u00e4lp av emojis:<\/p>\n<ul>\n<li>l\u00e5dan \u2013 det \u00e4r Helm (det mest passande som finns i den senaste Emoji-versionen);<\/li>\n<li>l\u00e5s \u2013 s\u00e4kerhet;<\/li>\n<li>m\u00e4nniska \u2013 l\u00f6sningen p\u00e5 problemet.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI sj\u00e4lva verket kommer det att vara lite mer komplicerat, och ber\u00e4ttelsen \u00e4r full av tekniska detaljer om hur man <b>g\u00f6r Helm s\u00e4kert<\/b>.<\/p>\n<ul>\n<li>Kort sagt, vad \u00e4r Helm, om du inte visste eller gl\u00f6mde det. Vilka problem l\u00f6ser den och var ligger den i ekosystemet.<\/li>\n<li>L\u00e5t oss titta p\u00e5 Helm-arkitekturen. Ingen diskussion om s\u00e4kerhet och hur man kan g\u00f6ra ett verktyg eller en l\u00f6sning mer s\u00e4ker kan passera utan att f\u00f6rst\u00e5 komponentens arkitektur.<\/li>\n<li>Vi kommer att diskutera Helm-komponenter.<\/li>\n<li>Den mest br\u00e4nnande fr\u00e5gan \u2013 framtiden \u2013 den nya versionen Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nAllt i denna artikel handlar om Helm 2. Den versionen \u00e4r f\u00f6r n\u00e4rvarande i produktion och det \u00e4r troligtvis den du anv\u00e4nder just nu, och det \u00e4r i den som det finns s\u00e4kerhetshot.<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=\"Spela 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>Om talaren:<\/strong> Alexander Khayorov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">allexx<\/a><\/noindex>) har arbetat med utveckling i 10 \u00e5r och hj\u00e4lper till att f\u00f6rb\u00e4ttra inneh\u00e5llet <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">Moscow Python Conf++<\/a><\/noindex> och gick med i kommitt\u00e9n <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">Helm Summit<\/a><\/noindex>. Just nu arbetar han p\u00e5 Chainstack som utvecklingsledare \u2013 en hybrid mellan en utvecklingsledare och en som ansvarar f\u00f6r leverans av slutprodukter. Det vill s\u00e4ga, han befinner sig p\u00e5 slagf\u00e4ltet d\u00e4r allt h\u00e4nder fr\u00e5n produktens skapelse till dess drift.<\/p>\n<p>Chainstack \u00e4r en liten, v\u00e4xande startup vars uppgift \u00e4r att ge kunder m\u00f6jlighet att gl\u00f6mma infrastrukturen och sv\u00e5righeterna att driva decentraliserade applikationer, utvecklingsteamet \u00e4r baserat i Singapore. Be inte Chainstack att s\u00e4lja eller k\u00f6pa kryptovaluta, utan f\u00f6resl\u00e5 att prata om f\u00f6retagsramverken f\u00f6r blockchain, s\u00e5 kommer de g\u00e4rna att svara.<\/p>\n<h2>Helm<\/h2>\n<p>\nDetta \u00e4r en paketchef (diagram) f\u00f6r Kubernetes. Det mest f\u00f6rst\u00e5eliga och m\u00e5ngsidiga s\u00e4ttet att ta appar till Kubernetes-klustret.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet handlar naturligtvis om en mer strukturerad och industriell metod \u00e4n att skapa sina egna YAML-manifest och skriva sm\u00e5 verktyg.<\/p>\n<blockquote><p>Helm \u00e4r det b\u00e4sta som finns tillg\u00e4ngligt och popul\u00e4rt just nu.<\/p><\/blockquote>\n<p>\nVarf\u00f6r Helm? F\u00f6rst och fr\u00e4mst f\u00f6r att den st\u00f6ds av CNCF. Cloud Native \u00e4r en stor organisation och moderbolag f\u00f6r projekt som Kubernetes, etcd, Fluentd och andra.<\/p>\n<p>En annan viktig faktum \u00e4r att Helm \u00e4r ett mycket popul\u00e4rt projekt. N\u00e4r jag i januari 2019 f\u00f6rst t\u00e4nkte ber\u00e4tta om hur man g\u00f6r Helm s\u00e4kert hade projektet tusen stj\u00e4rnor p\u00e5 GitHub. I maj hade de blivit 12 000.<\/p>\n<p>M\u00e5nga \u00e4r intresserade av Helm, s\u00e5 \u00e4ven om du fortfarande inte anv\u00e4nder det kan kunskapen om dess s\u00e4kerhet vara v\u00e4rdefull. <strong>S\u00e4kerhet \u00e4r viktigt.<\/strong><\/p>\n<p>Det huvudsakliga teamet bakom Helm st\u00f6ds av Microsoft Azure, vilket g\u00f6r att projektet \u00e4r relativt stabilt i j\u00e4mf\u00f6relse med m\u00e5nga andra. Utrullningen av Helm 3 Alpha 2 i mitten av juli visar att det finns m\u00e5nga m\u00e4nniskor som arbetar med projektet, och de har b\u00e5de vilja och resurser f\u00f6r att utveckla och f\u00f6rb\u00e4ttra Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm l\u00f6ser flera centrala problem med applikationshantering i Kubernetes.<\/p>\n<ul>\n<li>Paketera applikationer. \u00c4ven en applikation som \"Hello, World\" p\u00e5 WordPress best\u00e5r av flera tj\u00e4nster som man vill paketera tillsammans.<\/li>\n<li>Hanterar den komplexiteten som uppst\u00e5r med hanteringen av dessa applikationer.<\/li>\n<li>Livscykeln som inte slutar efter installation eller deployment av applikationen. Den forts\u00e4tter att existera, den beh\u00f6ver uppdateras, och Helm hj\u00e4lper till med det och str\u00e4var efter att ge de r\u00e4tta \u00e5tg\u00e4rderna och policyn.<\/li>\n<\/ul>\n<p>\n<strong>Packetering<\/strong> \u00e4r uppbyggd p\u00e5 ett f\u00f6rst\u00e5eligt s\u00e4tt: det finns metadata som helt \u00f6verensst\u00e4mmer med hur en vanlig pakethanterare fungerar f\u00f6r Linux, Windows eller MacOS. Det vill s\u00e4ga en repository, beroenden mellan olika paket, metadata f\u00f6r applikationer, inst\u00e4llningar, konfigurationsspecifikationer, indexering av information etc. Allt detta m\u00f6jligg\u00f6r Helm att erh\u00e5lla och anv\u00e4nda f\u00f6r applikationerna.<\/p>\n<p><strong>Hantering av komplexitet<\/strong>. Om du har m\u00e5nga liknande applikationer beh\u00f6vs parameterisering. D\u00e4rifr\u00e5n uppst\u00e5r mallar, men f\u00f6r att inte beh\u00f6va uppfinna egna s\u00e4tt att skapa mallar kan du anv\u00e4nda det som Helm erbjuder \"out of the box\".<\/p>\n<p><strong>Hantera livscykeln av applikationen<\/strong> \u00e4r - enligt min mening - den mest intressanta och ol\u00f6sta fr\u00e5gan. Det \u00e4r anledningen till att jag kom till Helm i f\u00f6rsta hand. Vi beh\u00f6vde h\u00e5lla koll p\u00e5 applikationens livscykel, vi ville flytta v\u00e5r CI\/CD och applikationscykler till detta paradigm.<\/p>\n<p>Helm m\u00f6jligg\u00f6r:<\/p>\n<ul>\n<li>att hantera distributioner, introducera begreppet konfiguration och revision;<\/li>\n<li>framg\u00e5ngsrikt utf\u00f6ra rollback;<\/li>\n<li>anv\u00e4nda hooks f\u00f6r olika h\u00e4ndelser;<\/li>\n<li>l\u00e4gga till ytterligare kontroller f\u00f6r applikationer och reagera p\u00e5 deras resultat.<\/li>\n<\/ul>\n<p>\nDessutom <strong>Helm har \"batterier\".<\/strong> \u2014 ett stort antal goda saker som kan inkluderas som plugins, vilket f\u00f6renklar livet. Plugins kan skrivas av dig sj\u00e4lv, de \u00e4r tillr\u00e4ckligt isolerade och kr\u00e4ver ingen k\u00e4nslig arkitektur. Om du vill implementera n\u00e5got, rekommenderar jag att g\u00f6ra det som en plugin och eventuellt senare inkludera det i upstream.<\/p>\n<p>Helm bygger p\u00e5 tre grundl\u00e4ggande koncept:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 en beskrivning och en upps\u00e4ttning parametrar som kan anv\u00e4ndas f\u00f6r din manifest.\u00a0<\/li>\n<li><strong>Konfigurera<\/strong> \u2014 det vill s\u00e4ga v\u00e4rden som kommer att till\u00e4mpas (text, numeriska v\u00e4rden osv.).<\/li>\n<li><strong>Release<\/strong> inneh\u00e5ller de tv\u00e5 \u00f6verliggande komponenterna, och tillsammans blir de till en Release. Releases kan versionshanteras, vilket m\u00f6jligg\u00f6r livscykelorganisation: liten vid installation och stor vid uppgradering, nedgradering eller \u00e5terst\u00e4llning.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Helm-arkitektur<\/h2>\n<p>\nSchemat visar konceptuellt den h\u00f6g niv\u00e5 arkitekturen f\u00f6r Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJag p\u00e5minner om att Helm \u00e4r n\u00e5got som \u00e4r kopplat till Kubernetes. D\u00e4rf\u00f6r kan vi inte klara oss utan en Kubernetes-kluster (rektangel). Komponenten kube-apiserver finns p\u00e5 mastern. Utan Helm har vi Kubeconfig. Helm tillhandah\u00e5ller en liten bin\u00e4r som kan kallas Helm CLI, som installeras p\u00e5 datorer, b\u00e4rbara datorer, mainframes \u2014 p\u00e5 vad som helst.<\/p>\n<p>Men detta \u00e4r inte tillr\u00e4ckligt. Helm har en serverkomponent, Tiller. Den representerar Helm:s intressen inom klustret, det \u00e4r en liknande applikation inom Kubernetes-klustret som vilken annan som helst.<\/p>\n<p>Den n\u00e4sta komponenten, Chart Repo \u2014 ett repository med charts. Det finns ett officiellt repository, och det kan finnas ett privat repository f\u00f6r f\u00f6retaget eller projektet.<\/p>\n<h3>Interaktion<\/h3>\n<p>\nL\u00e5t oss se hur komponenterna i arkitekturen interagerar n\u00e4r vi vill installera en applikation med hj\u00e4lp av Helm.<\/p>\n<ul>\n<li>Vi s\u00e4ger <code>Helm install<\/code>, vi kontaktar repositoryt (Chart Repo) och f\u00e5r Helm-charten.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>Helm-verktyget (Helm CLI) interagerar med Kubeconfig f\u00f6r att ta reda p\u00e5 vilket kluster som ska kontaktas.\u00a0<\/li>\n<li>N\u00e4r denna information har erh\u00e5llits, kontaktar verktyget Tiller, som finns i v\u00e5rt kluster, som en applikation.\u00a0<\/li>\n<li>Tiller kontaktar Kube-apiserver f\u00f6r att utf\u00f6ra \u00e5tg\u00e4rder i Kubernetes, skapa vissa objekt (tj\u00e4nster, pods, repliker, hemligheter osv.).<\/li>\n<\/ul>\n<p>\nD\u00e4refter kommer vi att komplicera schemat f\u00f6r att se de attackvektorer som hela Helm-arkitekturen kan uts\u00e4ttas f\u00f6r. Och sedan f\u00f6rs\u00f6ka skydda den.<\/p>\n<h3>Attackvektor<\/h3>\n<p>\nDen f\u00f6rsta potentiellt svaga punkten \u2014 <strong>privilegierad API<\/strong>\u2014<strong>anv\u00e4ndare<\/strong>. Inom schemat \u00e4r detta en hacker som har f\u00e5tt administrativ \u00e5tkomst till Helm CLI.<\/p>\n<p><strong>Icke-privilegierad API-anv\u00e4ndare<\/strong> kan ocks\u00e5 utg\u00f6ra en risk om den \u00e4r i n\u00e4rheten. En s\u00e5dan anv\u00e4ndare kommer att ha en annan kontext, till exempel kan den vara inl\u00e5st i ett visst namespace i klusterinst\u00e4llningarna f\u00f6r Kubeconfig.<\/p>\n<p>Den mest intressanta attackvektorn kan vara en process som finns n\u00e5gonstans i klustret n\u00e4ra Tiller och kan kommunicera med den. Det kan vara en webbserver eller mikrotj\u00e4nst som ser det n\u00e4tverksmilj\u00f6 som klustret befinner sig i.<\/p>\n<p>Ett exotiskt, men v\u00e4xande, alternativ till attacken \u00e4r relaterat till Chart Repo. En chart skapad av en illojal f\u00f6rfattare kan inneh\u00e5lla os\u00e4kra resurser, och du kommer att k\u00f6ra den i tron att den \u00e4r s\u00e4ker. Eller s\u00e5 kan den ers\u00e4tta den chart som du laddar ner fr\u00e5n det officiella arkivet och, till exempel, skapa resurser i form av policys och eskalera sin egen \u00e5tkomst.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u00e5t oss f\u00f6rs\u00f6ka avv\u00e4rja attacker fr\u00e5n alla dessa fyra h\u00e5ll och se var det finns problem i Helm-arkitekturen och var det eventuellt inte finns n\u00e5gra.<\/p>\n<p>Vi g\u00f6r schemat st\u00f6rre, l\u00e4gger till fler element men beh\u00e5ller alla grundl\u00e4ggande best\u00e5ndsdelar.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm CLI kommunicerar med Chart Repo, interagerar med Kubeconfig och jobbet \u00f6verl\u00e4mnas till klustret i komponenten Tiller.<\/p>\n<p>Tiller representeras av tv\u00e5 objekt:<\/p>\n<ul>\n<li>Tiller-deploy svc, som st\u00e4ller upp en viss tj\u00e4nst;<\/li>\n<li>Tiller-deploy pod (i schemat i ett enda exemplar i en replik), d\u00e4r all belastning k\u00f6rs och som kommunicerar med klustret.<\/li>\n<\/ul>\n<p>\nOlika protokoll och scheman anv\u00e4nds f\u00f6r interaktionen. Fr\u00e5n s\u00e4kerhetssynpunkt \u00e4r vi mest intresserade av:<\/p>\n<ul>\n<li>Mechanismen genom vilken Helm CLI kommunicerar med chart repo: vilket protokoll anv\u00e4nds, finns det autentisering och vad kan man g\u00f6ra med detta.<\/li>\n<li>Protokollet genom vilket Helm CLI, med hj\u00e4lp av kubectl, kommunicerar med Tiller. Det \u00e4r en RPC-server som \u00e4r installerad inuti klustret.<\/li>\n<li>Sj\u00e4lva Tiller \u00e4r tillg\u00e4ngligt f\u00f6r mikrotj\u00e4nster som finns i klustret och interagerar med Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u00e5t oss diskutera alla dessa riktningar i ordning.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Det \u00e4r meningsl\u00f6st att prata om n\u00e5gon s\u00e4kerhet f\u00f6r Helm eller annan tj\u00e4nst inom klustret om RBAC inte \u00e4r aktiverat.<\/p><\/blockquote>\n<p>\nDet verkar som om detta inte \u00e4r det senaste r\u00e5det, men jag \u00e4r s\u00e4ker p\u00e5 att m\u00e5nga fortfarande inte har aktiverat RBAC, \u00e4ven i produktion, eftersom det inneb\u00e4r mycket arbete och man m\u00e5ste konfigurera mycket. Jag uppmanar \u00e4nd\u00e5 att g\u00f6ra det.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" 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 en advokat-webbplats f\u00f6r RBAC. H\u00e4r samlas en enorm m\u00e4ngd intressanta material som hj\u00e4lper till att st\u00e4lla in RBAC, visar varf\u00f6r det \u00e4r bra och hur man generellt kan arbeta med det i produktion.<\/p>\n<p>Jag ska f\u00f6rs\u00f6ka f\u00f6rklara hur Tiller och RBAC fungerar. Tiller k\u00f6rs inuti klustret under ett specifikt servicekonto. I allm\u00e4nhet, om RBAC inte \u00e4r inst\u00e4llt, kommer det att vara en superanv\u00e4ndare. I standardkonfigurationen kommer Tiller att vara administrat\u00f6r. D\u00e4rf\u00f6r s\u00e4ger man ofta att Tiller \u00e4r en SSH-tunnel till ditt kluster. S\u00e5 \u00e4r det i verkligheten, s\u00e5 du kan anv\u00e4nda ett separat specialiserat servicekonto ist\u00e4llet f\u00f6r Default Service Account som visas ovan.<\/p>\n<p>N\u00e4r du initierar Helm, installerar det f\u00f6r f\u00f6rsta g\u00e5ngen p\u00e5 servern, kan du ange servicekontot med <code>--service-account<\/code>. Detta g\u00f6r det m\u00f6jligt att anv\u00e4nda en anv\u00e4ndare med det minimiupps\u00e4ttning av r\u00e4ttigheter som kr\u00e4vs. Tyv\u00e4rr m\u00e5ste du skapa en s\u00e5dan \"kedja\": Role och RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTyv\u00e4rr kommer Helm inte att g\u00f6ra detta f\u00f6r dig. Antingen du eller din Kubernetes-klusteradministrat\u00f6r m\u00e5ste i f\u00f6rv\u00e4g f\u00f6rbereda en upps\u00e4ttning Role, RoleBinding f\u00f6r servicekonto, f\u00f6r att \u00f6verf\u00f6ra till Helm.<\/p>\n<p>Fr\u00e5gan uppst\u00e5r \u2014 vad \u00e4r skillnaden mellan Role och ClusterRole? Skillnaden \u00e4r att ClusterRole g\u00e4ller f\u00f6r alla namespaces, till skillnad fr\u00e5n vanliga Role och RoleBinding, som endast fungerar f\u00f6r specifika namespaces. Du kan st\u00e4lla in riktlinjer f\u00f6r hela klustret och alla namespaces, s\u00e5v\u00e4l som personligt f\u00f6r varje namespace individuellt.<\/p>\n<p>Det \u00e4r v\u00e4rt att n\u00e4mna att RBAC ocks\u00e5 l\u00f6ser ett annat stort problem. M\u00e5nga klagar p\u00e5 att Helm tyv\u00e4rr inte \u00e4r multitenancy (inte st\u00f6der fleranv\u00e4ndartillg\u00e5ng). Om flera team anv\u00e4nder klustret och Helm, \u00e4r det i princip om\u00f6jligt att st\u00e4lla in riktlinjer och avgr\u00e4nsa deras \u00e5tkomst inom detta kluster, eftersom det finns ett specifikt servicekonto under vilket Helm fungerar, och det skapar alla resurser i klustret fr\u00e5n detta, vilket ibland \u00e4r mycket opraktiskt. Det \u00e4r verkligen sant \u2014 b\u00e5de den bin\u00e4ra filen och processen, <strong>Helm Tiller har ingen uppfattning om multitenancy.<\/strong>.<\/p>\n<p>Det finns dock ett utm\u00e4rkt s\u00e4tt som g\u00f6r att du kan k\u00f6ra Tiller flera g\u00e5nger i klustret. Det finns inga problem med detta, Tiller kan startas i varje namespace. S\u00e5 kan du dra nytta av RBAC, Kubeconfig som kontext, och begr\u00e4nsa \u00e5tkomsten till ett speciellt Helm.<\/p>\n<p>Det kommer att se ut som f\u00f6ljande.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTill exempel finns det tv\u00e5 Kubeconfig med kontext f\u00f6r olika team (tv\u00e5 namespace): X Team f\u00f6r utvecklarteamet och klusteradministrat\u00f6ren. Klusteradministrat\u00f6ren har sin breda Tiller, som finns i kube-system namespace, och d\u00e4rmed en avancerad service-account. Och ett separat namespace f\u00f6r utvecklarteamet, d\u00e4r de kan deploya sina tj\u00e4nster i det specifika namespace.<\/p>\n<p>Detta \u00e4r en fungerande metod, Tiller \u00e4r inte s\u00e5 resurskr\u00e4vande att det skulle p\u00e5verka din budget m\u00e4rkbart. Det \u00e4r en av de snabba l\u00f6sningarna.<\/p>\n<blockquote><p>Tveka inte att konfigurera Tiller separat och tillhandah\u00e5lla Kubeconfig med kontext f\u00f6r teamet, f\u00f6r en specifik utvecklare eller f\u00f6r milj\u00f6n: Dev, Staging, Production (det \u00e4r osannolikt att allt kommer att vara p\u00e5 ett kluster, men det kan g\u00f6ras).<\/p><\/blockquote>\n<p>\nForts\u00e4tter vi v\u00e5r historia, byter vi fr\u00e5n RBAC och pratar om ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm anv\u00e4nder ConfigMaps som datalagring. N\u00e4r vi pratade om arkitekturen fanns det ingen databas d\u00e4r information om releaser, konfigurationer, rollbacks och s\u00e5 vidare lagrades. Det anv\u00e4nds ConfigMaps f\u00f6r.<\/p>\n<p>Det st\u00f6rsta problemet med ConfigMaps \u00e4r k\u00e4nt \u2013 de \u00e4r i grunden os\u00e4kra, i dem <strong>kan man inte lagra k\u00e4nslig information<\/strong>. Det handlar om allt som inte b\u00f6r komma l\u00e4ngre \u00e4n tj\u00e4nsten, till exempel l\u00f6senord. Det mest naturn\u00e4ra s\u00e4ttet f\u00f6r Helm just nu \u00e4r att \u00f6verg\u00e5 fr\u00e5n att anv\u00e4nda ConfigMaps till hemligheter.<\/p>\n<p>Detta g\u00f6rs mycket enkelt. Du \u00f6verskriver konfigurationen f\u00f6r Tiller och anger att lagringen ska vara hemligheter. D\u00e5 f\u00e5r du ist\u00e4llet f\u00f6r ConfigMap en hemlighet vid varje deployment.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu kan inv\u00e4nda mot att sj\u00e4lva hemligheterna \u00e4r ett konstigt koncept och inte s\u00e4rskilt s\u00e4kra. Men det \u00e4r viktigt att f\u00f6rst\u00e5 att detta hanteras av Kubernetes-skaparna. Fr\u00e5n och med version 1.10, dvs. ganska l\u00e4nge sedan, finns det m\u00f6jlighet att \u00e5tminstone i offentliga moln ansluta riktigt lagringsutrymme f\u00f6r att lagra hemligheter. Just nu arbetar teamet p\u00e5 att ge b\u00e4ttre \u00e5tkomst till hemligheter f\u00f6r vissa pods eller andra enheter.<\/p>\n<blockquote><p>Storage Helm b\u00f6r b\u00e4ttre \u00f6vers\u00e4ttas till hemligheter, och dessa ska centralt s\u00e4kras.<\/p><\/blockquote>\n<p>\nSj\u00e4lvklart kommer det att finnas <strong>en gr\u00e4ns f\u00f6r datalagring p\u00e5 1 MB<\/strong>. Helm anv\u00e4nder h\u00e4r etcd som ett distribuerat lager f\u00f6r ConfigMaps. D\u00e4r ans\u00e5g man att detta var en l\u00e4mplig databit f\u00f6r replikeringar och s\u00e5 vidare. Det finns en intressant diskussion om detta p\u00e5 Reddit, jag rekommenderar att du hittar denna underh\u00e5llande l\u00e4sning f\u00f6r helgen eller l\u00e4ser sammanfattningen. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>.<\/p>\n<h3>Chart Repos<\/h3>\n<p>\nCharts \u00e4r s\u00e4rskilt socialt utsatta och kan bli en k\u00e4lla till \"Man in the middle\", s\u00e4rskilt n\u00e4r man anv\u00e4nder ett standardl\u00f6sning. Fr\u00e4mst handlar det om dep\u00e5er som exponeras via HTTP.<\/p>\n<blockquote><p>Det \u00e4r definitivt viktigt att exponera Helm Repo via HTTPS \u2013 det \u00e4r den b\u00e4sta l\u00f6sningen och kostar inte mycket.<\/p><\/blockquote>\n<p>\nObservera <strong>signeringsmekanismen f\u00f6r charts<\/strong>. Tekniken \u00e4r s\u00e5 enkelt att det n\u00e4stan \u00e4r l\u00f6jligt. Det \u00e4r samma sak som du anv\u00e4nder p\u00e5 GitHub, den vanliga PGP-maskineriet med offentliga och privata nycklar. St\u00e4ll in det och var s\u00e4ker p\u00e5 att ha de r\u00e4tta nycklarna och signera allt s\u00e5 att det verkligen \u00e4r din chart.<\/p>\n<p>Dessutom, <strong>Helm-klienten st\u00f6der TLS<\/strong> (inte i meningen HTTP fr\u00e5n serverns sida, utan \u00f6msesidig TLS). Du kan anv\u00e4nda server- och klientnycklar f\u00f6r att kommunicera. Jag ska \u00e4rligt s\u00e4ga att jag inte anv\u00e4nder en s\u00e5dan mekanism p\u00e5 grund av ogillande av \u00f6msesidiga certifikat. I princip, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2014 det prim\u00e4ra verktyget f\u00f6r att exponera Helm Repo f\u00f6r Helm 2 \u2014 st\u00f6djer \u00e4ven basic auth. Du kan anv\u00e4nda basic auth om det \u00e4r mer bekv\u00e4mt och tryggt.<\/p>\n<p>Det finns \u00e4ven en plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, som g\u00f6r det m\u00f6jligt att lagra Chart Repos i Google Cloud Storage. Detta \u00e4r ganska praktiskt, fungerar utm\u00e4rkt och \u00e4r tillr\u00e4ckligt s\u00e4kert eftersom alla de beskrivna mekanismerna anv\u00e4nds.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm du aktiverar HTTPS eller TLS, anv\u00e4nder mTLS, aktiverar basic auth f\u00f6r att ytterligare minska riskerna, f\u00e5r du en s\u00e4ker kommunikationskanal mellan Helm CLI och Chart Repo.<\/p>\n<h3>gRPC API<\/h3>\n<p>\nN\u00e4sta steg \u00e4r mycket viktigt \u2014 att s\u00e4kra Tiller, som finns i klustret och \u00e4r, \u00e5 ena sidan, servern, \u00e5 andra sidan \u2014 sj\u00e4lv kontaktar andra komponenter och f\u00f6rs\u00f6ker framst\u00e5 som n\u00e5gon annan.<\/p>\n<p>Som jag redan sagt \u00e4r Tiller en tj\u00e4nst som exponerar gRPC; Helm-klienten kommer till den via gRPC. Som standard \u00e4r naturligtvis TLS avst\u00e4ngt. Varf\u00f6r det \u00e4r s\u00e5 \u00e4r en diskussionsfr\u00e5ga, jag tror att det gjordes f\u00f6r att f\u00f6renkla inst\u00e4llningen vid starten.<\/p>\n<blockquote><p>F\u00f6r produktion och till och med f\u00f6r staging rekommenderar jag att aktivera TLS p\u00e5 gRPC.<\/p><\/blockquote>\n<p>\nEnligt min \u00e5sikt \u00e4r det h\u00e4r, till skillnad fr\u00e5n mTLS f\u00f6r diagram, l\u00e4mpligt och g\u00f6rs v\u00e4ldigt enkelt \u2014 du genererar en PQI-infrastruktur, skapar ett certifikat, k\u00f6r Tiller och \u00f6verf\u00f6r certifikatet under initialiseringen. Efter detta kan du k\u00f6ra alla Helm-kommandon och presentera dig med det genererade certifikatet och den privata nyckeln.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenom detta skyddar du dig fr\u00e5n alla f\u00f6rfr\u00e5gningar till Tiller utanf\u00f6r klustret.<\/p>\n<p>S\u00e5 vi har skyddat anslutningskanalen till Tiller, redan diskuterat RBAC och justerat r\u00e4ttigheterna f\u00f6r Kubernetes apiserver, minskat dom\u00e4nen med vilken den kan interagera.<\/p>\n<h2>S\u00e4ker Helm<\/h2>\n<p>\nL\u00e5t oss ta en titt p\u00e5 det slutliga schemat. Det \u00e4r samma arkitektur med samma pilar.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNu kan vi helt frimodigt rita alla anslutningar i gr\u00f6nt:<\/p>\n<ul>\n<li>f\u00f6r Chart Repo anv\u00e4nder vi TLS eller mTLS och basic auth;<\/li>\n<li>mTLS f\u00f6r Tiller, och det st\u00e4lls in som en gRPC-tj\u00e4nst med TLS, vi anv\u00e4nder certifikat;<\/li>\n<li>i klustret anv\u00e4nds ett speciellt tj\u00e4nstekonto med Roll och RoleBinding.\u00a0<\/li>\n<\/ul>\n<p>\nVi har m\u00e4rkbar s\u00e4krat klustret, men n\u00e5gon smart sa:<\/p>\n<blockquote><p>\"Det mest s\u00e4kra l\u00f6sningen kan bara vara en \u2014 en avst\u00e4ngd dator som ligger i en betongl\u00e5da och bevakas av soldater.\"<\/p><\/blockquote>\n<p>\nDet finns olika s\u00e4tt att manipulera data och hitta nya vektorer f\u00f6r attacker. Men jag \u00e4r s\u00e4ker p\u00e5 att dessa rekommendationer kommer att hj\u00e4lpa till att implementera en grundl\u00e4ggande industristandard f\u00f6r s\u00e4kerhet.<\/p>\n<h2>Bonus<\/h2>\n<p>\nDenna del handlar inte direkt om s\u00e4kerhet, men den kommer ocks\u00e5 att vara anv\u00e4ndbar. Jag ska visa n\u00e5gra intressanta saker som f\u00e5 k\u00e4nner till. Till exempel hur man s\u00f6ker efter diagram \u2014 officiella och icke-officiella.<\/p>\n<p>I lagret <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> just nu finns det cirka 300 diagram och tv\u00e5 str\u00f6mmar: stable och incubator. Den som bidrar vet hur sv\u00e5rt det \u00e4r att g\u00e5 fr\u00e5n incubator till stable, och hur l\u00e4tt det \u00e4r att \u00e5ka ut fr\u00e5n stable. Men detta \u00e4r inte det b\u00e4sta verktyget f\u00f6r att s\u00f6ka efter diagram f\u00f6r Prometheus och allt annat du gillar, av en enkel anledning \u2014 det \u00e4r inte en portal d\u00e4r det \u00e4r bekv\u00e4mt att s\u00f6ka efter paket.<\/p>\n<p>Men det finns en tj\u00e4nst <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, som g\u00f6r det mycket enklare att hitta diagram. Det viktigaste \u00e4r att det finns mycket fler externa repositorier tillg\u00e4ngliga och n\u00e4stan 800 diagram. Dessutom kan du ansluta ditt eget f\u00f6rr\u00e5d om du av n\u00e5gon anledning inte vill skicka dina diagram till stable.<\/p>\n<p>Prova hub.helm.sh och l\u00e5t oss utveckla det tillsammans. Denna tj\u00e4nst \u00e4r under Helm-projektet, och du kan bidra \u00e4ven i dess UI, om du \u00e4r frontend-utvecklare och bara vill f\u00f6rb\u00e4ttra utseendet.<\/p>\n<p>Jag vill ocks\u00e5 p\u00e5peka att <strong>Open Service Broker API-integration<\/strong>. Det l\u00e5ter omst\u00e4ndligt och oklart, men l\u00f6ser problem som alla st\u00e5r inf\u00f6r. Jag ska f\u00f6rklara med ett enkelt exempel.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet finns en Kubernetes-kluster d\u00e4r vi vill k\u00f6ra en klassisk applikation \u2014 WordPress. Vanligtvis beh\u00f6vs en databas f\u00f6r fullst\u00e4ndig funktionalitet. Det finns m\u00e5nga olika l\u00f6sningar, till exempel kan man k\u00f6ra sin egen stateful-tj\u00e4nst. Det \u00e4r inte s\u00e4rskilt praktiskt, men m\u00e5nga g\u00f6r s\u00e5.<\/p>\n<p>Andra, som vi p\u00e5 Chainstack, anv\u00e4nder hanterade databaser, till exempel MySQL eller PostgreSQL, f\u00f6r servrar. D\u00e4rf\u00f6r ligger v\u00e5ra databaser n\u00e5gonstans i molnet.<\/p>\n<p>Men det uppst\u00e5r ett problem: vi m\u00e5ste koppla v\u00e5r tj\u00e4nst till databasen, skapa en databas flavor, \u00f6verf\u00f6ra credentials och p\u00e5 n\u00e5got s\u00e4tt hantera det. Allt detta g\u00f6rs vanligtvis manuellt av en systemadministrat\u00f6r eller utvecklare. Det finns inget problem n\u00e4r det finns f\u00e5 applikationer. N\u00e4r det finns m\u00e5nga beh\u00f6vs en kombinat. En s\u00e5dan kombinat finns \u2014 det \u00e4r Service Broker. Det l\u00e5ter dig anv\u00e4nda en speciell plugin f\u00f6r att best\u00e4lla resurser fr\u00e5n en leverant\u00f6r via Broker, som om det vore ett API. F\u00f6r detta kan man anv\u00e4nda Kubernetess inbyggda medel.<\/p>\n<p>Det \u00e4r v\u00e4ldigt enkelt. Man kan beg\u00e4ra till exempel Managed MySQL i Azure med en grundl\u00e4ggande niv\u00e5 (detta kan justeras). Med hj\u00e4lp av Azure API kommer databasen att skapas och f\u00f6rberedas f\u00f6r anv\u00e4ndning. Du beh\u00f6ver inte blanda dig i det, detsamma g\u00e4ller pluginen. Till exempel kommer OSBA (Azure-plugin) att returnera credentials till tj\u00e4nsten och \u00f6verf\u00f6ra dem till Helm. Du kommer kunna anv\u00e4nda WordPress med moln-MySQL, helt utan att beh\u00f6va hantera hanterade databaser och beh\u00f6ver inte bekymra dig f\u00f6r stateful-tj\u00e4nsterna inuti.<\/p>\n<blockquote><p>Man kan s\u00e4ga att Helm fungerar som limmet som \u00e5 ena sidan till\u00e5ter att deploya tj\u00e4nster, och \u00e5 andra sidan \u2014 konsumera resurser fr\u00e5n molnleverant\u00f6rer.<\/p><\/blockquote>\n<p>\nMan kan skriva sin egen plugin och anv\u00e4nda hela detta koncept on-premise. D\u00e5 kommer du bara ha din egen plugin f\u00f6r din f\u00f6retagsmolnleverant\u00f6r. Jag rekommenderar att prova denna metod, s\u00e4rskilt om du har en stor skala och vill snabbt implementera dev, staging eller hela infrastrukturen f\u00f6r en funktion. Detta kommer att f\u00f6renkla livet f\u00f6r era operations eller DevOps.<\/p>\n<p>En annan l\u00f6sning som jag redan n\u00e4mnt \u00e4r <strong>helms-plugin-gcs<\/strong>, som g\u00f6r det m\u00f6jligt att anv\u00e4nda Google-buckets (objektlagring) f\u00f6r att lagra Helm-diagram.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet kr\u00e4vs bara fyra kommandon f\u00f6r att b\u00f6rja anv\u00e4nda det:<\/p>\n<ol>\n<li>installera pluginen;<\/li>\n<li>initiera den;<\/li>\n<li>ange en v\u00e4g till bucket som finns i gcp;<\/li>\n<li>publicera diagram p\u00e5 ett standardiserat s\u00e4tt.<\/li>\n<\/ol>\n<p>\nF\u00f6rdelen \u00e4r att den inbyggda gcp-metoden f\u00f6r autentisering kommer att anv\u00e4ndas. Du kan anv\u00e4nda en tj\u00e4nstekonto, utvecklarkonto \u2014 vad som helst. Det \u00e4r mycket praktiskt och kostar ingenting i drift. Om du, som jag, fr\u00e4mjar opsless-filosofin, blir det mycket anv\u00e4ndbart, s\u00e4rskilt f\u00f6r sm\u00e5 team.<\/p>\n<h2>Alternativ<\/h2>\n<p>\nHelm \u00e4r inte den enda l\u00f6sningen f\u00f6r att hantera tj\u00e4nster. Det finns m\u00e5nga fr\u00e5gor kring det, och antagligen \u00e4r det d\u00e4rf\u00f6r version tre kom s\u00e5 snabbt. Sj\u00e4lvklart finns det alternativ.<\/p>\n<p>Det kan vara specialiserade l\u00f6sningar, till exempel Ksonnet eller Metaparticle. Du kan anv\u00e4nda dina klassiska infrastrukturella verktyg (Ansible, Terraform, Chef osv.) f\u00f6r samma syften som jag n\u00e4mnde.<\/p>\n<p>Till sist finns det en l\u00f6sning <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Operator Framework<\/a><\/noindex>, vars popularitet v\u00e4xer.<\/p>\n<blockquote><p>Operator Framework \u00e4r den fr\u00e4msta alternativet till Helm, som man b\u00f6r h\u00e5lla ett \u00f6ga p\u00e5.<\/p><\/blockquote>\n<p>\nDen \u00e4r mer inbyggd f\u00f6r CNCF och Kubernetes, <strong>men ing\u00e5ngstr\u00f6skeln \u00e4r mycket h\u00f6gre<\/strong>, s\u00e5 det kr\u00e4vs mer programmering och mindre beskrivning av manifester.<\/p>\n<p>Det finns olika till\u00e4gg, som Draft och Scaffold. De underl\u00e4ttar livet kraftigt, till exempel f\u00f6renklar de utvecklarcykeln f\u00f6r att skicka och k\u00f6ra Helm f\u00f6r att distribuera testmilj\u00f6er. Jag skulle kalla dem m\u00f6jlighetsf\u00f6rl\u00e4ngare.<\/p>\n<p>H\u00e4r \u00e4r en tydlig graf \u00f6ver var saker ligger.<\/p>\n<p><img decoding=\"async\" alt=\"Helm-s\u00e4kerhet\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 x-axeln \u00e4r niv\u00e5n av ditt personliga kontroll \u00f6ver vad som h\u00e4nder, p\u00e5 y-axeln niv\u00e5n av Kubernetes-inbyggdhet. Helm version 2 ligger n\u00e5gonstans i mitten. I version 3 \u00e4r det inte en enorm f\u00f6r\u00e4ndring, men b\u00e5de kontrollen och niv\u00e5n av inbyggdhet har f\u00f6rb\u00e4ttrats. Ksonnet-niv\u00e5l\u00f6sningar ligger fortfarande efter \u00e4ven Helm 2. Men det \u00e4r v\u00e4rt att kika p\u00e5 dem f\u00f6r att veta vad som annars finns i denna v\u00e4rld. Sj\u00e4lvklart kommer din konfigurationshanterare att vara under din kontroll, men \u00e4r absolut inte inbyggd f\u00f6r Kubernetes.<\/p>\n<p>Operator Framework \u00e4r helt inbyggt f\u00f6r Kubernetes och till\u00e5ter en att hantera den p\u00e5 ett mycket mer elegant och noggrant s\u00e4tt (men kom ih\u00e5g ing\u00e5ngsniv\u00e5n). Det \u00e4r mer l\u00e4mpat f\u00f6r specialiserade applikationer och att skapa management f\u00f6r dem snarare \u00e4n f\u00f6r en masskomplettering av stora m\u00e4ngder applikationer med hj\u00e4lp av Helm.<\/p>\n<p>M\u00f6jlighetsf\u00f6rl\u00e4ngarna f\u00f6rb\u00e4ttrar bara kontrollen n\u00e5got, kompletterar arbetsfl\u00f6det eller sk\u00e4r av h\u00f6rn i CI\/CD-pipelines.<\/p>\n<h2>Framtiden f\u00f6r Helm<\/h2>\n<p>\nDen goda nyheten \u00e4r att Helm 3 har kommit. Alpha-versionen av Helm 3.0.0-alpha.2 har sl\u00e4ppts och kan testas. Den \u00e4r tillr\u00e4ckligt stabil, men funktionaliteten \u00e4r fortfarande begr\u00e4nsad.<\/p>\n<p>Varf\u00f6r beh\u00f6vs Helm 3? F\u00f6rst och fr\u00e4mst handlar det om <strong>f\u00f6rsvinnandet av Tiller<\/strong>, som komponent. Detta \u00e4r, som ni redan f\u00f6rst\u00e5r, ett stort steg fram\u00e5t, eftersom det f\u00f6renklar arkitekturen med avseende p\u00e5 s\u00e4kerhet.<\/p>\n<p>N\u00e4r Helm 2 skapades, vilket var under tiderna f\u00f6r Kubernetes 1.8 eller \u00e4nnu tidigare, var m\u00e5nga koncept omogna. Till exempel, konceptet CRD implementeras nu aktivt, och Helm kommer att <strong>anv\u00e4nda CRD<\/strong>, f\u00f6r att spara strukturer. Det blir m\u00f6jligt att enbart anv\u00e4nda klienten utan att beh\u00f6va en serverdel. D\u00e4rmed kan man anv\u00e4nda de inbyggda kommandona i Kubernetes f\u00f6r att arbeta med strukturer och resurser. Detta \u00e4r ett stort framsteg.<\/p>\n<p>Det kommer att finnas <strong>st\u00f6d f\u00f6r inhemska OCI-repositorier<\/strong> (Open Container Initiative). Detta \u00e4r en stor initiativ, och Helm \u00e4r fr\u00e4mst intresserad av det f\u00f6r att kunna placera sina chartor. Det g\u00e5r s\u00e5 l\u00e5ngt att till exempel Docker Hub st\u00f6der m\u00e5nga OCI-standarder. Jag spekulerar inte, men det \u00e4r m\u00f6jligt att klassiska Docker-repositorie-leverant\u00f6rer kommer att erbjuda m\u00f6jligheten att placera sina Helm-chartor.<\/p>\n<p>En tveksam fr\u00e5ga f\u00f6r mig \u00e4r <strong>st\u00f6det f\u00f6r Lua<\/strong>, som templating engine f\u00f6r att skriva skript. Jag \u00e4r ingen stor fan av Lua, men det kommer att vara en helt valfri m\u00f6jlighet. Jag har kontrollerat detta tre g\u00e5nger \u2013 anv\u00e4ndning av Lua kommer inte att vara obligatoriskt. S\u00e5 den som vill, kan anv\u00e4nda Lua, och den som gillar Go \u2013 g\u00e5 med i v\u00e5r stora l\u00e4ger och anv\u00e4nd go-tmpl f\u00f6r detta.<\/p>\n<p>\u00c4ntligen det som jag verkligen har saknat \u2013 <strong>framtr\u00e4dandet av schema och validering av datatyper<\/strong>. Det kommer inte l\u00e4ngre att vara n\u00e5gra problem med int eller string, man beh\u00f6ver inte l\u00e4ngre omsluta noll med dubbla citattecken. En JSON-schema kommer att finnas som tydligt beskriver detta f\u00f6r values.<\/p>\n<p>Den kommer att vara mycket omarbetad <strong>event-driven model<\/strong>. Den \u00e4r redan konceptuellt beskriven. Titta i Helm 3-grenen, och ni kommer att se hur m\u00e5nga h\u00e4ndelser, hooks och mer som har lagts till, vilket i h\u00f6g grad kommer att f\u00f6renkla och \u00e5 ena sidan, ge mer kontroll \u00f6ver deployprocesser och reaktioner p\u00e5 dem.<\/p>\n<p>Helm 3 kommer att vara enklare, s\u00e4krare och mer intressant, inte f\u00f6r att vi inte gillar Helm 2, utan f\u00f6r att Kubernetes blir mer avancerat. D\u00e4rmed kan Helm anv\u00e4nda de framsteg som Kubernetes g\u00f6r och skapa utm\u00e4rkta hanterare f\u00f6r Kubernetes.<\/p>\n<blockquote><p>Ytterligare en bra nyhet \u00e4r att <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexander Khayev kommer att ber\u00e4tta, <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">kan containrar vara s\u00e4kra?<\/a><\/noindex> Kom ih\u00e5g att konferensen om integration av utvecklings-, test- och drifts\u00e4ttningsprocesser kommer att h\u00e5llas i Moskva <strong>den 30 september och 1 oktober<\/strong>. Fram till den 20 augusti kan du fortfarande <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">skicka in en presentation<\/a><\/noindex> och ber\u00e4tta om dina erfarenheter av att l\u00f6sa <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">en av m\u00e5nga<\/a><\/noindex> utmaningar i DevOps-ansatsen.<\/p>\n<p>F\u00f6lj konferensens checkpoints och nyheter p\u00e5 <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">i ett nyhetsbrev<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">telegram-kanalen<\/a><\/noindex>.<\/p><\/blockquote>\n<p>K\u00e4lla: <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\/sv\/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=\"sv_SE\" \/>\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\/sv\/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\udd47S\u00e4kerhet f\u00f6r Helm | ProHoster","description":"Essensen av ber\u00e4ttelsen om den mest popul\u00e4ra paketf\u00f6rvaltaren f\u00f6r Kubernetes kan avbildas med hj\u00e4lp av emojis: en l\u00e5da \u2014 det \u00e4r Helm (det mest passande som finns i den senaste Emoji-release);","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/bezopasnost-helm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/36918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}