{"id":70954,"date":"2020-02-23T00:58:17","date_gmt":"2020-02-22T21:58:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ustrojstvo-helm-i-ego-podvodnye-kamni"},"modified":"2020-03-03T16:14:40","modified_gmt":"2020-03-03T13:14:40","slug":"ustrojstvo-helm-i-ego-podvodnye-kamni","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ustrojstvo-helm-i-ego-podvodnye-kamni","title":{"rendered":"Helm seadme ja selle miinused","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/b825bfb312b883f5f9c1535036f0c6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.artstation.com\/artwork\/YaabJq\">Typhon freight hauler concept, Anton Swanepoel<\/a><\/noindex><\/p>\n<p>Minu nimi on Dmitri Sugrobov, olen arendaja \u00abLeroy Merlinis\u00bb. Artiklis r\u00e4\u00e4gin, miks on Helm vajalik, kuidas see lihtsustab Kubernetesega t\u00f6\u00f6tamist, mis on muutunud kolmandas versioonis ja kuidas selle abil uuendada rakendusi tootmises seisaku ajal.<\/p>\n<p>See on kokkuv\u00f5te konverentsi ettekandest <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/at-kubernetes-conference\/\">@Kubernetes Conference<\/a><\/noindex> by <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\">Mail.ru Pilve Lahendused<\/a><\/noindex> \u2014 kui te ei soovi lugeda, vaadake videot.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"w1PhTe9gnOI\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/w1PhTe9gnOI\/hqdefault.jpg\" alt=\"M\u00e4ngi videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h2>Miks me kasutame Kubernetesit tootmises<\/h2>\n<p>\n\u00abLeroy Merlin\u00bb on DIY-kaubanduse turuliider Venemaal ja Euroopas. Meie ettev\u00f5ttes t\u00f6\u00f6tab \u00fcle saja arendaja, 33 000 sisemist t\u00f6\u00f6tajat ja tohutu hulk inimesi, kes k\u00fclastavad h\u00fcpermarketeid ja veebisaiti. K\u00f5igi nende \u00f5nnelikuks tegemiseks otsustasime j\u00e4rgida t\u00f6\u00f6stuse standardseid l\u00e4henemisviise. Arendame uusi rakendusi mikroteenuste arhitektuuri kasutades, kasutame keskkondade isolatsiooniks ja \u00f5igeks tarnimiseks konteinerit, ning orkestreerimisel Kubernetesit. Orkestreerijate kasutamise hind langeb kiiresti: turul suureneb inseneride arv, kes valdab tehnoloogiat, ja ilmuvad teenusepakkujad, kes pakuvad Kubernetesit teenusena.<\/p>\n<p>K\u00f5ik, mida Kubernetes teeb, on loomulikult v\u00f5imalik teha ka muul viisil, n\u00e4iteks skriptides m\u00f5ne Jenkinsiga ja docker-compose\u2019iga, aga miks elu keerulisemaks teha, kui on olemas usaldusv\u00e4\u00e4rne lahendus? Seet\u00f5ttu j\u00f5udsime Kubernetesini ja oleme seda juba aasta tootmises kasutanud. Praegu on meil kaksk\u00fcmmend neli Kubernetes klastrit, k\u00f5ige vanem neist on \u00fcle aasta vana, selles on umbes kakssada podi.<\/p>\n<h2>Paljude YAML-failide needus Kuberneteses<\/h2>\n<p>\nMikroteenuse k\u00e4ivitamiseks Kuberneteses loome v\u00e4hemalt viis YAML-faili: Deployment, Service, Ingress, ConfigMap, Secrets \u2014 ja saadame need klastrisse. J\u00e4rgmise rakenduse jaoks kirjutame sama komplekti YAML-failidest, kolmanda jaoks veel \u00fche ja nii edasi. Korruta dokumentide arv keskkondade arvuga ja saame juba sadu faile, ja see ei arvestagi d\u00fcnaamilisi keskkondi.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/c46c3f5ae49cbefa4851cbb388bfd051.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAdam Reese, Helm'i p\u00f5hihooldaja, tutvustas m\u00f5istet \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/cZ1S2Gp47ng?t=323\">Arenduss\u00fckkel Kuberneteses<\/a><\/noindex>\u00bb, mis n\u00e4eb v\u00e4lja nii:<\/p>\n<ol>\n<li>Copy YAML \u2014 kopeeri YAML-fail.<\/li>\n<li>Paste YAML \u2014 kleebi see.<\/li>\n<li>Fix Indents \u2014 paranda sisesid.<\/li>\n<li>Repeat \u2014 korda uuesti.<\/li>\n<\/ol>\n<p>\nVariant on t\u00f6\u00f6kindel, kuid tuleb palju kordi YAML-faile kopeerida. Selle ringi muutmiseks leiutati Helm.<\/p>\n<h3>Mis on Helm<\/h3>\n<p>\nEsiteks, Helm \u2014<strong> paketihaldur<\/strong>, mis aitab leida ja installida vajalikke programme. N\u00e4iteks MongoDB installimiseks ei pea ametlikule veebisaidile minema ja binaare alla laadima, piisab k\u00e4su t\u00e4itmisest <code>helm install stable\/mongodb<\/code>.<\/p>\n<p>Teiseks, Helm \u2014 <strong>malligeneraator<\/strong>, mis aitab failide parametriseerimisel. Naaseme Kuberneteses YAML-failide olukorra juurde. Lihtsam on kirjutada sama YAML-fail, lisada sinna m\u00f5ned kohat\u00e4itjad, kuhu Helm sobitab v\u00e4\u00e4rtused. Teisis\u00f5nu, selle asemel, et kasutada suurt hulka YAML-e, on olemas mallide kogum (\u0161abloonid), kuhu \u00f5igel ajal sobitatakse vajalikud v\u00e4\u00e4rtused.<\/p>\n<p>Kolmandaks, Helm \u2014 <strong>paigalduse meister<\/strong>. Selle abil saab installida, tagasi p\u00f6\u00f6rata ja uuendada rakendusi. Vaatame, kuidas seda teha.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/8b517dbcf503ced229569fe3726418c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Kuidas kasutada Helmi oma rakenduste paigaldamiseks<\/h3>\n<p>\nInstallime Helmi kliendi arvutisse, j\u00e4rgides ametlikku <noindex><a rel=\"nofollow\" href=\"https:\/\/helm.sh\/docs\/intro\/install\/\">juhendis<\/a><\/noindex>. Seej\u00e4rel loome komplekti YAML-failidest. Konkreetsete v\u00e4\u00e4rtuste n\u00e4itamise asemel j\u00e4tame kohat\u00e4itjad, mille Helmi hiljem teabega t\u00e4idab. Sellesugust failide kogumit nimetatakse Helmi kaardiks. Helmi konsooli kliendile saab selle saata kolmel viisil:<\/p>\n<ul>\n<li>n\u00e4idates mallide kausta;<\/li>\n<li>pakendades .tar arhiivi ja viidates sellele;<\/li>\n<li>paneme \u0161ablooni kaugrepositorysse ja lisame linki repo Helmi kliendile.<\/li>\n<\/ul>\n<p>\nVeel on vajalik v\u00e4\u00e4rtuste fail \u2014 values.yaml. Siit saadud andmed sobitatakse \u0161ablooni. Loome selle samuti.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/c0fe24cc8186640147f95ce201794d96.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTeises Helmi versioonis on lisanduv serveri rakendus \u2014 Tiller. See asub Kubernetesest v\u00e4ljaspool ja ootab Helmi kliendi p\u00e4ringuid ning sobitab n\u00f5utud v\u00e4\u00e4rtused \u0161ablooni ja saadab need Kubernetesesse.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/6b821a0bb4680829d5ce9982d2bb4c55.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nHelm 3 on lihtsam: \u0161abloonide t\u00f6\u00f6tlemise asemel serveris t\u00f6\u00f6deldakse info n\u00fc\u00fcd t\u00e4ielikult Helmi kliendi poolel ja saadetakse otse Kubernetes API-le. See lihtsustus suurendab klastrite turvalisust ja lihtsustab levitamisstrateegiat.<\/p>\n<p><strong>Kuidas see k\u00f5ik t\u00f6\u00f6tab<\/strong><\/p>\n<p>K\u00e4ivitame k\u00e4su <code>helm install<\/code>. N\u00e4itame rakenduse v\u00e4ljaande nime, m\u00e4\u00e4rame teed values.yaml failini. L\u00f5pus nimetame repository, kus kaardi asub, ja kaardi nime. N\u00e4iteks on need 'lmru' ja 'bestchart'.<\/p>\n<pre><code class=\"plaintext\">helm install --name bestapp --values values.yaml lmru\/bestchart\n<\/code><\/pre>\n<p>\nK\u00e4sku saab t\u00e4ita ainult \u00fcks kord. Korduva t\u00e4itmise korral asemel <code>install<\/code> tuleb kasutada <code>upgrade<\/code>. Lihtsuse huvides v\u00f5ib kasutada kahte k\u00e4sku \u00fche k\u00e4skude kombinatsioonina <code>upgrade<\/code> lisav\u00f5tmega <code>--install<\/code>Esimese k\u00e4ivitamise korral saadab Helm k\u00e4su v\u00e4ljaande installimiseks ja edaspidi uuendab seda.<\/p>\n<pre><code class=\"plaintext\">helm upgrade --install bestapp --values values.yaml lmru\/bestchart\n<\/code><\/pre>\n<p><\/p>\n<h2>Uute versioonide rakendamise probleemid Helmiga<\/h2>\n<p>\n<i>Selle loo juures m\u00e4ngin saalis \u201eKes tahab saada miljon\u00e4riks\u201d ja selgitame v\u00e4lja, kuidas sundida Helmi rakenduse versiooni v\u00e4rskendama. <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/w1PhTe9gnOI?list=PLQzTaxmOHjnv0tP_HDxsIvcuac2kkIJTQ&amp;t=778\"><i>Vaata videot<\/i><\/a><\/noindex>.<\/p>\n<p>Kui uurisin Helmi t\u00f6\u00f6d, \u00fcllatas mind kummaline k\u00e4itumine, kui proovisin k\u00e4ivitatud rakenduste versioone v\u00e4rskendada. Rakenduskoodi uuendasin, laadisin Docker registrisse uue pildi, saatsin k\u00e4skluse rakenduse k\u00e4ivitamiseks \u2013 ja midagi ei juhtunud. Allpool on m\u00f5ned mitte just k\u00f5ige paremad viisid rakenduste v\u00e4rskendamiseks. Iga\u00fcht neist s\u00fcgavamalt uurides hakkad m\u00f5istma t\u00f6\u00f6riista sisemist \u00fclesehitust ja p\u00f5hjuseid selle ebaselge k\u00e4itumise taha.<\/p>\n<p><strong>Viis 1. Mitte muuta teavet alates viimati k\u00e4ivitamisest<\/strong><\/p>\n<p>Kuidas \u00fctleb <noindex><a rel=\"nofollow\" href=\"https:\/\/helm.sh\/docs\/intro\/using_helm\/#helm-upgrade-and-helm-rollback-upgrading-a-release-and-recovering-on-failure\">ametlik veebisait<\/a><\/noindex> Helm, \u201eKubernetesi graafikud v\u00f5ivad olla suured ja keerulised, seet\u00f5ttu p\u00fc\u00fcab Helm mitte midagi liiga tihti muuta.\u201d Seega, kui uuendada pildi latest versiooni Docker registris ja k\u00e4ivitada k\u00e4sk <code>helm upgrade<\/code>, siis ei juhtu midagi. Helm arvab, et midagi ei ole muutunud ja seet\u00f5ttu ei pea Kubernetes'ele rakenduse v\u00e4rskendamise k\u00e4sku saatma.<\/p>\n<blockquote><p>Siin ja edaspidi on tag 'latest' n\u00e4idatud vaid n\u00e4itena. Selle sildi m\u00e4\u00e4ramisel laadib Kubernetes igal korral pildi Docker registrist, s\u00f5ltumata imagePullPolicy parameetrist. 'Latest' kasutamine tootmises on soovitatav v\u00e4ltida ja v\u00f5ib p\u00f5hjustada k\u00f5rvaltoimeid.<\/p><\/blockquote>\n<p>\n<strong>Viis 2. V\u00e4rskendada LABELi imajas<\/strong><\/p>\n<p>Nagu on \u00f6eldud samas <noindex><a rel=\"nofollow\" href=\"https:\/\/helm.sh\/docs\/intro\/using_helm\/#helm-upgrade-and-helm-rollback-upgrading-a-release-and-recovering-on-failure\">dokumentatsioon<\/a><\/noindex>, \u201eHelm v\u00e4rskendab rakendust, ainult kui see on muutunud alates viimase v\u00e4ljaande.\u201d Loogiliseks variandiks tundub olla LABEL'i sildi v\u00e4rskendamine ise Docker-pildis. Siiski, Helm ei piilu rakenduste piltidesse ja ei tea nende muutustest. Seet\u00f5ttu, kui sildi v\u00e4rskendamisel on eeldatav, et Helm neist teada ei saa ja rakenduse v\u00e4rskendamise k\u00e4sk Kubernetes'esse ei j\u00f5ua.<\/p>\n<p><strong>Viis 3. Kasutada v\u00f5tmeid <code>--force<\/code><\/strong><\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/4888cddfb7698b7044ab31b6f6070063.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVaatame manuaale ja otsime vajalikke v\u00f5tmeid. K\u00f5ige rohkem sobib konteksti v\u00f5tme <code>--force<\/code>. Hoolimata k\u00f5nelevast nimest, k\u00e4itumine erineb ootamatust. Selle asemel, et sundida rakendust v\u00e4rskendama, on selle tegelik eesm\u00e4rk taastada FAILED olekus oleva versiooni. Kui seda v\u00f5tit ei kasutata, tuleb j\u00e4rjestikku teostada k\u00e4ske. <code>helm delete &amp;&amp; helm install --replace<\/code>. Selle asemel soovitatakse kasutada v\u00f5tit <code>--force<\/code>, mis automatiseerib nende k\u00e4skude j\u00e4rjestikulise t\u00e4itmise. Rohkem teavet leiate sellest <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/pull\/3597\">pull-requestist.<\/a><\/noindex>. Et \u00f6elda Helmile, et rakenduse versioon ikkagi uuendada, ei sobi kahjuks see v\u00f5ti.<\/p>\n<p><strong>Viis 4. Muuda labels otse Kuberneteses.<\/strong><\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/0a35e7aaa7479685f07dd5b935c95eb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLabeli otse uuendamine klastris k\u00e4su abil <code>kubectl edit<\/code> \u2014 halb m\u00f5te. See tegevus toob kaasa teabe j\u00e4rjepidevuse rikkumise t\u00f6\u00f6tava rakenduse ja selle vahel, mis algselt saadeti juurutamiseks. Helmi k\u00e4itumine juurutamisel on sel juhul erinev selle versioonist: Helm 2 ei tee midagi, samas kui Helm 3 juurutab rakenduse uue versiooni. Selle p\u00f5hjuse m\u00f5istmiseks tuleb aru saada, kuidas Helm t\u00f6\u00f6tab.<\/p>\n<h3>Kuidas Helm t\u00f6\u00f6tab?<\/h3>\n<p>\nEt m\u00e4\u00e4rata, kas rakendus on viimasest v\u00e4ljaandest alates muutunud, v\u00f5ib Helm kasutada:<\/p>\n<ul>\n<li>Kuberneteses k\u00e4ivitatud rakendust;<\/li>\n<li>uut values.yaml faili ja asjakohast chart'i;<\/li>\n<li>Helmi siseteavet v\u00e4ljaannete kohta.<\/li>\n<\/ul>\n<p><b class=\"spoiler_title\">K\u00f5ige uudishimu \u00fcle: kus Helm salvestab siseteabe v\u00e4ljaannete kohta?<\/b>K\u00e4sku t\u00e4ites <code>helm history<\/code>, saame kogu teabe versioonide kohta, mis on Helmi abil installitud.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/0bf3afeb9c4947220474af648a1fa1ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSeal on ka \u00fcksikasjalik teave saadetud mallide ja v\u00e4\u00e4rtuste kohta. Saame seda k\u00fcsida:<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/858560c0f4adf7375060cec339df7574.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nHelmi teises versioonis on see teave samas nimiruumis, kus Tiller t\u00f6\u00f6tab (vaikimisi \u2014 kube-system), ConfigMap'is, mis on m\u00e4rgistatud sildiga 'OWNER=TILLER':<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/ba665a079ccddeb4ca7049822c42a498.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKolmanda versiooni saabudes kolis teave saledatesse, kes t\u00f6\u00f6tab samas nimiruumis, kus rakendus on k\u00e4imas. See v\u00f5imaldas samal ajal k\u00e4itada mitut rakendust erinevates nimiruumides sama v\u00e4ljaande nimega. Teises versioonis oli see t\u00f5sine peavalu, kuna nimiruumid on isoleeritud, kuid saavad omavahel m\u00f5jutada.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/b9b82b7c86320a0e3642e4265a1f0241.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nTeine Helm, kui ta \u00fcritab aru saada, kas uuendamine on vajalik, kasutab ainult kahte teabeallikat: seda, mida talle praegu pakuti, ja siseteavet v\u00e4ljaannete kohta, mis on ConfigMap'is.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/0550ba5f6ce7be1e7f666dfc65e639ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKolmas Helm kasutab kolme \u00fchinemise strateegiat: lisaks sellele teabele arvestab ta ka rakendusega, mis hetkel Kuberneteses t\u00f6\u00f6tab.<\/p>\n<p><img decoding=\"async\" alt=\"Helm seadme ja selle miinused\" src=\"\/wp-content\/uploads\/2020\/02\/252085adb83e097e01b4a0655706ede5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSeet\u00f5ttu ei tee vana versioon Helm midagi, kuna see ei arvestanud klastri rakenduse infot, kuid Helm 3 saab muudatused ja saadab uue rakenduse v\u00e4ljastamiseks.<\/p>\n<p><strong>Meetod 5. Kasutada v\u00f5tme &#8212;recreate-pods<\/strong><\/p>\n<p>V\u00f5tme <code>--recreate-pods<\/code> abil on v\u00f5imalik saavutada seda, mida algselt sooviti saavutada v\u00f5tme <code>--force<\/code>. Konteinerid taask\u00e4ivituvad ja vastavalt poliitikale imagePullPolicy: Always m\u00e4rgis latest (sellest oli juba eespool juttu) laadib Kubernetes alla ja k\u00e4ivitab uue pildi versiooni. Kuid see toimub mitte eriti h\u00e4sti: j\u00e4ttes t\u00e4helepanuta StrategyType juurutuse, l\u00fclitab see j\u00e4rsku v\u00e4lja k\u00f5ik vanad rakenduse instantsid ja hakkab k\u00e4ivitama uusi. Taask\u00e4ivitamise ajal s\u00fcsteem ei t\u00f6\u00f6ta, kasutajad kannatavad.<\/p>\n<p>Kuberneteses oli sarnane probleem pikka aega. Ja n\u00fc\u00fcd, neli aastat p\u00e4rast probleemi avastamist <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/13488\">Probleem<\/a><\/noindex>, on probleem lahendatud ning alates 1.15 versioonist on Kuberneteses v\u00f5imalik tehtud podide rolling-restart.<\/p>\n<p>Helm lihtsalt l\u00f5petab k\u00f5ik rakendused ja k\u00e4ivitab k\u00f5rval uued konteinerid. Tootmisre\u017eiimis ei tohi niimoodi teha, et mitte tekitada rakenduse seiskumist. Seda tuleks teha ainult arenduse vajadusteks, seda saab teostada ainult etapi keskkondades.<\/p>\n<h2>Kuidas uuendada rakenduse versiooni Helmiga?<\/h2>\n<p>\nMuudame Helmile edastatavaid v\u00e4\u00e4rtusi. Reeglina on need v\u00e4\u00e4rtused, mis asendavad pildi sildi. Juhul, kui kasutatakse latest, mida sageli kasutatakse mitteproduktiivsetes keskkondades, on muudetav teave m\u00e4rk, mis on Kubernetesile kasutu, kuid Helmile annab signaali rakenduse uuendamise vajadusest. Annootatsiooni v\u00e4\u00e4rtuste t\u00e4itmise variandid:<\/p>\n<ol>\n<li><strong>Juhuslik v\u00e4\u00e4rtus<\/strong> kasutades standardfunktsiooni \u2014 <code>{{ randAlphaNum 6 }}<\/code>. <br \/>\nOn n\u00fcanss: p\u00e4rast iga juurutamist selle chardi abil, millel on selline muutujav\u00e4\u00e4rtus, on annootatsiooni v\u00e4\u00e4rtus ainulaadne ning Helm arvab, et on muutused. Seega taask\u00e4ivitame rakenduse alati, isegi kui me ei ole selle versiooni muutnud. See ei ole kriitiline, kuna seismist ei tule, aga siiski ebameeldiv.<\/li>\n<li>Sisestada praegune <strong>kuup\u00e4ev ja kellaaeg<\/strong> \u2014 <code>{{ .Release.Date }}<\/code>. <br \/>\nVariant on sarnane juhuslikule v\u00e4\u00e4rtusele, kuid pidevalt ainulaadse muutujaga.<\/li>\n<li>\u00d5igeim viis on kasutada <strong>kontrollsummad<\/strong>. See on SHA pildi v\u00f5i SHA viimase git commit'i \u2014 <code>{{ .Values.sha }}<\/code>. <br \/>\nNeed tuleb arvestada ja saata Helm klientile kutsuva poole, n\u00e4iteks Jenkinsis. Kui rakendus muutub, muutub ka kontrollsumma. Seega uuendab Helm rakendust ainult siis, kui see on vajalik.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Kokkuv\u00f5tteks meie katsetest<\/h2>\n<p><\/p>\n<ul>\n<li>Helm teeb muudatused v\u00f5imalikult v\u00e4hem invasiivsel viisil, seega ei too rakenduse pildi tasemel muutmine Docker Registry's kaasa uuendamist: k\u00e4su t\u00e4itmisel ei juhtu midagi.<\/li>\n<li>V\u00f5ti <code>--force<\/code> kasutatakse probleemsete versioonide taastamiseks ning ei ole seotud sunduuendamisega.<\/li>\n<li>V\u00f5ti <code>--recreate-pods<\/code> sunduuendab rakendusi, kuid teeb seda vandalismi meetodil: sulgeb j\u00e4rsult k\u00f5ik konteinerid. Selle tagaj\u00e4rjel kannatavad kasutajad, tootmises ei tohiks seda teha.<\/li>\n<li>Otse Kubernetes klastrisse muudatuste tegemine k\u00e4su abil <code>kubectl edit<\/code> ei ole vajalik: see rikub j\u00e4rjepidevust ja k\u00e4itumine s\u00f5ltub Helm'i versioonist.<\/li>\n<li>Uue Helm'i versiooni v\u00e4ljaandmisega on tulnud palju n\u00fcansse. Issues Helm'i hoidlas on selgelt kirjeldatud ning need aitavad detailides selgust saada.<\/li>\n<li>Muudetava annotatsiooni lisamine charti muudab selle paindlikumaks. See v\u00f5imaldab rakenduse \u00f5igesti juurutada, ilma seisakuteta.<\/li>\n<\/ul>\n<p>\nM\u00f5te, mis kehtib igas eluvaldkonnas: loe juhendit enne kasutamist, mitte p\u00e4rast. Ainult t\u00e4ielikku teavet omades on v\u00f5imalik ehitada usaldusv\u00e4\u00e4rseid s\u00fcsteeme ja teha kasutajaid \u00f5nnelikuks.<\/p>\n<p><strong>Teised seotud lingid:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/453734\/\">Tutvumine <i>Helm<\/i> 3<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/helm.sh\/\">Helm ametlik veebisait<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\">Helm'i hoidl on GitHubis<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/425343\/\">25 kasulikku t\u00f6\u00f6riista Kubernetes: juurutamine ja haldamine<\/a><\/noindex><\/li>\n<\/ol>\n<p>\nSee ettekande kuulutati esmakordselt <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/at-kubernetes-conference\/\">@Kubernetes Conference<\/a><\/noindex> Mail.ru Cloud Solutions poolt. N\u00e4e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLQzTaxmOHjnv0tP_HDxsIvcuac2kkIJTQ\">video<\/a><\/noindex> teisi ettekandeid ja j\u00e4lgi \u00fcrituste teadaandeid Telegramis <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/k8s_mail\">Kubernetesest Mail.ru Groupis<\/a><\/noindex>.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/488192\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Typhon freight hauler concept, Anton Swanepoel \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0421\u0443\u0433\u0440\u043e\u0431\u043e\u0432, \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u00ab\u041b\u0435\u0440\u0443\u0430 \u041c\u0435\u0440\u043b\u0435\u043d\u00bb. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Helm, \u043a\u0430\u043a \u043e\u043d \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Kubernetes, \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043a\u0430\u043a \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f. \u042d\u0442\u043e \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 \u043f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 @Kubernetes Conference by Mail.ru Cloud [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":70955,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-70954","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.2 - aioseo.com -->\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\/et\/blog\/administrirovanie\/ustrojstvo-helm-i-ego-podvodnye-kamni\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Helm \u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ustrojstvo-helm-i-ego-podvodnye-kamni\" \/>\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=\"2020-02-22T21:58:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:40+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\udd47Helm'i struktuur ja selle peidetud probleemid | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ustrojstvo-helm-i-ego-podvodnye-kamni","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Helm \u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 | ProHoster","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ustrojstvo-helm-i-ego-podvodnye-kamni","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":"2020-02-22T21:58:17+00:00","article:modified_time":"2020-03-03T13:14:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"70954","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:11:23","updated":"2022-09-30 13:54:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/70954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=70954"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/70954\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/70955"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=70954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=70954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=70954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}