{"id":34735,"date":"2019-10-31T22:00:06","date_gmt":"2019-10-31T19:00:06","guid":{"rendered":"https:\/\/prohoster.info\/blog\/znakomstvo-s-helm-3\/"},"modified":"2019-10-31T22:00:06","modified_gmt":"2019-10-31T19:00:06","slug":"znakomstvo-s-helm-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/znakomstvo-s-helm-3","title":{"rendered":"Introduktion till Helm 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Introduktion till Helm 3\" src=\"\/wp-content\/uploads\/2019\/05\/6de0e2887ddcc802f1dd71c902325401.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><b>Obs. \u00f6vers.<\/b>: Den 16 maj i \u00e5r markerar en betydande milstolpe i utvecklingen av paketchefer f\u00f6r Kubernetes - Helm. P\u00e5 denna dag presenterades den f\u00f6rsta alfa-versionen av det kommande stora projektet - 3.0. Utgivningen kommer att medf\u00f6ra betydande och efterl\u00e4ngtade f\u00f6r\u00e4ndringar i Helm, som m\u00e5nga inom Kubernetes-gemenskapen har stora f\u00f6rhoppningar p\u00e5. Vi sj\u00e4lva r\u00e4knas till dessa, eftersom vi aktivt anv\u00e4nder Helm f\u00f6r distribution av applikationer: vi har integrerat det i v\u00e5rt verktyg f\u00f6r att genomf\u00f6ra CI\/CD. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex> och fr\u00e5n fall till fall bidrar vi med v\u00e5rt str\u00e5 till stacken i utvecklingen av upstream. Denna \u00f6vers\u00e4ttning sammanfattar 7 anteckningar fr\u00e5n Helm's officiella blogg, som \u00e4r kopplade till den f\u00f6rsta alfa-versionen av Helm 3 och ber\u00e4ttar om projektets historia och de viktigaste funktionerna i Helm 3. F\u00f6rfattaren \u00e4r Matt \"bacongobbler\" Fisher, anst\u00e4lld p\u00e5 Microsoft och en av de centrala underh\u00e5llarna av Helm.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Den 15 oktober 2015 f\u00f6ddes projektet som idag \u00e4r k\u00e4nt som Helm. Bara ett \u00e5r efter grundandet gick Helm-gemenskapen med i Kubernetes och arbetade aktivt med Helm 2. I juni 2018 blev Helm <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cncf.io\/blog\/2018\/06\/01\/cncf-to-host-helm\/\">en del av CNCF<\/a><\/noindex> som ett utvecklande (incubating) projekt. L\u00e5t oss hoppa till nutiden \u2013 och nu \u00e4r den f\u00f6rsta alfa-versionen av nya Helm 3 p\u00e5 v\u00e4g. <i>(denna version <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/releases\/tag\/v3.0.0-alpha.1\">har redan sl\u00e4ppts<\/a><\/noindex> i mitten av maj \u2013 red. anm.)<\/i>.<\/p>\n<p>I detta material kommer jag att ber\u00e4tta om hur allt b\u00f6rjade, hur vi kom till den nuvarande fasen, presentera n\u00e5gra unika funktioner som \u00e4r tillg\u00e4ngliga i den f\u00f6rsta alfa-versionen av Helm 3, och f\u00f6rklara hur vi planerar att utvecklas vidare.<\/p>\n<p>Sammanfattning:<\/p>\n<ul>\n<li>historien om skapandet av Helm;<\/li>\n<li>Ett \u00f6mt avsked till Tiller<\/li>\n<li>chart-repositorier;<\/li>\n<li>hantering av utg\u00e5vor;<\/li>\n<li>\u00e4ndringar i chart-beroenden;<\/li>\n<li>bibliotekscharts;<\/li>\n<li>vad g\u00f6r du sedan?<\/li>\n<\/ul>\n<p><\/p>\n<h2>Historien om skapandet av Helm<\/h2>\n<p><\/p>\n<h3>F\u00f6dslen<\/h3>\n<p>\nHelm 1 b\u00f6rjade som ett Open Source-projekt, skapat av f\u00f6retaget Deis. Vi var en liten startup, <noindex><a rel=\"nofollow\" href=\"https:\/\/blogs.microsoft.com\/blog\/2017\/04\/10\/microsoft-acquire-deis-help-companies-innovate-containers\/\">uppk\u00f6pt<\/a><\/noindex> av Microsoft v\u00e5ren 2017. V\u00e5rt andra Open Source-projekt, ocks\u00e5 kallat Deis, hade ett verktyg <code>deisctl<\/code>, som anv\u00e4ndes (bland annat) f\u00f6r att installera och driva plattformen Deis i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/coreos\/fleet\">Fleet-klustret.<\/a><\/noindex>. Vid den tiden var Fleet en av de f\u00f6rsta plattformarna f\u00f6r orkestrering av containrar.<\/p>\n<p>I mitten av 2015 beslutade vi att byta kurs och flyttade Deis (vid den tiden omd\u00f6pt till Deis Workflow) fr\u00e5n Fleet till Kubernetes. Som en av de f\u00f6rsta omarbetades installationsverktyget, <code>deisctl<\/code>. Vi anv\u00e4nde det f\u00f6r installation och hantering av Deis Workflow i Fleet-klustret.<\/p>\n<p>Helm 1 skapades med inspiration fr\u00e5n k\u00e4nda paketf\u00f6rvaltare som Homebrew, apt och yum. Dess huvudsyfte var att f\u00f6renkla uppgifter som paketering och installation av applikationer i Kubernetes. Helm presenterades officiellt 2015 p\u00e5 KubeCon-konferensen i San Francisco.<\/p>\n<p>V\u00e5rt f\u00f6rsta f\u00f6rs\u00f6k med Helm fungerade, men det var inte utan allvarliga begr\u00e4nsningar. Det tog en upps\u00e4ttning Kubernetes-manifest som kryddades av generatorer som indata YAML-block. <i>(front-matter)<\/i>*, och laddade resultaten till Kubernetes.<\/p>\n<p><i>* <b>Obs. \u00f6vers.<\/b>: Fr\u00e5n och med den f\u00f6rsta versionen av Helm valdes YAML-syntax f\u00f6r att beskriva Kubernetes-resurser, och vid skrivning av konfigurationer st\u00f6dde man Jinja-mallar och Python-skript. Mer om detta och hur den f\u00f6rsta versionen av Helm fungerade skrev vi i kapitlet \"En kort historia om Helm\" <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417079\/\">detta material<\/a><\/noindex>.<\/i><\/p>\n<p>Till exempel, f\u00f6r att ers\u00e4tta ett f\u00e4lt i YAML-filen beh\u00f6vde man l\u00e4gga till f\u00f6ljande konstruktion i manifestet:<\/p>\n<pre><code class=\"plaintext\">#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my\/pod.yaml<\/code><\/pre>\n<p>\nDet \u00e4r fantastiskt att det idag finns mallmakare, eller hur?<\/p>\n<p>Av m\u00e5nga sk\u00e4l kr\u00e4vde denna tidiga Kubernetes-installat\u00f6r en fast lista med manifestfiler och utf\u00f6rde endast en liten fast sekvens av h\u00e4ndelser. Att anv\u00e4nda den var s\u00e5 sv\u00e5rt att Deis Workflows FoU-team hade det tufft n\u00e4r de f\u00f6rs\u00f6kte migrera sin produkt till denna plattform \u2014 men id\u00e9erna hade redan s\u00e5tts. V\u00e5rt f\u00f6rsta f\u00f6rs\u00f6k blev en utm\u00e4rkt m\u00f6jlighet f\u00f6r l\u00e4rande: vi ins\u00e5g att vi verkligen brinner f\u00f6r att skapa pragmatiska verktyg som l\u00f6ser vardagliga problem f\u00f6r v\u00e5ra anv\u00e4ndare.<\/p>\n<p>Med erfarenheten av tidigare misstag b\u00f6rjade vi utveckla Helm 2.<\/p>\n<h3>Skapandet av Helm 2<\/h3>\n<p>\nI slutet av 2015 kontaktade Google-teamet oss. De arbetade med ett liknande verktyg f\u00f6r Kubernetes. Deployment Manager f\u00f6r Kubernetes var en portering av ett befintligt verktyg som anv\u00e4ndes f\u00f6r Google Cloud Platform. \"Vill vi inte,\" fr\u00e5gade de, \"sl\u00f6sa n\u00e5gra dagar p\u00e5 att diskutera likheterna och skillnaderna?\"<\/p>\n<p>I januari 2016 m\u00f6ttes teamen fr\u00e5n Helm och Deployment Manager i Seattle f\u00f6r att byta id\u00e9er. F\u00f6rhandlingarna avslutades med en ambiti\u00f6s plan: att f\u00f6rena b\u00e5da projekten f\u00f6r att skapa Helm 2. Tillsammans med Deis och Google ansl\u00f6t sig grabbarna fr\u00e5n <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/skippbox\">SkippBox<\/a><\/noindex> <i>(numera en del av Bitnami \u2014 anm. \u00f6vers.)<\/i>, och vi b\u00f6rjade arbetet med Helm 2.<\/p>\n<p>Vi ville beh\u00e5lla enkelheten i Helm, men l\u00e4gga till f\u00f6ljande:<\/p>\n<ul>\n<li> mallar f\u00f6r anpassning av diagram;<\/li>\n<li> intra-cluster administration f\u00f6r team;<\/li>\n<li> f\u00f6rstklassigt diagramarkiv;<\/li>\n<li> stabilt paketformat med signeringsm\u00f6jlighet;<\/li>\n<li> ett fast \u00e5tagande till semantisk versionering och bevarande av bak\u00e5tkompatibilitet mellan versioner.<\/li>\n<\/ul>\n<p>\nF\u00f6r att uppn\u00e5 dessa m\u00e5l lades en andra komponent till Helm-ekosystemet. Denna intra-cluster komponent kallades Tiller och hanterade installation och administration av Helm-diagram.<\/p>\n<p>Sedan Helm 2 lanserades 2016 har Kubernetes f\u00e5tt flera betydande nyheter. Rollen baserad \u00e5tkomstkontroll (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/422801\/\">RBAC<\/a><\/noindex>), som slutligen ersatte attributbaserad \u00e5tkomstkontroll (ABAC). Nya typer av resurser presenterades (Deployments var fortfarande i beta-status). Custom Resource Definitions uppfanns (ursprungligen kallades de Third Party Resources eller TPRs). Och viktigast av allt \u2013 en upps\u00e4ttning b\u00e4sta praxis introducerades.<\/p>\n<p>Mot bakgrund av alla dessa f\u00f6r\u00e4ndringar fortsatte Helm att tj\u00e4na Kubernetes-anv\u00e4ndare troget. Efter tre \u00e5r och m\u00e5nga nya till\u00e4gg blev det tydligt att det var dags att g\u00f6ra betydande f\u00f6r\u00e4ndringar i kodbasen s\u00e5 att Helm fortsatt kunde m\u00f6ta de v\u00e4xande behoven hos den utvecklande ekosystemet.<\/p>\n<h2>Ett \u00f6mt avsked till Tiller<\/h2>\n<p>\nUnder utvecklingen av Helm 2 introducerade vi Tiller som en del av v\u00e5r integration med Googles Deployment Manager. Tiller spelade en viktig roll f\u00f6r teamen som arbetade inom en gemensam kluster: det till\u00e4t olika specialister som utnyttjar infrastrukturen att interagera med samma upps\u00e4ttning releaser.<\/p>\n<p>Eftersom rolldefinierad \u00e5tkomstkontroll (RBAC) fr\u00e5n och med Kubernetes 1.6 var aktiverad som standard blev det sv\u00e5rare att arbeta med Tiller i produktion. P\u00e5 grund av det stora antalet m\u00f6jliga s\u00e4kerhetspolicies var v\u00e5r st\u00e5ndpunkt att f\u00f6resl\u00e5 en till\u00e5tande konfiguration som standard. Detta m\u00f6jliggjorde f\u00f6r nyb\u00f6rjare att experimentera med Helm och Kubernetes utan behov av att f\u00f6rst dyka ner i s\u00e4kerhetsinst\u00e4llningar. Tyv\u00e4rr kunde denna till\u00e5tande konfiguration ge anv\u00e4ndaren f\u00f6r breda r\u00e4ttigheter som inte beh\u00f6vdes. DevOps- och SRE-ingenj\u00f6rer var tvungna att studera ytterligare driftsteg n\u00e4r de installerade Tiller i en fleranv\u00e4ndarmilj\u00f6 (multi-tenant) kluster.<\/p>\n<p>Genom att f\u00f6rst\u00e5 hur gemenskapsrepresentanter anv\u00e4nder Helm i specifika situationer ins\u00e5g vi att Tiller, versionshanteringssystemet, inte beh\u00f6vde f\u00f6rlita sig p\u00e5 en intraklusternodel f\u00f6r att uppr\u00e4tth\u00e5lla tillst\u00e5nd eller fungera som ett centralt nav med information om releaser. Ist\u00e4llet kunde vi enkelt f\u00e5 information fr\u00e5n Kubernetes API-servern, generera en chart p\u00e5 klientsidan och spara installationsposten i Kubernetes.<\/p>\n<p>Den huvudsakliga uppgiften f\u00f6r Tiller kunde utf\u00f6ras \u00e4ven utan Tiller, d\u00e4rf\u00f6r blev en av v\u00e5ra f\u00f6rsta beslut ang\u00e5ende Helm 3 att helt avskaffa Tiller.<\/p>\n<p>Med Tillers avsked har Helm:s s\u00e4kerhetsmodell radikalt f\u00f6renklats. Helm 3 st\u00f6der nu alla moderna metoder f\u00f6r s\u00e4kerhet, identifiering och auktorisering av nuvarande Kubernetes. Helm:s beh\u00f6righeter definieras med hj\u00e4lp av <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/organize-cluster-access-kubeconfig\/\">kubeconfig-filen<\/a><\/noindex>. Klusteradministrat\u00f6rer kan begr\u00e4nsa anv\u00e4ndarbeh\u00f6righeter med valfri detaljgrad. Releases lagras fortfarande inom klustret, och Helm:s \u00f6vriga funktionalitet bevaras.<\/p>\n<h2>Chartrepositorier<\/h2>\n<p>\nP\u00e5 en \u00f6vergripande niv\u00e5 \u00e4r ett chartrepository en plats d\u00e4r man kan lagra och dela charts. Helm-klienten paketerar och skickar charts till repositoryt. Enkelt uttryckt \u00e4r ett chartrepository en primitiv HTTP-server med en index.yaml-fil och n\u00e5gra paketerade charts.<\/p>\n<p>\u00c4ven om det finns vissa f\u00f6rdelar med att chartrepositoryts API uppfyller de mest grundl\u00e4ggande kraven p\u00e5 lagring, finns det ocks\u00e5 n\u00e5gra nackdelar:<\/p>\n<ul>\n<li> Chart-repositorier \u00e4r d\u00e5ligt kompatibla med de flesta s\u00e4kerhetsimplementeringar som kr\u00e4vs i produktionsmilj\u00f6er. Att ha ett standard-API f\u00f6r autentisering och auktorisering \u00e4r avg\u00f6rande i produktionsscenarier.<\/li>\n<li> Helm-verktygen f\u00f6r att sp\u00e5ra ursprunget till chartet, som anv\u00e4nds f\u00f6r signering, integritetskontroll och ursprung av chartet, \u00e4r en valfri del av publiceringsprocessen f\u00f6r chartet.<\/li>\n<li> I fleranv\u00e4ndarscenarier kan samma chart laddas upp av en annan anv\u00e4ndare, vilket f\u00f6rdubblar lagringsutrymmet som kr\u00e4vs f\u00f6r samma inneh\u00e5ll. F\u00f6r att hantera detta problem har smartare repository-l\u00f6sningar utvecklats, men de \u00e4r inte en del av den formella specifikationen.<\/li>\n<li> Anv\u00e4ndningen av en enda indexfil f\u00f6r att s\u00f6ka, lagra metadata och h\u00e4mta charts har f\u00f6rsv\u00e5rat utvecklingen av s\u00e4kra fleranv\u00e4ndartill\u00e4mpningar.<\/li>\n<\/ul>\n<p>\nProjektet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/docker\/distribution\">Docker Distribution<\/a><\/noindex> (\u00e4ven k\u00e4nd som Docker Registry v2) \u00e4r eftertr\u00e4daren till Docker Registry och fungerar faktiskt som en upps\u00e4ttning verktyg f\u00f6r att paketera, skicka, lagra och leverera Docker-bilder. M\u00e5nga stora molntj\u00e4nster erbjuder produkter baserade p\u00e5 Distribution. P\u00e5 grund av en \u00f6kad uppm\u00e4rksamhet har projektet Distribution gynnats av flera \u00e5rs f\u00f6rb\u00e4ttringar, b\u00e4sta s\u00e4kerhetspraxis och tester i 'skarp' milj\u00f6, vilket har gjort det till en av de mest framg\u00e5ngsrika osjungna hj\u00e4ltarna inom Open Source.<\/p>\n<p>Men visste du att projektet Distribution utvecklades f\u00f6r att distribuera alla former av inneh\u00e5ll, inte bara containerbilder?<\/p>\n<p>Tack vare anstr\u00e4ngningarna <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opencontainers.org\/\">Open Container Initiative<\/a><\/noindex> (eller OCI), kan Helm-charts placeras p\u00e5 vilken Distribution-instans som helst. \u00c4ven om denna process fortfarande \u00e4r experimentell. Arbetet med att st\u00f6dja inloggningar och andra funktioner som kr\u00e4vs f\u00f6r att Helm 3 ska fungera ordentligt \u00e4r fortfarande inte avslutat, men vi \u00e4r mycket glada \u00f6ver att kunna l\u00e4ra oss av de insikter som OCI och Distribution-team har gjort under \u00e5ren. Med deras mentorskap och v\u00e4gledning l\u00e4r vi oss hur man driver en h\u00f6gav tillg\u00e4nglig tj\u00e4nst i stor skala.<\/p>\n<p>En mer detaljerad beskrivning av n\u00e5gra kommande f\u00f6r\u00e4ndringar i Helm-charts repositoryn finns tillg\u00e4nglig. <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.bacongobbler.com\/post\/2019-01-25-distributing-with-distribution\/\">via l\u00e4nken<\/a><\/noindex>.<\/p>\n<h2>Releasehantering<\/h2>\n<p>\nI Helm 3 sp\u00e5ras applikationens tillst\u00e5nd inom kluster av ett par objekt:<\/p>\n<ul>\n<li> release object \u2014 representerar en instans av applikationen;<\/li>\n<li> release version secret \u2014 representerar det \u00f6nskade tillst\u00e5ndet av applikationen vid en specifik tidpunkt (t.ex. lansering av en ny version).<\/li>\n<\/ul>\n<p>\nAnrop <code>helm install<\/code> skapar release object och release version secret. Anropet <code>helm upgrade<\/code> kr\u00e4ver att det finns ett release object (som det kan \u00e4ndra) och skapar en ny release version secret som inneh\u00e5ller nya v\u00e4rden och en f\u00f6rberedd manifest.<\/p>\n<p>Release-objektet inneh\u00e5ller information om releasen, d\u00e4r releasen \u00e4r en specifik installation av ett namngivet diagram och dess v\u00e4rden. Detta objekt beskriver \u00f6versiktlig metadata om releasen. Release-objektet bevaras under hela applikationens livscykel och fungerar som \u00e4gare till alla release version secrets samt alla objekt som direkt skapas av Helm-diagrammet.<\/p>\n<p>Release version secret kopplar releasen till en serie revisioner (installationer, uppdateringar, \u00e5terst\u00e4llningar, borttagningar).<\/p>\n<p>I Helm 2 var revisioner helt och h\u00e5llet sekventiella. Anropet <code>helm install<\/code> skapade v1, efterf\u00f6ljande uppdatering (upgrade) blev v2, och s\u00e5 vidare. Release och release version secret sammanf\u00f6rdes till ett enda objekt, k\u00e4nt som revision. Revisioner sparades i samma namnutrymme som Tiller, vilket betydde att varje release var \"global\" i termer av namnutrymme; resultatet var att endast ett exempel av namnet kunde anv\u00e4ndas.<\/p>\n<p>I Helm 3 \u00e4r varje release kopplad till en eller flera release version secrets. Release-objektet beskriver alltid den aktuella releasen som \u00e4r distribuerad i Kubernetes. Varje release version secret beskriver endast en version av denna release. En uppdatering (upgrade) skapar till exempel en ny release version secret och \u00e4ndrar sedan release-objektet s\u00e5 att det pekar p\u00e5 denna nya version. Vid en \u00e5terst\u00e4llning (rollback) kan tidigare release version secrets anv\u00e4ndas f\u00f6r att \u00e5terst\u00e4lla releasen till ett tidigare tillst\u00e5nd.<\/p>\n<p>Efter avskaffandet av Tiller lagrar Helm 3 data om releasen inom samma namnutrymme som releasen. Denna f\u00f6r\u00e4ndring m\u00f6jligg\u00f6r installation av ett diagram med samma namn som releasen i ett annat namnutrymme, och data sparas mellan uppdateringar\/omstarter av klustret i etcd. Till exempel kan WordPress installeras i namnutrymmet \"foo\" och sedan i namnutrymmet \"bar\", och b\u00e5da releaser kan kallas \"wordpress\".<\/p>\n<h2>\u00c4ndringar i chartens beroenden<\/h2>\n<p>\nCharten, paketerad (med hj\u00e4lp av <code>helm package<\/code>) f\u00f6r anv\u00e4ndning med Helm 2 kan installeras med Helm 3, men arbetsfl\u00f6det f\u00f6r chartutveckling har fullst\u00e4ndigt omarbetats, s\u00e5 vissa \u00e4ndringar m\u00e5ste g\u00f6ras f\u00f6r att forts\u00e4tta utveckla charts med Helm 3. S\u00e4rskilt har systemet f\u00f6r beroendehantering av charts f\u00f6r\u00e4ndrats.<\/p>\n<p>Beroendehanteringssystemet f\u00f6r chart har \u00f6verg\u00e5tt till <code>requirements.yaml<\/code> och <code>requirements.lock<\/code> till <code>Chart.yaml<\/code> och <code>Chart.lock<\/code>. Det betyder att charts som anv\u00e4nt kommandot <code>helm dependency<\/code>, kr\u00e4ver viss konfiguration f\u00f6r att fungera i Helm 3.<\/p>\n<p>L\u00e5t oss titta p\u00e5 ett exempel. L\u00e5t oss l\u00e4gga till ett beroende till ett chart i Helm 2 och se vad som f\u00f6r\u00e4ndras vid \u00f6verg\u00e5ngen till Helm 3.<\/p>\n<p>I Helm 2 <code>requirements.yaml<\/code> s\u00e5g ut som f\u00f6ljer:<\/p>\n<pre><code class=\"plaintext\">dependencies:\n- name: mariadb\n  version: 5.x.x\n  repository: https:\/\/kubernetes-charts.storage.googleapis.com\/\n  condition: mariadb.enabled\n  tags:\n    - database<\/code><\/pre>\n<p>\nI Helm 3 kommer samma beroende att \u00e5terspeglas i din <code>Chart.yaml<\/code>:<\/p>\n<pre><code class=\"plaintext\">dependencies:\n- name: mariadb\n  version: 5.x.x\n  repository: https:\/\/kubernetes-charts.storage.googleapis.com\/\n  condition: mariadb.enabled\n  tags:\n    - database<\/code><\/pre>\n<p>\nCharts laddas fortfarande ner och placeras i katalogen <code>charts\/<\/code>, s\u00e5 subcharts <i>(subcharts)<\/i>, som ligger i katalogen <code>charts\/<\/code>, kommer att forts\u00e4tta fungera utan f\u00f6r\u00e4ndringar.<\/p>\n<h2>Vi presenterar Library Charts<\/h2>\n<p>\nHelm 3 st\u00f6der en klass av charts kallad bibliotekcharts <i>(library chart)<\/i>. Detta diagram anv\u00e4nds av andra diagram, men skapar ingen egen release-artifakter. Mallar f\u00f6r library-diagram kan endast deklarera element <code>define<\/code>. Annan inneh\u00e5ll ignoreras helt enkelt. Detta g\u00f6r det m\u00f6jligt f\u00f6r anv\u00e4ndare att \u00e5teranv\u00e4nda och dela kodfragment som kan anv\u00e4ndas i m\u00e5nga charts, vilket undviker duplicering och f\u00f6ljer principen om <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\">DRY<\/a><\/noindex>.<\/p>\n<p>Library charts deklareras i avsnittet <code>dependencies<\/code> i filen <code>Chart.yaml<\/code>. Installationen och hanteringen av dem skiljer sig inte fr\u00e5n andra charts.<\/p>\n<pre><code class=\"plaintext\">dependencies:\n  - name: mylib\n    version: 1.x.x\n    repository: quay.io<\/code><\/pre>\n<p>\nVi ser fram emot de anv\u00e4ndningsm\u00f6jligheter som denna komponent kommer att \u00f6ppna f\u00f6r chartutvecklare samt de b\u00e4sta praxis som kan uppst\u00e5 tack vare library charts.<\/p>\n<h2>Vad h\u00e4nder h\u00e4rn\u00e4st?<\/h2>\n<p>\nHelm 3.0.0-alpha.1 \u00e4r grunden som vi bygger den nya versionen av Helm p\u00e5. I artikeln har jag beskrivit n\u00e5gra intressanta funktioner i Helm 3. M\u00e5nga av dem \u00e4r fortfarande i ett tidigt utvecklingsstadium, och det \u00e4r okej; syftet med alpha-releasen \u00e4r att testa id\u00e9n, samla feedback fr\u00e5n tidiga anv\u00e4ndare och bekr\u00e4fta v\u00e5ra antaganden.<\/p>\n<p>S\u00e5 snart alpha-versionen sl\u00e4pps <i>(kom ih\u00e5g att detta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/releases\/tag\/v3.0.0-alpha.1\">redan har skett<\/a><\/noindex> \u2014 anm. red.)<\/i>, vi kommer att b\u00f6rja ta emot patchar f\u00f6r Helm 3 fr\u00e5n gemenskapen. Det \u00e4r n\u00f6dv\u00e4ndigt att skapa en stabil grund som m\u00f6jligg\u00f6r utveckling och acceptans av nya funktioner, s\u00e5 att anv\u00e4ndare kan k\u00e4nna sig involverade i processen genom att \u00f6ppna biljetter och bidra med korrigeringar.<\/p>\n<p>I artikeln har jag f\u00f6rs\u00f6kt belysa n\u00e5gra av de stora f\u00f6rb\u00e4ttringar som kommer i Helm 3, men denna lista kan p\u00e5 intet s\u00e4tt kallas utt\u00f6mmande. Den fullst\u00e4ndiga planen f\u00f6r Helm 3 inkluderar nyheter som f\u00f6rb\u00e4ttrade uppdateringsstrategier, djupare integration med OCI-register och anv\u00e4ndning av JSON-scheman f\u00f6r validering av chartv\u00e4rden. Vi planerar ocks\u00e5 att st\u00e4da upp kodbasen och uppdatera de delar som har f\u00e5tt lite uppm\u00e4rksamhet de senaste tre \u00e5ren.<\/p>\n<p>Om du k\u00e4nner att vi har missat n\u00e5got, skulle vi g\u00e4rna h\u00f6ra dina tankar!<\/p>\n<p>G\u00e5 med i diskussionen i v\u00e5ra <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.slack.com\/\">Slack-kanaler<\/a><\/noindex>:<\/p>\n<ul>\n<li> <code>#helm-users<\/code> f\u00f6r fr\u00e5gor och enkel kommunikation med gemenskapen;<\/li>\n<li> <code>#helm-dev<\/code> f\u00f6r att diskutera pull requests, kod och buggar.<\/li>\n<\/ul>\n<p>\nDu kan ocks\u00e5 delta i v\u00e5ra veckovisa offentliga utvecklartr\u00e4ffar p\u00e5 torsdagar klockan 19:30 MSK. M\u00f6tena \u00e4gnas \u00e5t att diskutera uppgifter som viktiga utvecklare och gemenskapen arbetar med, samt teman f\u00f6r veckans diskussion. Alla \u00e4r v\u00e4lkomna att delta i m\u00f6tet. L\u00e4nken finns tillg\u00e4nglig i Slack-kanalen. <code>#helm-dev<\/code>.<\/p>\n<h2>P.S. fr\u00e5n \u00f6vers\u00e4ttaren<\/h2>\n<p>\nL\u00e4s \u00e4ven i v\u00e5r blogg:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417079\/\">Paketchefen f\u00f6r Kubernetes \u2013 Helm: det f\u00f6rflutna, nuet, framtiden<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/438814\/\">Ett klart perspektiv p\u00e5 Helm 2: \"S\u00e5som det \u00e4r...\"<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/420437\/\">En praktisk introduktion till paketf\u00f6rvaltaren f\u00f6r Kubernetes \u2014 Helm<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Kubernetes tips &amp; tricks: \u00f6vers\u00e4ttning av resurser som arbetar i klustret under Helm 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/336170\/\">Praktik med dapp. Del 2. Distribuera Docker-bilder i Kubernetes med hj\u00e4lp av Helm<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/453734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: 16 \u043c\u0430\u044f \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0437\u043d\u0430\u0447\u0438\u043c\u0430\u044f \u0432\u0435\u0445\u0430 \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f Kubernetes \u2014 Helm. \u0412 \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u043b\u044c\u0444\u0430-\u0440\u0435\u043b\u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 3.0. \u0415\u0451 \u0432\u044b\u0445\u043e\u0434 \u043f\u0440\u0438\u043d\u0435\u0441\u0451\u0442 \u0432 Helm \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438 \u0434\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432 Kubernetes-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043d\u0430\u0434\u0435\u0436\u0434\u044b. \u041a \u0442\u0430\u043a\u043e\u0432\u044b\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u043c\u0441\u044f \u0438 \u043c\u044b \u0441\u0430\u043c\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34735","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/znakomstvo-s-helm-3\" \/>\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\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Helm 3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/znakomstvo-s-helm-3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:06+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:06+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Introduktion till Helm 3 | ProHoster","description":"Ex.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/znakomstvo-s-helm-3","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\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Helm 3 | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/znakomstvo-s-helm-3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:06+00:00","article:modified_time":"2019-10-31T19:00:06+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34735","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:26:53","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 23:08:04","updated":"2026-01-21 20:26:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/34735","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=34735"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/34735\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/26173"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=34735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=34735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=34735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}