{"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\/da\/blog\/administrirovanie\/bezopasnost-helm","title":{"rendered":"Sikkerhed i Helm","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Essensen af historien om den mest popul\u00e6re pakkeh\u00e5ndtering til Kubernetes kunne illustreres med emojis:<\/p>\n<ul>\n<li>kassen \u2013 det er Helm (det mest passende i den seneste Emoji-udgave);<\/li>\n<li>l\u00e5sen \u2013 sikkerhed;<\/li>\n<li>menneskefigur \u2013 l\u00f8sningen p\u00e5 problemet.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/91099b372fd73bce94268563c3ee2c50.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI virkeligheden vil det dog v\u00e6re lidt mere kompliceret, og historien er fyldt med tekniske detaljer om, <b>hvordan man g\u00f8r Helm sikkert<\/b>.<\/p>\n<ul>\n<li>Kort sagt, hvad er Helm, hvis du ikke vidste eller har glemt det. Hvilke problemer l\u00f8ser det, og hvor passer det ind i \u00f8kosystemet.<\/li>\n<li>Lad os se p\u00e5 Helm-arkitekturen. Ingen samtale om sikkerhed og om, hvordan man g\u00f8r et v\u00e6rkt\u00f8j eller en l\u00f8sning mere sikker, kan undg\u00e5 at forst\u00e5 komponentens arkitektur.<\/li>\n<li>Vi vil diskutere Helm-komponenterne.<\/li>\n<li>Det mest presserende sp\u00f8rgsm\u00e5l \u2013 fremtiden \u2013 den nye version af Helm 3.\u00a0<\/li>\n<\/ul>\n<p>\nAlt i denne artikel vedr\u00f8rer Helm 2. Denne version er i produktion nu, og det er sandsynligvis den, du bruger lige nu, og den indeholder sikkerhedstrusler.<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=\"Afspil 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 taleren:<\/strong> Alexander Khayorov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/allexx\/\" class=\"user_link\">allexx<\/a><\/noindex>) har arbejdet med udvikling i 10 \u00e5r og hj\u00e6lper med at forbedre indholdet <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.python.ru\/2019\">Moscow Python Conf++<\/a><\/noindex> og tilsluttede sig komiteen <noindex><a rel=\"nofollow\" href=\"https:\/\/events.linuxfoundation.org\/events\/helm-summit-2019\/\">Helm Summit<\/a><\/noindex>. Han arbejder nu hos Chainstack som utviklingsleder \u2013 en hybrid mellem en udviklingsleder og den, der er ansvarlig for leveringen af de endelige versioner. Det vil sige, han er i krigszonen, hvor alt sker fra produktets skabelse til dets drift.<\/p>\n<p>Chainstack er en lille, hurtigt voksende startup, hvis opgave er at give kunderne mulighed for at glemme om infrastrukturer og kompleksiteter ved drift af decentraliserede applikationer; udviklingsteamet er baseret i Singapore. Bed ikke Chainstack om at s\u00e6lge eller k\u00f8be kryptovaluta, men tilbyd at tale om enterprise blockchain-rammer, s\u00e5 bliver du gladeligt besvaret.<\/p>\n<h2>Helm<\/h2>\n<p>\nDet er en pakkeh\u00e5ndtering (chart manager) til Kubernetes. Den mest klare og alsidige m\u00e5de at bringe applikationer ind i et Kubernetes-klynge.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30c0fc1cc1c6ebde97c6e8ec1886ce9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet handler selvf\u00f8lgelig om en mere struktureret og industriel tilgang end at oprette egne YAML-manifestationer og skrive sm\u00e5 v\u00e6rkt\u00f8jer.<\/p>\n<blockquote><p>Helm er det bedste, der lige nu er tilg\u00e6ngeligt og popul\u00e6rt.<\/p><\/blockquote>\n<p>\nHvorfor Helm? F\u00f8rst og fremmest fordi det st\u00f8ttes af CNCF. Cloud Native er en stor organisation, der er moderselskab for projekterne Kubernetes, etcd, Fluentd og andre.<\/p>\n<p>En anden vigtig fakta er, at Helm er et meget popul\u00e6rt projekt. Da jeg i januar 2019 f\u00f8rste gang overvejede at fort\u00e6lle, hvordan man g\u00f8r Helm sikkert, havde projektet tusind stjerner p\u00e5 GitHub. I maj var de steget til 12.000.<\/p>\n<p>Mange interesserer sig for Helm, s\u00e5 selvom du stadig ikke bruger det, vil din viden om dets sikkerhed v\u00e6re nyttig. <strong>Sikkerhed er vigtigt.<\/strong><\/p>\n<p>Den prim\u00e6re team for Helm underst\u00f8ttes af Microsoft Azure, og derfor er det et ret stabilt projekt i mods\u00e6tning til mange andre. Udgivelsen af Helm 3 Alpha 2 i midten af juli vidner om, at der er mange mennesker, der arbejder p\u00e5 projektet, og de har vilje og styrke til at udvikle og forbedre Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/e53c8e64c3cf5eea3fbd9b0095b0f81e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm l\u00f8ser flere grundl\u00e6ggende problemer ved applikationsh\u00e5ndtering i Kubernetes.<\/p>\n<ul>\n<li>Paketering af applikationen. Selv en applikation som \"Hello, World\" p\u00e5 WordPress best\u00e5r allerede af flere tjenester, og de vil gerne blive pakket sammen.<\/li>\n<li>H\u00e5ndtering af kompleksitet, der opst\u00e5r med styring af disse applikationer.<\/li>\n<li>Livscyklus, der ikke slutter efter installationen eller deployment af applikationen. Den forts\u00e6tter med at eksistere, den skal opdateres, og Helm hj\u00e6lper med det og str\u00e6ber efter at bringe de rigtige tiltag og politikker.<\/li>\n<\/ul>\n<p>\n<strong>Paketering<\/strong> er ordnet p\u00e5 en forst\u00e5elig m\u00e5de: der er metadata i fuld overensstemmelse med driften af en almindelig pakkeadministrator for Linux, Windows eller MacOS. Det vil sige, repository, afh\u00e6ngigheder mellem forskellige pakker, metadata for applikationer, indstillinger, konfigurationsspecifikationer, indeksering af information osv. Alt dette g\u00f8r Helm muligt at f\u00e5 og bruge til applikationer.<\/p>\n<p><strong>H\u00e5ndtering af kompleksitet<\/strong>. Hvis du har mange ensartede applikationer, kr\u00e6ves der parametrisering. Deraf f\u00f8lger skabeloner, men for ikke at skulle finde p\u00e5 din egen m\u00e5de at oprette skabeloner p\u00e5, kan du bruge det, som Helm tilbyder lige ud af boksen.<\/p>\n<p><strong>Applikationens livscyklush\u00e5ndtering<\/strong> \u2014 efter min mening, det mest interessante og ul\u00f8ste sp\u00f8rgsm\u00e5l. Det er grunden til, at jeg p\u00e5 et tidspunkt henvendte mig til Helm. Vi havde brug for at overv\u00e5ge applikationens livscyklus, vi \u00f8nskede at flytte vores CI\/CD og applikationscykler ind i denne paradyme.<\/p>\n<p>Helm g\u00f8r det muligt at:<\/p>\n<ul>\n<li>h\u00e5ndtere deployment, introducerer begrebet konfiguration og revision;<\/li>\n<li>gennemf\u00f8re rollback succesfuldt;<\/li>\n<li>bruge hooks til forskellige begivenheder;<\/li>\n<li>tilf\u00f8je ekstra kontroller af applikationer og reagere p\u00e5 deres resultater.<\/li>\n<\/ul>\n<p>\nDerudover <strong>Helm har \"batterier\"<\/strong> \u2014 en enorm m\u00e6ngde l\u00e6kre ting, som kan inkluderes som plugins for at g\u00f8re dit liv lettere. Plugins kan skrives selv, de er ret isolerede og kr\u00e6ver ikke en str\u00f8mlinet arkitektur. Hvis du \u00f8nsker at implementere noget, anbefaler jeg at g\u00f8re det som et plugin, og derefter muligvis inkludere det i upstream.<\/p>\n<p>Helm er baseret p\u00e5 tre hovedkoncept:<\/p>\n<ul>\n<li><strong>Chart Repo<\/strong> \u2014 en beskrivelse og et s\u00e6t parametre, der er mulige for dit manifest.\u00a0<\/li>\n<li><strong>Konfigurer<\/strong> \u2014 det vil sige v\u00e6rdier, der vil blive anvendt (tekst, numeriske v\u00e6rdier osv.).<\/li>\n<li><strong>Release<\/strong> samler de to \u00f8verste komponenter, og sammen bliver de til et Release. Releases kan versioneres, hvilket giver en styring af livscyklussen: lille ved installation og stor ved opgradering, nedgradering eller rollback.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Helm-arkitektur<\/h2>\n<p>\nDiagrammet viser konceptuelt den h\u00f8jniveaue arkitektur af Helm.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/c5cf54890682a3d6ca7a45021b5006a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad mig minde om, at Helm er noget, der er relateret til Kubernetes. Derfor kan vi ikke undv\u00e6re et Kubernetes-kluster (rektangel). Komponent kube-apiserver er p\u00e5 masteren. Uden Helm har vi Kubeconfig. Helm bringer en lille bin\u00e6r, hvis man kan kalde det, v\u00e6rkt\u00f8j Helm CLI, som installeres p\u00e5 computer, laptop, mainframe \u2014 p\u00e5 alt muligt.<\/p>\n<p>Men det er ikke nok. Helm har en serverkomponent kaldet Tiller. Den repr\u00e6senterer Helm's interesser inden i klusteret, det er en applikation inden i Kubernetes-klusteret ligesom enhver anden.<\/p>\n<p>Den n\u00e6ste komponent Chart Repo \u2014 et repository med charts. Der er et officielt repository, og der kan v\u00e6re et privat repository for virksomheden eller projektet.<\/p>\n<h3>Interaktion<\/h3>\n<p>\nLad os se p\u00e5, hvordan komponenterne i arkitekturen interagerer, n\u00e5r vi vil installere en applikation ved hj\u00e6lp af Helm.<\/p>\n<ul>\n<li>Vi siger <code>Helm install<\/code>, vi henvender os til repositoryet (Chart Repo) og f\u00e5r Helm-chartet.<\/li>\n<\/ul>\n<p><\/p>\n<ul>\n<li>Helm-v\u00e6rkt\u00f8jet (Helm CLI) interagerer med Kubeconfig for at finde ud af, hvilket kluster der skal tilg\u00e5s.\u00a0<\/li>\n<li>N\u00e5r denne information er indhentet, henvender v\u00e6rkt\u00f8jet sig til Tiller, som findes i vores kluster, nu som en applikation.\u00a0<\/li>\n<li>Tiller henvender sig til Kube-apiserver for at udf\u00f8re handlinger i Kubernetes, skabe nogle objekter (tjenester, pods, replikaer, hemmeligheder osv.).<\/li>\n<\/ul>\n<p>\nDerefter vil vi komplicere diagrammet for at se angrebsvinklen, som hele Helm-arkitekturen kan uds\u00e6ttes for. Og derefter vil vi fors\u00f8ge at beskytte den.<\/p>\n<h3>Angrebsvinkler<\/h3>\n<p>\nDet f\u00f8rste potentielt svage punkt \u2014 <strong>privilegeret API<\/strong>\u2014<strong>bruger<\/strong>. I dette tilf\u00e6lde er det en hacker, der har f\u00e5et adminadgang til Helm CLI.<\/p>\n<p><strong>Ikke-privilegeret API-bruger<\/strong> kan ogs\u00e5 udg\u00f8re en risiko, hvis de befinder sig et sted i n\u00e6rheden. En s\u00e5dan bruger vil have en anden kontekst, for eksempel kan de v\u00e6re l\u00e5st i et bestemt namespace i klyngens Kubeconfig-indstillinger.<\/p>\n<p>Den mest interessante angrebsvektor kan v\u00e6re en proces, der befinder sig inde i klyngen et sted n\u00e6r Tiller og kan tilg\u00e5 den. Dette kan v\u00e6re en webserver eller mikrotjeneste, der ser det netv\u00e6rksmilj\u00f8, som klyngen arbejder i.<\/p>\n<p>En eksotisk, men stigende popul\u00e6r angrebsmetode er relateret til Chart Repo. Et chart, der er oprettet af en illoyal forfatter, kan indeholde usikre ressourcer, og du vil udf\u00f8re det, idet du tager det for gode varer. Alternativt kan de \u00e6ndre chartet, som du henter fra det officielle depot, og for eksempel oprette en ressource i form af politikker og eskalere deres adgang.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/2828046feb9ba8413a1b0e8741b4c354.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad os fors\u00f8ge at forsvare os mod angreb fra alle disse fire sider og finde ud af, hvor der er problemer i Helm-arkitekturen, og hvor der muligvis ikke er.<\/p>\n<p>Lad os udvide skemaet, tilf\u00f8je flere elementer, men bevare alle de grundl\u00e6ggende komponenter.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/4110898e79619b8546408c668c48da0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHelm CLI kommunikerer med Chart Repo, interagerer med Kubeconfig, og arbejdet overf\u00f8res til klyngen i komponenten Tiller.<\/p>\n<p>Tiller pr\u00e6senteres af to objekter:<\/p>\n<ul>\n<li>Tiller-deploy svc, der udstiller en slags service;<\/li>\n<li>Tiller-deploy pod (i skemaet i en enkelt forekomst i en kopi), hvor al belastning k\u00f8rer og som tilg\u00e5r klyngen.<\/li>\n<\/ul>\n<p>\nDer anvendes forskellige protokoller og skemaer til interaktion. Fungerende sikkerhedsm\u00e6ssigt er vi mest interesserede i:<\/p>\n<ul>\n<li>Mekanismen, hvormed Helm CLI tilg\u00e5r chart repo: hvilken protokol, er der autentificering, og hvad kan der g\u00f8res med det.<\/li>\n<li>Protokollen, som Helm CLI bruger til at kommunikere med Tiller via kubectl. Dette er en RPC-server, der er installeret inde i klyngen.<\/li>\n<li>Tiller er tilg\u00e6ngelig for mikrotjenester, der befinder sig i klyngen, og interagerer med Kube-apiserver.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/19e7e085567f3bbb49746e6402926bd6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad os diskutere disse retninger \u00e9t ad gangen.<\/p>\n<h2>RBAC<\/h2>\n<p><\/p>\n<blockquote><p>Det er nyttel\u00f8st at tale om nogen som helst sikkerhed i Helm eller andre tjenester inde i klyngen, hvis RBAC ikke er aktiveret.<\/p><\/blockquote>\n<p>\nDet virker ikke som den nyeste anbefaling, men jeg er sikker p\u00e5, at mange stadig ikke har aktiveret RBAC, selv i produktion, fordi det kr\u00e6ver en stor indsats og meget ops\u00e6tning. Jeg opfordrer dog til at g\u00f8re det.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i 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 En advokatwebsite for RBAC. Her er samlet en enorm m\u00e6ngde interessante materialer, som kan hj\u00e6lpe med at konfigurere RBAC, vise, hvorfor det er godt, og hvordan man generelt lever med det i produktion.<\/p>\n<p>Jeg vil fors\u00f8ge at forklare, hvordan Tiller og RBAC fungerer. Tiller arbejder inden for klyngen under en servicekonto. Som regel, hvis RBAC ikke er konfigureret, vil dette v\u00e6re superbruger. I den grundl\u00e6ggende konfiguration vil Tiller v\u00e6re administrator. Derfor siger man ofte, at Tiller er en SSH-tunnel til din klynge. Det er faktisk s\u00e5dan, s\u00e5 man kan bruge en separat, specialiseret servicekonto i stedet for Default Service Account i ovenst\u00e5ende diagram.<\/p>\n<p>N\u00e5r du initialiserer Helm og f\u00f8rste gang installerer det p\u00e5 serveren, kan du angive servicekontoen ved hj\u00e6lp af <code>--service-account<\/code>. Dette vil tillade brugen af en bruger med det mindst n\u00f8dvendige s\u00e6t af rettigheder. Dog skal der oprettes en s\u00e5dan \"girland\": Role og RoleBinding.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ec805cde756495cfd5c480ac40739c43.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDesv\u00e6rre vil Helm ikke g\u00f8re dette for dig. Du eller din Kubernetes-klyngeadministrator skal p\u00e5 forh\u00e5nd forberede et s\u00e6t af Role og RoleBinding for service-kontoen, s\u00e5 Helm kan anvende det.<\/p>\n<p>Sp\u00f8rgsm\u00e5let opst\u00e5r \u2014 hvad er forskellen mellem Role og ClusterRole? Forskellen er, at ClusterRole g\u00e6lder for alle namespaces, i mods\u00e6tning til almindelige Role og RoleBinding, der kun fungerer for en specifik namespace. Man kan konfigurere politikker b\u00e5de for hele klyngen og for alle namespaces, samt individuelt for hver namespace.<\/p>\n<p>Det er v\u00e6rd at n\u00e6vne, at RBAC ogs\u00e5 l\u00f8ser et andet stort problem. Mange klager over, at Helm desv\u00e6rre ikke er multitenancy (underst\u00f8tter ikke multi-leje). Hvis flere teams bruger klyngen og anvender Helm, er det i princippet umuligt at konfigurere politikker og afgr\u00e6nse deres adgang inden for denne klynge, fordi der er en vis servicekonto, som Helm k\u00f8rer under, og den opretter alle ressourcer i klyngen under den, hvilket kan v\u00e6re meget besv\u00e6rligt. Dette er sandt \u2014 ligesom selve bin\u00e6re filen, som proces, <strong>Har Helm Tiller ingen forst\u00e5else for multitenancy.<\/strong>.<\/p>\n<p>Der er dog en fantastisk m\u00e5de, som g\u00f8r det muligt at k\u00f8re Tiller i klyngen flere gange. Der er ingen problemer med dette, Tiller kan startes i hver namespace. P\u00e5 den m\u00e5de kan du udnytte RBAC, Kubeconfig som kontekst, og begr\u00e6nse adgangen til en speciel Helm.<\/p>\n<p>Det vil se s\u00e5dan ud.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/eae922c7b5e1422fb51667364ed79e0a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor example, there are two Kubeconfigs with contexts for different teams (two namespaces): X Team for the development team and the admin cluster. The admin cluster has its own extensive Tiller located in the Kube-system namespace, accordingly with an advanced service account. There is also a separate namespace for the development team; they will be able to deploy their services in a dedicated namespace.<\/p>\n<p>This is a practical approach; Tiller is not so resource-intensive that it could significantly impact your budget. This is one of the quick solutions.<\/p>\n<blockquote><p>Feel free to configure Tiller separately and provide Kubeconfig with contexts for the team, a specific developer, or for environments: Dev, Staging, Production (though it's doubtful everything will be on one cluster, it is possible).<\/p><\/blockquote>\n<p>\nContinuing our story, let's switch from RBAC and talk about ConfigMaps.<\/p>\n<h3>ConfigMaps<\/h3>\n<p>\nHelm uses ConfigMaps as a data storage. When we talked about the architecture, there was no database storing information about releases, configurations, rollbacks, etc. ConfigMaps are used for this.<\/p>\n<p>The main known issue with ConfigMaps is that they are inherently insecure; they <strong>cannot store sensitive data.<\/strong>This includes anything that should not go beyond the service, such as passwords. The most native way for Helm now is to switch from using ConfigMaps to secrets.<\/p>\n<p>This is done very easily. You override the Tiller configuration and specify that the storage will be secrets. Then for each deployment, you will get a secret instead of a ConfigMap.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/7fd12bfbed5c6c8111a5126c2ab9f853.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nYou may argue that secrets are a strange concept and not very secure. However, it's important to understand that the Kubernetes developers are handling this. Since version 1.10, which is quite some time ago, there has been the option, at least in public clouds, to connect the proper storage for storing secrets. The team is currently working on providing even better access to secrets for specific pods or other entities.<\/p>\n<blockquote><p>It\u2019s better to transfer the Helm storage to secrets, and then secure them centrally.<\/p><\/blockquote>\n<p>\nOf course, there will still be <strong>a data storage limit of 1 MB.<\/strong>. Helm bruger her etcd som et distribueret lager til ConfigMaps. De har vurderet, at dette er et passende datchunk til replikering osv. Der er en interessant diskussion om dette p\u00e5 Reddit, jeg vil anbefale at finde denne underholdende l\u00e6sning til weekenden eller l\u00e6se et resum\u00e9. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/issues\/1413\">her<\/a><\/noindex>.<\/p>\n<h3>Chart Repos<\/h3>\n<p>\nCharts er s\u00e6rligt socialt s\u00e5rbare og kan blive en kilde til \"Man in the middle\", is\u00e6r hvis der anvendes en standardl\u00f8sning. Dette g\u00e6lder prim\u00e6rt for de repositoryer, der er tilg\u00e6ngelige via HTTP.<\/p>\n<blockquote><p>Det er bestemt n\u00f8dvendigt at offentligg\u00f8re Helm Repo via HTTPS \u2014 det er den bedste l\u00f8sning og ikke dyr.<\/p><\/blockquote>\n<p>\nBem\u00e6rk venligst <strong>mekanisme til signering af charts<\/strong>. Teknologien er ufattelig simpel. Det er det samme, som du bruger p\u00e5 GitHub, en almindelig PGP-mekanisme med offentlige og private n\u00f8gler. Konfigurer det, og du kan v\u00e6re sikker, n\u00e5r du har de n\u00f8dvendige n\u00f8gler og signerer alt, der reelt er dit chart.<\/p>\n<p>Derudover, <strong>Helm-klienten underst\u00f8tter TLS<\/strong> (ikke i betydningen HTTP fra serverens side, men gensidig TLS). Du kan bruge server- og klientn\u00f8gler til at kommunikere. Jeg m\u00e5 v\u00e6re \u00e6rlig, jeg bruger ikke denne mekanisme p\u00e5 grund af min modvilje mod gensidige certifikater. Grundl\u00e6ggende, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/chartmuseum\">chartmuseum<\/a><\/noindex> \u2014 det prim\u00e6re v\u00e6rkt\u00f8j til at offentligg\u00f8re Helm Repo for Helm 2 \u2014 underst\u00f8tter ogs\u00e5 basic auth. Du kan bruge basic auth, hvis det er mere bekvemt og giver st\u00f8rre ro.<\/p>\n<p>Der er ogs\u00e5 et plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hayorov\/helm-gcs\">helm-gcs<\/a><\/noindex>, som g\u00f8r det muligt at hoste Chart Repos i Google Cloud Storage. Det er ret praktisk, fungerer fremragende og er tilstr\u00e6kkeligt sikkert, fordi alle de beskrevne mekanismer udnyttes.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6a72bfd96c7eb0e2fdd7bcbf128e6433.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis du aktiverer HTTPS eller TLS, bruger mTLS, tilf\u00f8jer basic auth for at mindske risiciene, f\u00e5r du en sikker kommunikationskanal mellem Helm CLI og Chart Repo.<\/p>\n<h3>gRPC API<\/h3>\n<p>\nDet n\u00e6ste skridt er meget vigtigt \u2014 at sikre Tiller, som befinder sig i klyngen og er, p\u00e5 den ene side, serveren, p\u00e5 den anden side, henvender sig til andre komponenter og fors\u00f8ger at pr\u00e6sentere sig selv som nogen anden.<\/p>\n<p>Som jeg allerede har sagt, er Tiller en service, der tilbyder gRPC, og Helm-klienten henvender sig til den via gRPC. Som standard er TLS naturligvis sl\u00e5et fra. Hvorfor dette er tilf\u00e6ldet er et diskussionsemne, jeg mener, det er for at g\u00f8re ops\u00e6tningen lettere i starten.<\/p>\n<blockquote><p>For produktion og endda for staging anbefaler jeg at aktivere TLS p\u00e5 gRPC.<\/p><\/blockquote>\n<p>\nEfter min mening er det i mods\u00e6tning til mTLS for charts passende her og g\u00f8res meget enkelt - du genererer en PQI-infrastruktur, opretter et certifikat, starter Tiller og overf\u00f8rer certifikatet under initialiseringen. Derefter kan du udf\u00f8re alle Helm-kommandoer ved at pr\u00e6sentere det genererede certifikat og den private n\u00f8gle.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/ed55b9a465ed1278b272c52c90b2b345.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDermed beskytter du dig mod alle anmodninger til Tiller udefra klyngen.<\/p>\n<p>S\u00e5 vi har sikret forbindelsen til Tiller, allerede diskuteret RBAC og justeret rettighederne for Kubernetes apiserver, reduceret dom\u00e6net, som det kan interagere med.<\/p>\n<h2>Sikret Helm<\/h2>\n<p>\nLad os se p\u00e5 det endelige diagram. Det er den samme arkitektur med de samme pile.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/6672e254ad93b917f57794e1619a572e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle forbindelser kan nu trygt tegnes gr\u00f8nne:<\/p>\n<ul>\n<li>til Chart Repo bruger vi TLS eller mTLS samt basic auth;<\/li>\n<li>mTLS for Tiller, som er oprettet som en gRPC-service med TLS, vi bruger certifikater;<\/li>\n<li>i klyngen bruges en speciel servicekonto med Role og RoleBinding.\u00a0<\/li>\n<\/ul>\n<p>\nVi har betydeligt sikret klyngen, men nogen klog person sagde:<\/p>\n<blockquote><p>\u201eDer kan kun v\u00e6re \u00e9n absolut sikker l\u00f8sning - en slukket computer i en betonboks beskyttet af soldater.\u201d<\/p><\/blockquote>\n<p>\nDer er forskellige m\u00e5der at manipulere data og finde nye angrebsvektorer. Jeg er dog sikker p\u00e5, at disse anbefalinger vil g\u00f8re det muligt at implementere en grundl\u00e6ggende industriel sikkerhedsstandard.<\/p>\n<h2>Bonus<\/h2>\n<p>\nDenne del relaterer sig ikke direkte til sikkerhed, men vil ogs\u00e5 v\u00e6re nyttig. Jeg vil vise nogle interessante ting, som f\u00e5 kender til. For eksempel, hvordan man s\u00f8ger efter charts - b\u00e5de officielle og uofficielle.<\/p>\n<p>I lageret <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\">github.com\/helm\/charts<\/a><\/noindex> der er nu omkring 300 charts og to streams: stable og incubator. Den, der bidrager, ved godt, hvor sv\u00e6rt det er at g\u00e5 fra incubator til stable, og hvor nemt det er at falde ud af stable. Dette er dog ikke det bedste v\u00e6rkt\u00f8j til at finde charts til Prometheus og alt, hvad du kunne lide, af \u00e9n simpel grund - det er ikke en portal, hvor det er nemt at s\u00f8ge efter pakker.<\/p>\n<p>Men der er en service <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.helm.sh\/\">hub.helm.sh<\/a><\/noindex>, som g\u00f8r det meget lettere at finde charts. Det vigtigste er, at der er mange flere eksterne repositories, og n\u00e6sten 800 charts er tilg\u00e6ngelige. Plus, du kan tilf\u00f8je dit eget repository, hvis du af en eller anden grund ikke \u00f8nsker at sende dine charts til stable.<\/p>\n<p>Pr\u00f8v hub.helm.sh, og lad os udvikle det sammen. Denne service er under Helm-projektet, og du kan endda bidrage til dets UI, hvis du er frontend-udvikler og vil forbedre udseendet.<\/p>\n<p>Jeg vil ogs\u00e5 gerne g\u00f8re opm\u00e6rksom p\u00e5 <strong>Open Service Broker API-integration<\/strong>. Det lyder komplekst og uforst\u00e5eligt, men l\u00f8ser problemer, som alle st\u00e5r over for. Jeg vil forklare med et simpelt eksempel.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/3aeb7e0781e50a79b518f1056873f73a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer er et Kubernetes-kluster, hvor vi \u00f8nsker at k\u00f8re en klassisk applikation \u2013 WordPress. Som regel har man brug for en database for fuld funktionalitet. Der findes mange forskellige l\u00f8sninger, for eksempel kan man starte sin egen stateful service. Det er ikke s\u00e6rlig praktisk, men mange g\u00f8r det.<\/p>\n<p>Andre, for eksempel os hos Chainstack, bruger managed databaser som MySQL eller PostgreSQL til serverne. Derfor ligger vores database et sted i skyen.<\/p>\n<p>Men der opst\u00e5r et problem: Vi skal forbinde vores service med databasen, oprette en database flavor, overf\u00f8re legitimationsoplysninger og p\u00e5 en eller anden m\u00e5de administrere dem. Alt dette g\u00f8res typisk manuelt af en systemadministrator eller udvikler. Og der er ingen problemer, n\u00e5r der er f\u00e5 applikationer. N\u00e5r der er mange, er der brug for en kombajn. Den kombajn findes \u2013 det er Service Broker. Det g\u00f8r det muligt at bruge en speciel plugin til offentlige cloud-klustre og bestille ressourcer fra udbyderen gennem Broker, som om det var et API. Dette kan g\u00f8res med de indbyggede v\u00e6rkt\u00f8jer i Kubernetes.<\/p>\n<p>Det er meget enkelt. Man kan for eksempel anmode om Managed MySQL i Azure med en grundplan (det kan tilpasses). Ved hj\u00e6lp af API'en i Azure vil databasen blive oprettet og klargjort til brug. Du beh\u00f8ver ikke at involvere dig i dette; plugin'en tager sig af det. For eksempel vil OSBA (Azure-plugin) returnere legitimationsoplysninger til servicen og overf\u00f8re dem til Helm. Du vil kunne bruge WordPress med skyens MySQL, helt uden at h\u00e5ndtere managed databaser og bekymre dig om stateful services internt.<\/p>\n<blockquote><p>Man kan sige, at Helm fungerer som lim, der p\u00e5 den ene side muligg\u00f8r udrulning af tjenester, og p\u00e5 den anden side forbruker cloud-udbyderes ressourcer.<\/p><\/blockquote>\n<p>\nMan kan skrive sin egen plugin og bruge hele denne historie on-premise. S\u00e5 vil du blot have din egen plugin til den virksomhedscloud-udbyder. Jeg anbefaler at pr\u00f8ve denne tilgang, is\u00e6r hvis du har stor skala og gerne vil hurtigt rulle dev, staging eller hele infrastrukturen ud til en feature. Det vil forenkle livet for dine operations eller DevOps.<\/p>\n<p>Endnu en opdagelse, som jeg allerede har n\u00e6vnt \u2013 det er <strong>plugin'en helm-gcs<\/strong>, som g\u00f8r det muligt at bruge Google-buckets (objektdatabase) til at opbevare Helm-charts.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/30888c4f9b5dba14b87ba1e29e0ebed7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet kr\u00e6ver kun fire kommandoer at begynde at bruge det:<\/p>\n<ol>\n<li>installer plugin'en;<\/li>\n<li>initier den;<\/li>\n<li>angiv en sti til den bucket, der findes i gcp;<\/li>\n<li>udgive charts p\u00e5 den almindelige m\u00e5de.<\/li>\n<\/ol>\n<p>\nSk\u00f8nheden ligger i, at den native gcp-metode til autentificering vil blive anvendt. Du kan bruge en servicekonto, en udviklerkonto \u2013 hvad som helst. Det er meget praktisk og koster ikke noget at vedligeholde. Hvis du, ligesom jeg, fremmer opsless-filosofien, vil dette v\u00e6re meget nyttigt, is\u00e6r for sm\u00e5 teams.<\/p>\n<h2>Alternativer<\/h2>\n<p>\nHelm er ikke den eneste l\u00f8sning til at h\u00e5ndtere tjenester. Der er mange sp\u00f8rgsm\u00e5l til det, og m\u00e5ske derfor kom den tredje version s\u00e5 hurtigt. Selvf\u00f8lgelig findes der alternativer.<\/p>\n<p>Dette kan v\u00e6re b\u00e5de specialiserede l\u00f8sninger, som Ksonnet eller Metaparticle. Du kan bruge dine klassiske infrastrukturv\u00e6rkt\u00f8jer (Ansible, Terraform, Chef osv.) til de samme form\u00e5l, som jeg tidligere n\u00e6vnte.<\/p>\n<p>Endelig er der en l\u00f8sning <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/operator-framework\">Operator Framework<\/a><\/noindex>, hvis popularitet stiger.<\/p>\n<blockquote><p>Operator Framework er den prim\u00e6re alternative til Helm, som man b\u00f8r v\u00e6re opm\u00e6rksom p\u00e5.<\/p><\/blockquote>\n<p>\nDet er mere native for CNCF og Kubernetes, <strong>men indgangsbarrieren er betydeligt h\u00f8jere<\/strong>, der kr\u00e6ves mere programmering og mindre beskrivelse af manifester.<\/p>\n<p>Der findes forskellige addons, som Draft og Scaffold. De letter livet betydeligt, for eksempel for udviklere, ved at forenkle cyklussen for indsending og k\u00f8rsel af Helm til at implementere testmilj\u00f8er. Jeg ville kalde dem muligheden for udvidere funktionaliteten.<\/p>\n<p>Her er et illustrerende diagram over, hvor hvad befinder sig.<\/p>\n<p><img decoding=\"async\" alt=\"Sikkerhed i Helm\" src=\"\/wp-content\/uploads\/2019\/08\/81a8236c975d5e1649acaaa7989c27ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 x-aksen dit personlige kontrolniveau over, hvad der sker, og p\u00e5 y-aksen niveauet for native Kubernetes. Helm version 2 er et sted midt imellem. Version 3 har ikke en kolossal \u00e6ndring, men b\u00e5de kontrol og niveau for native er forbedret. Ksonnet-l\u00f8sninger ligger stadig tilbage i forhold til selv Helm 2. Men det er v\u00e6rd at se p\u00e5 dem for at vide, hvad der ellers findes i denne verden. Selvf\u00f8lgelig vil din konfiguration manager v\u00e6re under kontrol, men den er slet ikke native for Kubernetes.<\/p>\n<p>Operator Framework er helt native for Kubernetes og tillader en mere elegant og detaljeret styring (men husk indgangsniveauet). Det er mere passende for specialiserede applikationer og oprettelse af management til dem end som en masseproducent af en masse applikationer via Helm.<\/p>\n<p>Udvidere muligheder forbedrer blot kontrol, supplerer workflow eller sk\u00e6rer hj\u00f8rner af CI\/CD pipelines.<\/p>\n<h2>Fremtiden for Helm<\/h2>\n<p>\nDen gode nyhed er, at Helm 3 er p\u00e5 vej. Alpha-versionen Helm 3.0.0-alpha.2 er allerede blevet udgivet, og den kan pr\u00f8ves. Den er ganske stabil, men funktionaliteten er stadig begr\u00e6nset.<\/p>\n<p>Hvorfor er Helm 3 vigtigt? F\u00f8rst og fremmest handler det om <strong>forl\u00e6ngelsen af Tiller<\/strong>, som komponent. Dette er, som du sikkert forst\u00e5r, et k\u00e6mpe skridt fremad, fordi det forenkler sikkerhedsarkitekturen.<\/p>\n<p>Da Helm 2 blev udviklet, hvilket var i en tid hvor Kubernetes 1.8 var langt fra ny, var mange koncepter stadig umodne. For eksempel er konceptet med CRD i \u00f8jeblikket aktivt implementeret, og Helm vil <strong>bruge CRD<\/strong>, til at gemme strukturer. Det bliver muligt kun at anvende klienten uden at skulle have en serverdel. Dermed kan man bruge de indf\u00f8dte Kubernetes-kommandoer til at arbejde med strukturer og ressourcer. Det er et stort skridt fremad.<\/p>\n<p>Der vil komme <strong>underst\u00f8ttelse af native OCI-repositories<\/strong> (Open Container Initiative). Dette er en stor initiativ, og Helm finder det is\u00e6r interessant for at hoste sine charts. Det er v\u00e6rd at bem\u00e6rke, at for eksempel Docker Hub underst\u00f8tter mange OCI-standarder. Jeg vil ikke g\u00e6tte, men m\u00e5ske vil de traditionelle Docker repository-leverand\u00f8rer begynde at give mulighed for at hoste dine Helm-charts.<\/p>\n<p>En kontroversiel ting for mig er <strong>underst\u00f8ttelse af Lua<\/strong>, som en templating engine til scripting. Jeg er ikke den st\u00f8rste fan af Lua, men dette vil v\u00e6re en helt valgfri mulighed. Jeg har tjekket det tre gange - brugen af Lua vil ikke v\u00e6re obligatorisk. S\u00e5 dem, der \u00f8nsker at bruge Lua, kan g\u00f8re det, og dem, der kan lide Go - kom med i vores store lejr og brug go-tmpl til dette.<\/p>\n<p>Endelig det, jeg helt sikkert har savnet - <strong>fremkomsten af skemaet og validering af datatyper<\/strong>. Der vil ikke l\u00e6ngere v\u00e6re problemer med int eller string, og du skal ikke l\u00e6ngere pakke nul i dobbelt citationstegn. Der vil komme en JSON-schema, som eksplicit g\u00f8r det muligt at beskrive dette for values.<\/p>\n<p>Den <strong>event-drevne model<\/strong>vil gennemg\u00e5 omfattende forbedringer. Den er allerede konceptuelt beskrevet. Tjek Helm 3-tr\u00e5den, og du vil se, hvor mange begivenheder og hooks der er blevet tilf\u00f8jet, hvilket vil forenkle og samtidig give mere kontrol over deployments og reaktioner.<\/p>\n<p>Helm 3 bliver enklere, mere sikkert og mere interessant, ikke fordi vi ikke kan lide Helm 2, men fordi Kubernetes bliver mere avanceret. Derfor kan Helm udnytte de fremskridt, der er gjort i Kubernetes, og skabe fremragende v\u00e6rkt\u00f8jer til Kubernetes.<\/p>\n<blockquote><p>Endnu en god nyhed er, at <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\">DevOpsConf<\/a><\/noindex> Alexander Khayorov vil fort\u00e6lle, <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/abstracts\/5564\">om containere kan v\u00e6re sikre?<\/a><\/noindex> Lad os minde om, at konferencen om integration af udviklings-, test- og driftsprocesser finder sted i Moskva <strong>den 30. september og 1. oktober<\/strong>. Indtil 20. august er det stadig muligt at <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-moscow\">indgive et opl\u00e6g<\/a><\/noindex> og dele din erfaring med at l\u00f8se <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/articles\/917\">en af mange<\/a><\/noindex> opgaver i DevOps-tilgangen.<\/p>\n<p>F\u00f8lg konferencens checkpoint og nyhederne p\u00e5 <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/bN_0E1\">nyhedsbrev<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/DevOpsConfChannel\">telegramkanalen<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/bezopasnost-helm\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Sikkerhed med Helm | ProHoster","description":"Essensen af fort\u00e6llingen om den mest popul\u00e6re pakkeh\u00e5ndtering til Kubernetes kunne beskrives med emojis: kassen \u2014 det er Helm (det mest passende, der er i den seneste Emoji-udgivelse);","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/bezopasnost-helm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/36918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=36918"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36918\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/27661"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=36918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=36918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=36918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}