{"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'i seade ja selle v\u00f5imalikud probleemid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" 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 kaubaveo kontseptsioon, Anton Swanepoel<\/a><\/noindex><\/p>\n<p>Minu nimi on Dmitri Sugrobov, olen arendaja ettev\u00f5ttes 'Leroy Merlin'. Artikli eesm\u00e4rk on r\u00e4\u00e4kida, miks on Helm vajalik, kuidas see lihtsustab Kubernetes'ega t\u00f6\u00f6tamist, mis on muutunud kolmandas versioonis ja kuidas selle abil rakendusi tootmises katkematuks uuendada.<\/p>\n<p>See on kokkuv\u00f5te k\u00f5nest konverentsil <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/at-kubernetes-conference\/\">@Kubernetes Konverents<\/a><\/noindex> by <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\">Mail.ru Cloud Solutions<\/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=\"Vaata 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 Kubernetes't tootmises<\/h2>\n<p>\n'Leroy Merlin' on DIY-jaem\u00fc\u00fcgi turuliider Venemaal ja Euroopas. Meie ettev\u00f5ttes on \u00fcle saja arendaja, 33 000 sisemist t\u00f6\u00f6tajat ja tohutu hulk inimesi, kes k\u00fclastavad h\u00fcpermarketeid ja veebisaiti. K\u00f5ikide nende \u00f5nnelikuks tegemiseks otsustasime j\u00e4rgida t\u00f6\u00f6stusharu standardseid l\u00e4henemisviise. Arendame uusi rakendusi, kasutades mikroteenuste arhitektuuri; keskkondade isoleerimiseks ja \u00f5ige tarnimise tagamiseks kasutame konteinerite tehnoloogiat; ning orkestreerimiseks kasutame Kubernetes't. Orkestreerijate kasutushind v\u00e4heneb kiiresti: turule tuleb \u00fcha rohkem insenere, kes valdavad tehnoloogiat, ja ilmuvad teenusepakkujad, kes pakuvad Kubernetes't teenusena.<\/p>\n<p>K\u00f5ik, mida Kubernetes teeb, on muidugi v\u00f5imalik teha ka muude meetoditega, n\u00e4iteks kirjutades skripte Jenkinsile ja docker-compose'ile, kuid miks elamist keerulisemaks teha, kui on olemas valmis ja usaldusv\u00e4\u00e4rne lahendus? Seet\u00f5ttu j\u00f5udsime Kuberneteseni, mida oleme kasutanud tootmises juba aasta. Praegu on meil kaksk\u00fcmmend neli Kubernetes'e klastrit, k\u00f5ige vanem neist on \u00fcle aasta vana ja selles on umbes kakssada pod'i.<\/p>\n<h2>YAML-failide hulk Kuberneteses on t\u00f5eline nuhtlus.<\/h2>\n<p>\nMikros\u00fcsteemi 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-faile, kolmandale lisame veel \u00fche ja nii edasi. Korrutades failide arvu keskkondade arvuga, saame juba sadu faile, ja see ei arvestagi d\u00fcnaamilisi keskkondi.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/c46c3f5ae49cbefa4851cbb388bfd051.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAdam Reese, Helm'i peamine hooldaja, tutvustas m\u00f5istet \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/cZ1S2Gp47ng?t=323\">Arendusprotsess Kuberneteses<\/a><\/noindex>\u201d, mis n\u00e4eb v\u00e4lja j\u00e4rgmine:<\/p>\n<ol>\n<li>Kopeeri YAML \u2014 kopeeri YAML-fail.<\/li>\n<li>Kleebi YAML \u2014 kleebi see sisse.<\/li>\n<li>Paranda sisendid \u2014 paranda t\u00fckid.<\/li>\n<li>Korrake \u2014 korda uuesti.<\/li>\n<\/ol>\n<p>\nSee variant t\u00f6\u00f6tab, kuid peab korduvalt YAML-faile kopeerima. Selle ts\u00fckli muutmiseks loodi 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 ole vaja minna ametlikule veebisaidile ja allalaadimiseks bin faile, piisab k\u00e4su t\u00e4itmisest <code>helm install stable\/mongodb<\/code>.<\/p>\n<p>Teiseks, Helm \u2014 <strong>\u0161ablonigeneraator<\/strong>, aitab parameteriseerida faile. Naaseme Kuberneteses YAML-failide olukorda. Sama YAML faili kirjutamine on lihtsam, kui lisada m\u00f5ned kohandatavad v\u00e4\u00e4rtused, mida Helm vahetab. Ehk et suure hulga YAML-failide asemel on olemas \u0161ablonid (template'id), kuhu \u00f5igel ajal \u00f5iged v\u00e4\u00e4rtused sisse pannakse.<\/p>\n<p>Kolmandaks, Helm \u2014 <strong>rakenduste juurutamise meister<\/strong>. Selle abil on v\u00f5imalik installida, tagasi p\u00f6\u00f6rduda ja v\u00e4rskendada rakendusi. Vaadakem, kuidas seda teha.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/8b517dbcf503ced229569fe3726418c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Kuidas kasutada Helmi oma rakenduste juurutamiseks<\/h3>\n<p>\nInstalleerime Helm kliendi arvutisse, j\u00e4rgides ametlikku <noindex><a rel=\"nofollow\" href=\"https:\/\/helm.sh\/docs\/intro\/install\/\">juhendis<\/a><\/noindex>. Seej\u00e4rel loome komplekti YAML-faile. Konkreetsete v\u00e4\u00e4rtuste m\u00e4\u00e4ramise asemel j\u00e4tame kohandatavad v\u00e4\u00e4rtused, mille Helm tulevikus t\u00e4idab. Sellise failide komplekti nimetatakse Helm chart'iks. Helm'i konsoolikliendile saab selle edastada kolme viisi:<\/p>\n<ul>\n<li>n\u00e4idata \u0161ablonite kausta;<\/li>\n<li>pakendada .tar arhiivi ja viidata sellele;<\/li>\n<li>asetage mall template kaugserverisse ja lisage link repositooriumisse Helm kliendis.<\/li>\n<\/ul>\n<p>\nMe vajame ka v\u00e4\u00e4rtuste faili \u2014 values.yaml. Sealt olevad andmed asendatakse mallis. Loome selle ka.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/c0fe24cc8186640147f95ce201794d96.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nHelm 2. versioonis on lisaks serverirakendus \u2014 Tiller. See asub v\u00e4ljaspool Kubernetes'i ja ootab p\u00e4ringuid Helm kliendilt ning kutsudes asendab vajalikud v\u00e4\u00e4rtused mallis ja saadab need Kubernetes'i.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/6b821a0bb4680829d5ce9982d2bb4c55.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nHelm 3 on lihtsam: selle asemel, et t\u00f6\u00f6delda malle serveris, t\u00f6\u00f6deldakse teavet n\u00fc\u00fcd t\u00e4ielikult Helm kliendi poolel ja saadetakse otse Kubernetes API-le. See lihtsustus suurendab klasteri turvalisust ja lihtsustab juurutamise protsessi.<\/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\u00e4lja nime, anname teed values.yaml failini. L\u00f5pus n\u00e4itame repositooriumi, kus chart asub, ja charti nime. N\u00e4iteks on see \u00ablmru\u00bb ja \u00abbestchart\u00bb vastavalt.<\/p>\n<pre><code class=\"plaintext\">helm install --name bestapp --values values.yaml lmru\/bestchart\n<\/code><\/pre>\n<p>\nK\u00e4sku saab teostada ainult \u00fcks kord, korduv t\u00e4itmine asendab <code>install<\/code> peaks kasutama <code>uuenda<\/code>. Lihtsuse huvides v\u00f5ite kahte k\u00e4sku asendada k\u00e4suga <code>uuenda<\/code> t\u00e4iendava v\u00f5tmega <code>--install<\/code>. Esimese k\u00e4ivitamise korral saadab Helm k\u00e4su versiooni installimiseks ja seej\u00e4rel 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 takistused Helmiga<\/h2>\n<p>\n<i>Selles loo osas m\u00e4ngin ma saaliga m\u00e4ngu \"Kes tahab saada miljon\u00e4riks\" ja me selgitame v\u00e4lja, kuidas sundida Helmi rakenduse versiooni uuendama. <\/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 toimimist, \u00fcllatas mind kummaline k\u00e4itumine rakenduste k\u00e4ivitatud versioonide uuendamisel. Rakenduse koodi uuendasin, Docker registry's laadisin uue pildi \u00fcles, saatsin k\u00e4su juurutamiseks \u2013 ja midagi ei juhtunud. Allpool on m\u00f5ned mitte eriti h\u00e4sti \u00f5nnestunud viisid rakenduste uuendamiseks. Iga\u00fche p\u00f5hjalikum uurimine aitab m\u00f5ista t\u00f6\u00f6riista sisemist \u00fclesehitust ja sellise mitte ilmselge k\u00e4itumise p\u00f5hjuseid.<\/p>\n<p><strong>Meetod 1. Mitte muuta teavet alates viimati k\u00e4ivitamisest<\/strong><\/p>\n<p>Kuidas \u00f6eldakse <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, \"Kubernetesi graafikud v\u00f5ivad olla suured ja keerulised, seet\u00f5ttu p\u00fc\u00fcab Helm mitte segada\"&gt;. Seega, kui uuendada rakenduse viimase versiooni pilt docker registry's ja k\u00e4ivitada k\u00e4sk. <code>helm upgrade<\/code>, siis ei juhtu midagi. Helm arvab, et mitte midagi ei ole muutunud ja ei saada Kubernetes'e k\u00e4su rakenduse v\u00e4rskendamiseks.<\/p>\n<blockquote><p>Siin ja edaspidi on silt latest esitatud vaid n\u00e4itena. Selle sildi m\u00e4\u00e4ramisel laadib Kubernetes iga kord pildi docker registreerimisest, s\u00f5ltumata parameetrist imagePullPolicy. Latest'i kasutamine tootmises ei ole soovitatav ja v\u00f5ib p\u00f5hjustada k\u00f5rvaltoimeid.<\/p><\/blockquote>\n<p>\n<strong>Meetod 2. V\u00e4rskenda LABEL'i pildis<\/strong><\/p>\n<p>Nagu on kirjutatud 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\">dokumentatsioonis<\/a><\/noindex>, \u00abHelm v\u00e4rskendab rakendust ainult siis, kui see on viimase v\u00e4ljaande ajast alates muutunud\u00bb. Loogiline variant selle jaoks oleks LABEL'i m\u00e4rgi v\u00e4rskendamine otseselt docker-pildis. Siiski ei vaata Helm rakenduse pilte sisse ega tea nende muudatustest midagi. Seega ei saa Helm pilti t\u00e4histades neist teadlikuks, ja k\u00e4sk rakenduse v\u00e4rskendamiseks Kubernetes'e ei v\u00e4ljastata.<\/p>\n<p><strong>Meetod 3. Kasuta v\u00f5tit <code>--force<\/code><\/strong><\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/4888cddfb7698b7044ab31b6f6070063.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nOleme juhtumid ja otsime vajalikku v\u00f5tit. K\u00f5ige rohkem sobib t\u00e4henduse poolest v\u00f5ti <code>--force<\/code>. Kuigi nimi on ise r\u00e4\u00e4kiv, erineb k\u00e4itumine ootusest. Selle asemel, et rakendust sunduuendada, on selle tegelik eesm\u00e4rk taastada FAILED seisundis olev v\u00e4ljaanne. Kui seda v\u00f5tit ei kasutata, tuleb k\u00e4sud j\u00e4rjestikku t\u00e4ita. <code>helm delete &amp;&amp; helm install --replace<\/code>. Selle asemel on soovitatav kasutada v\u00f5tit <code>--force<\/code>, mis automatiseerib nende k\u00e4skude j\u00e4rjestikuse t\u00e4itmise. Rohkem teavet leiate sellest <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\/pull\/3597\">pull requestist.<\/a><\/noindex>. Kahjuks ei sobi see v\u00f5ti, et \u00f6elda Helmile rakenduse versiooni ikkagi uuendada.<\/p>\n<p><strong>Viis 4. Muuda etikette otse Kuberneteses<\/strong><\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/0a35e7aaa7479685f07dd5b935c95eb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEtiketi otse muutmine klastris k\u00e4su abil <code>kubectl edit<\/code> on halb m\u00f5te. See tegevus toob kaasa teabe vastuolulisuse t\u00f6\u00f6tava rakenduse ja selle vahel, mis algselt saadeti juurutamiseks. Sellisel juhul erineb Helmi k\u00e4itumine juurutamisel oma versioonist: Helm 2 ei tee midagi, samas kui Helm 3 juurutab uue rakenduse versiooni. Probleemi m\u00f5istmiseks on oluline m\u00f5ista, kuidas Helm t\u00f6\u00f6tab.<\/p>\n<h3>Kuidas Helm t\u00f6\u00f6tab<\/h3>\n<p>\nEt m\u00e4\u00e4rata, kas rakendus on muutunud alates viimase v\u00e4ljaande versioonist, v\u00f5ib Helm kasutusele v\u00f5tta:<\/p>\n<ul>\n<li>Kubernetes'is k\u00e4imasoleva rakendusega;<\/li>\n<li>uus values.yaml ja \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0440\u0442;<\/li>\n<li>Helmi sisemise teabega versioonide kohta.<\/li>\n<\/ul>\n<p><b class=\"spoiler_title\">Karmeim uurija: kus Helm salvestab sisemise teabe versioonide kohta?<\/b>K\u00e4ivitades k\u00e4su <code>helm history<\/code>, saame kogu teabe versioonide kohta, mis on Helmi abil installitud.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/0bf3afeb9c4947220474af648a1fa1ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLisaks on saadaval \u00fcksikasjalik teave saadetud malli ja v\u00e4\u00e4rtuste kohta. Saame neid k\u00fcsida:<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/858560c0f4adf7375060cec339df7574.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTeises versioonis asub see teave samas nimede ruumis, kus Tiller t\u00f6\u00f6tab (vaikimisi - kube-system), ConfigMap'is, mis on m\u00e4rgitud tunnusega \u00abOWNER=TILLER\u00bb:<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/ba665a079ccddeb4ca7049822c42a498.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKolmanda versiooni ilmumisel kolis teave saladustesse, j\u00e4\u00e4des samasse nimede ruumi, kus rakendus t\u00f6\u00f6tab. See v\u00f5imaldas korraga k\u00e4ivitada mitu rakendust erinevates nimede ruumides, millel on sama versiooni nimi. Teises versioonis oli see suur peavalu, kuna nimede ruumid olid eraldatud, kuid said omavahel m\u00f5jutada.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/b9b82b7c86320a0e3642e4265a1f0241.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nTeine Helm, p\u00fc\u00fcdes m\u00f5ista, kas uuendust on vaja, kasutab ainult kahte teabeallikat: seda, mida talle praegu pakutakse, ja sisemist teavet versioonide kohta, mis asub ConfigMap'is.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/0550ba5f6ce7be1e7f666dfc65e639ad.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKolmas Helm kasutab kolme suuna \u00fchinemise strateegiat: lisaks sellele, millele ta t\u00e4helepanu p\u00f6\u00f6rab, arvestab ta ka rakendust, mis t\u00f6\u00f6tab praegu Kuberneteses.<\/p>\n<p><img decoding=\"async\" alt=\"Helm&#039;i seade ja selle v\u00f5imalikud probleemid\" src=\"\/wp-content\/uploads\/2020\/02\/252085adb83e097e01b4a0655706ede5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSel p\u00f5hjusel ei tee vana versioon Helm midagi, kuna ta ei arvesta klastris oleva rakenduse teavet, kuid Helm 3 saab muudatused ja saadab uue rakenduse juurutamiseks.<\/p>\n<p><strong>Meetod 5. Kasutada v\u00f5tit &#8212;recreate-pods<\/strong><\/p>\n<p>V\u00f5tme abil <code>--recreate-pods<\/code> saab saavutada selle, mida algselt plaaniti saavutada v\u00f5tmega <code>--force<\/code>. Konteinerid taask\u00e4ivituvad ja vastavalt imagePullPolicy: Always poliitikale, mis on seotud latest sildiga (selle kohta on mainitud eespool), laadib Kubernetes alla ja k\u00e4ivitab uue pildi versiooni. Seda tehakse mitte k\u00f5ige paremal viisil: arvestamata juurutamise StrategyType\u2019it, l\u00fclitab ta j\u00e4rsult v\u00e4lja k\u00f5ik vana rakenduse instantsid ja hakkab k\u00e4ivitama uusi. Taask\u00e4ivitamise ajal ei t\u00f6\u00f6ta s\u00fcsteem, kasutajad kannatavad.<\/p>\n<p>Samas esines Kuberneteses sarnane probleem pikka aega. Ja voil\u00e0, neli aastat p\u00e4rast probleemi avastamist <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/13488\">Issue<\/a><\/noindex>, probleem on lahendatud ja alates Kubernetes 1.15 versioonist on olemas v\u00f5imalus podide rolling-restartiks.<\/p>\n<p>Helm lihtsalt lukustab k\u00f5ik rakendused ja k\u00e4ivitab k\u00f5rval uusi konteinerite. Toote keskkonnas ei tohi seda teha, et mitte p\u00f5hjustada rakenduse seiskumist. Sellist k\u00e4itumist on vaja ainult arenduse eesm\u00e4rkidel ning seda v\u00f5ib teha ainult stseenikeskkondades.<\/p>\n<h2>Kuidas uuendada rakenduse versiooni Helmiga?<\/h2>\n<p>\nMuudame v\u00e4\u00e4rtusi, mis saadetakse Helmile. Reeglina on need v\u00e4\u00e4rtused, mis asendavad pildi sildi. Kui tegemist on 'latest' sildiga, mida sageli kasutatakse tootmises, siis on muudetav teave annotatsioon, mis Kubernetes'i jaoks on kasutu, kuid Helmile signaal uuendada rakendust. Annotatsiooni v\u00e4\u00e4rtuse t\u00e4itmise variandid:<\/p>\n<ol>\n<li><strong>Juhuslik v\u00e4\u00e4rtus<\/strong> standardse funktsiooni abil \u2014 <code>{{ randAlphaNum 6 }}<\/code>. <br \/>\nOn \u00fcks n\u00fcanss: iga kord, kui rakendatakse seda muudatuste m\u00e4\u00e4ratlemise charti, on annotatsiooni v\u00e4\u00e4rtus ainulaadne ning Helm arvab, et muudatusi on toimunud. Seega k\u00e4ivitame rakenduse alati uuesti, isegi kui me ei ole selle versiooni muutnud. See ei ole kriitiline, kuna seisakut ei toimu, aga siiski ebameeldiv.<\/li>\n<li>Sisestada praegune <strong>kuup\u00e4ev ja kellaaeg<\/strong> \u2014 <code>{{ .Release.Date }}<\/code>. <br \/>\nVariant on juhuslik v\u00e4\u00e4rtus pidevalt unikaalse muutujaga.<\/li>\n<li>\u00d5igem viis on kasutada <strong>kontrollsummasid<\/strong>. See on SHA pildi v\u00f5i viimase git commit'i SHA \u2014 <code>{{ .Values.sha }}<\/code>. <br \/>\nNeed tuleb arvutada ja saata Helm kliendile kutsujapoolel, n\u00e4iteks Jenkinsis. Kui rakendus muutub, muutub ka kontrollsumma. Seet\u00f5ttu uuendab Helm rakendust ainult siis, kui 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\u00e4he invasiivselt, seega ei too rakenduse pildi tasemel muudatus Docker Registry's kaasa uuendamist: p\u00e4rast k\u00e4su t\u00e4itmist ei toimu midagi.<\/li>\n<li>Ala <code>--force<\/code> kasutatakse probleemsete v\u00e4ljalaskude taastamiseks ja ei ole seotud sunduuendamisega.<\/li>\n<li>Ala <code>--recreate-pods<\/code> sunduuendab rakendusi, kuid teeb seda r\u00fc\u00fcstamise viisil: kustutab k\u00f5ik konteinerid j\u00e4rsult. See kahjustab kasutajaid, seda ei tohiks tootmises teha.<\/li>\n<li>Otseselt muudatusi Kubernetese klastrisse k\u00e4su <code>kubectl edit<\/code> teha ei tohi: rikume j\u00e4rjepidevust ja k\u00e4itumine s\u00f5ltub Helm'i versioonist.<\/li>\n<li>Uue Helm versiooni ilmumisega on tulnud palju n\u00fcansse. Helm'i repostiitursis olevad k\u00fcsimused on selgelt s\u00f5nastatud ja aitavad \u00fcksikasjadest aru saada.<\/li>\n<li>Muudetava annotatsiooni lisamine chart'ile muudab selle paindlikumaks. See v\u00f5imaldab rakendust \u00f5igesti juurutada ilma seisakuteta.<\/li>\n<\/ul>\n<p>\nM\u00f5te, mida v\u00f5iks nimetada 'rahuks kogu maailmas', toimib igas elu valdkonnas: loe juhendit enne kasutamist, mitte p\u00e4rast. Ainult t\u00e4ieliku teabe omandamisega on v\u00f5imalik ehitada usaldusv\u00e4\u00e4rseid s\u00fcsteeme ja muuta kasutajad \u00f5nnelikuks.<\/p>\n<p><strong>Teemaga seotud muud 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 veebileht<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/helm\">Helm'i repostiit GitHub'is<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/425343\/\">25 kasulikku Kubernetes'i t\u00f6\u00f6riista: juurutamine ja haldamine<\/a><\/noindex><\/li>\n<\/ol>\n<p>\nSee ettekannet k\u00f5las esmakordselt <noindex><a rel=\"nofollow\" href=\"https:\/\/corp.mail.ru\/ru\/press\/events\/at-kubernetes-conference\/\">@Kubernetes Konverents<\/a><\/noindex> Mail.ru Cloud Solutions esitlus. Vaadake <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLQzTaxmOHjnv0tP_HDxsIvcuac2kkIJTQ\">video<\/a><\/noindex> teisi ettekandeid ja tellige \u00fcrituste teateid Telegramis <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/k8s_mail\">Kubernetesest Mail.ru Grupis<\/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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"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\" \/>\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) 4.9.10\" \/>\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:description\" content=\"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\" \/>\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\udd47 Helmi seade ja selle varjatud probleemid | ProHoster","description":"Typhon kaubaveo kontseptsioon, Anton Swanepoel. Minu nimi on Dmitri Sugrobov, olen arendaja \"Leroy Merlinis\". Selles artiklis r\u00e4\u00e4gin, miks on Helm vajalik, kuidas see lihtsustab Kubernetes'ega t\u00f6\u00f6tamist, mis on kolmandas versioonis muutunud ja kuidas selle abil uuendada rakendusi tootmises ilma seisakuteta. See on kokkuv\u00f5te esinemisest konverentsil @Kubernetes Conference by Mail.ru Cloud.","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:description":"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","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"},"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}]}}