{"id":76764,"date":"2020-04-04T13:42:24","date_gmt":"2020-04-04T11:42:24","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee"},"modified":"2020-04-04T13:42:24","modified_gmt":"2020-04-04T11:42:24","slug":"reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","title":{"rendered":"Werf 1.1 v\u00e4ljaanne: t\u00e4na parendused ehitajas ja tulevikuplaanid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Werf 1.1 v\u00e4ljaanne: t\u00e4na parendused ehitajas ja tulevikuplaanid\" src=\"\/wp-content\/uploads\/2020\/04\/c7c26e4a0b7bddb90ba087a4db7175dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/\">werf<\/a><\/noindex> \u2014 meie avatud l\u00e4htekoodiga GitOps CLI-utility rakenduste ehitamiseks ja tarnimiseks Kubernetesesse. Nagu lubatud, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">v\u00e4ljaanne v1.0<\/a><\/noindex> t\u00e4histas werfi uusimate v\u00f5imaluste lisamise ja tuttavate l\u00e4henemisviiside \u00fclevaatamise algust. N\u00fc\u00fcd on meil hea meel esitleda versiooni v1.1, mis on suur samm edasi ja alustab tulevikku suunatud arendusi. <i>kompilaator<\/i> werf. Versioon on hetkel saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">1.1 ea kanalil.<\/a><\/noindex>.<\/p>\n<p>Uue versiooni alus on uus etappide salvestusarkitektuur ja kahe kompilaatori (Stapel ja Dockerfile) t\u00f6\u00f6 optimiseerimine. Uus salvestusarkitektuur avab v\u00f5imalused jaotatud kompilaadiks mitmelt hostilt ja paralleelseks kompilaadiks \u00fchel hostil.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>T\u00f6\u00f6 optimiseerimine h\u00f5lmab \u00fcleliigsete arvutuste eemaldamist etappide allkirjade arvutamise etapis ja failide kontrollsummade arvutamise mehhanismide asendamist efektiivsematega. See optimeerimine v\u00e4hendab keskmist projekti kompileerimise aega werfi abil. Ja t\u00fchjad kompilaadid, kui k\u00f5ik etapid on vahemikus olemas. <i>stages-storage<\/i>, n\u00fc\u00fcd t\u00f5eliselt kiired. Enamasti kulgeb koostamise taask\u00e4ivitamine kiiremini kui sekundiga! See kehtib ka etappide kontrollimisprotseduuride kohta, mis toimuvad meeskonna t\u00f6\u00f6s. <code>werf deploy<\/code> ja <code>werf run<\/code>.<\/p>\n<p>Samuti on selles v\u00e4ljalaskes saadaval sisu p\u00f5hjal pildi sildistamise strateegia \u2014 <i>sisu p\u00f5hine m\u00e4rgistamine<\/i>, mis on n\u00fc\u00fcd vaikimisi sisse l\u00fclitatud ja on ainus soovitatav variant.<\/p>\n<p>Vaatame l\u00e4hemalt werf v1.1 peamisi uuendusi ja r\u00e4\u00e4gime samal ajal tulevikuplaanidest.<\/p>\n<h2>Mis on muutunud werf v1.1-s?<\/h2>\n<p><\/p>\n<h3>Uus etappide nimetamise formaat ja etappide valimise algoritm kaustast<\/h3>\n<p>\nUus etapi nime genereerimise reegel. Iga etapi koostamine genereerib n\u00fc\u00fcd ainulaadse etapi nime, mis koosneb kahest osast: allkiri (nagu v1.0-s) pluss ainulaadne ajakood.<\/p>\n<p>N\u00e4iteks v\u00f5ib etapi t\u00e4ielik nimi v\u00e4lja n\u00e4ha j\u00e4rgmiselt:<\/p>\n<p><code>werf-stages-storage\/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835<\/code><\/p>\n<p>\u2026 v\u00f5i \u00fcldises vormis:<\/p>\n<p><code>werf-stages-storage\/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC<\/code><\/p>\n<p>Siin:<\/p>\n<ul>\n<li> <code>SIGNATURE<\/code> \u2014 see on etapi allkiri, mis esindab etapi sisu identifikaatorit ja s\u00f5ltub Git-i redigeerimise ajaloost, mis viis selleni;<\/li>\n<li> <code>TIMESTAMP_MILLISEC<\/code> \u2014 see on garanteeritud unikaalne pildi identifikaator, mis genereeritakse uue pildi kokkupanemise hetkel.<\/li>\n<\/ul>\n<p>\nEtapi valimise algoritm vahem\u00e4lust p\u00f5hineb Git-commitite suguluskontrollil:<\/p>\n<ol>\n<li> Werf arvutab v\u00e4lja teatud etapi allkirja.<\/li>\n<li> V <i>stages-storage<\/i> v\u00f5ib eksisteerida mitu etappi sama allkirja jaoks. Werf valib k\u00f5ik sobivad allkirja j\u00e4rgi etapid.<\/li>\n<li> Kui praegune etapp on seotud Git'iga (git-archive, kasutaja etapp Git'i patchidega: <code>install<\/code>, <code>beforeSetup<\/code>, <code>setup<\/code>; v\u00f5i git-latest-patch), siis werf valib ainult need etapid, mis on seotud commitiga, mis on praeguse commit'i eelk\u00e4ija (mille jaoks on k\u00e4ivitatud koostamine).<\/li>\n<li> J\u00e4relej\u00e4\u00e4nud sobivate etappide hulgast valitakse \u00fcks \u2014 k\u00f5ige vanem loomise kuup\u00e4eva j\u00e4rgi.<\/li>\n<\/ol>\n<p>\nErinevate Git-harude jaoks v\u00f5ib olla \u00fcks ja sama allkiri. Kuid werf takistab erinevate harude vahel s\u00fcndikaedude kasutamist, isegi kui allkirjad kattuvad.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/reference\/stages_and_images.html#%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D0%B4%D0%B8%D0%B9\">\u2192 Dokumentatsioon<\/a><\/noindex>.<\/p>\n<h3>Uus etappide loomise ja salvestamise algoritm etappide ladustamises<\/h3>\n<p>\nKui werf ei leia etapi valimise ajal vahem\u00e4lust sobivat etappi, algatatakse uue etapi koostamisprotsess.<\/p>\n<p>Tuleb m\u00e4rkida, et mitu protsessi (\u00fchel v\u00f5i mitmel hostil) v\u00f5ivad alustada sama etapi kogumist peaaegu samal ajal. Werf kasutab optimistliku lukustamise algoritmi. <i>stages-storage<\/i> hetkel, kui uut ehitatud pilti salvestatakse <i>stages-storage<\/i>. Nii et kui uue etapi kogumine on valmis, lukustab werf <i>stages-storage<\/i> ja salvestab sinna uue ehitatud pildi ainult siis, kui seal juba ei eksisteeri sobivat pilti <i>(allkirja ja teiste parameetrite alusel \u2014 vt. uusi etappide valimise algoritme vahem\u00e4lust)<\/i>.<\/p>\n<p>Uus ehitatud pilt omab garanteeritult unikaalset identifikaatorit <code>TIMESTAMP_MILLISEC<\/code> <i>(vt. uusi etappide nimete vorme)<\/i>. Kui <i>stages-storage<\/i> leiad sobiva pildi, loob werf uue ehitatud pildi ja kasutab vahem\u00e4lust pilti.<\/p>\n<p>Teisis\u00f5nu: esimene protsess, mis l\u00f5petab pildi kogumise (kiireim), saab \u00f5iguse salvestada selle stages-storage'i (ja see ainus pilt kasutatakse k\u00f5igi kogumiste jaoks). Aeglane kogumisprotsess ei blokeeri kunagi kiiremat protsessi, et salvestada kaudsete etappide kogumise tulemusi ja liikuda j\u00e4rgmise etapi kogumise juurde.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/reference\/stages_and_images.html#%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-%D0%B8-%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D0%B4%D0%B8%D0%B9\">\u2192 Dokumentatsioon<\/a><\/noindex>.<\/p>\n<h3>Dockerfile'i komponendi j\u00f5udlust on parendatud<\/h3>\n<p>\nPraegu koosneb Dockerfile'ist koostatud piltide etappide torustik \u00fchest etapist \u2014 <code>dockerfile<\/code>. Allkirja arvutamisel arvestatakse failide kontrollettev\u00f5ttega <code>context<\/code>, mis kasutatakse koostamisel. Enne seda t\u00e4iustust l\u00e4bis werf rekursiivselt k\u00f5ik failid ja sai kontrollsummat, liites iga faili konteksti ja muutuja. Alates versioonidest v1.1 saab werf kasutada arvutatud kontrollettev\u00f5tteid, mis on salvestatud Git-repositooriumisse.<\/p>\n<p>Algr\u00fctm p\u00f5hineb <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/docs\/git-ls-tree\">git ls-tree<\/a><\/noindex>. Algoritm arvestab sissekandeid <code>.dockerignore<\/code> ja l\u00e4bib rekursiivselt failipuud vaid vajadusel. Seega oleme lahti lasknud failis\u00fcsteemi lugemisest ning algoritmi s\u00f5ltuvus suurusest <code>context<\/code> ei ole oluline.<\/p>\n<p>Samuti kontrollib algoritm j\u00e4lgimata faile ja arvestab neid vajadusel kontrollsummas.<\/p>\n<h3>Failide importimise tulemuslikkust on parendatud<\/h3>\n<p>\nVersioonides werf v1.1 kasutatakse rsync-serverit <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/configuration\/stapel_image\/import_directive.html\">failide importimiseks artefaktidest ja piltidest<\/a><\/noindex>. Varasemalt toimus importimine kahes etapis, kasutades hosti s\u00fcsteemist kaustamontaa\u017ei.<\/p>\n<p>macOS-i importide j\u00f5udlus ei ole enam piiratud Docker mahutitega, ning impordid toimuvad sama kiiresti kui Linuxis ja Windowsis.<\/p>\n<h3>Sisu p\u00f5hine m\u00e4rgistamine<\/h3>\n<p>\nWerf v1.1 toetab nii nimetatud sisu p\u00f5hist m\u00e4rgistamist piltide jaoks \u2014 <i>sisu p\u00f5hine m\u00e4rgistamine<\/i>. Tulemuseks olevate Docker-piltide sildid s\u00f5ltuvad nende piltide sisust.<\/p>\n<p>Kui k\u00e4ivitate k\u00e4su <code>werf publish --tags-by-stages-signature<\/code> v\u00f5i <code>werf ci-env --tagging-strategy=stages-signature<\/code> publikule esitatavad pildid saavad nimetatud <b>etappide allkiri<\/b> pildist. Iga pilt on m\u00e4rgistatud omaenda etapi allkirjaga, mis arvutatakse samade reeglite j\u00e4rgi nagu iga etapi regulaarne allkiri eraldi, kuid on pildi \u00fcldistav identifikaator.<\/p>\n<p>Etapi allkiri s\u00f5ltub:<\/p>\n<ol>\n<li> selle pildi sisust;<\/li>\n<li> Git-i muudatuste ajaloost, mis viisid selle sisuni.<\/li>\n<\/ol>\n<p>\nGit-i hoidlas on alati t\u00fchjad commitid, mis ei muuda pildi failide sisu. N\u00e4iteks commitid, millel on ainult kommentaarid v\u00f5i merge-commitid, v\u00f5i commitid, mis muudavad Git-is faile, mis ei lisandu pildile.<\/p>\n<p>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 content-based tagging \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 pod&#8217;\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes \u0438\u0437-\u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438\u043c\u0435\u043d\u0438 \u043e\u0431\u0440\u0430\u0437\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u0440\u0430\u0437\u0430 \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. \u041a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d, \u043c\u0435\u0448\u0430\u044e\u0449\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0435\u0434\u0438\u043d\u043e\u043c Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 content-based tagging \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0435\u043c \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e Git-\u0432\u0435\u0442\u043a\u0430\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f pipeline&#8217;\u043e\u0432 \u0432 CI-\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0432\u0435\u0442\u043a\u0438.<\/p>\n<p><b>Oluline<\/b>: alates k\u00e4esolevast hetkest <i>stages-signature<\/i> \u2014 see on <b>ainus soovitatav tagimisstrateegia<\/b>. Just seda kasutatakse vaikimisi meeskonnas <code>werf ci-env<\/code> (kui ei ole selgelt m\u00e4\u00e4ratud teist tagimisskeemi).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/reference\/publish_process.html#%D1%82%D0%B5%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%BC%D1%83\">\u2192 Dokumentatsioon<\/a><\/noindex>. Sellele funktsioonile p\u00fchendatakse ka eraldi publikatsioon. <b>UUENDATUD<\/b> (3. aprill): Artikkel \u00fcksikasjadega <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/495112\/\">on avaldatud<\/a><\/noindex>.<\/p>\n<h3>Logimise tasemed<\/h3>\n<p>\nKasutajal on n\u00fc\u00fcd v\u00f5imalus kontrollida v\u00e4ljastust, m\u00e4\u00e4rata logimise taset ja t\u00f6\u00f6tada silumisinfo kallal. Lisatud on valikud <code>--log-quiet<\/code>, <code>--log-verbose<\/code>, <code>--log-debug<\/code>.<\/p>\n<p>Vaikimisi sisaldab v\u00e4ljund minimaalset teavet:<\/p>\n<p><img decoding=\"async\" alt=\"Werf 1.1 v\u00e4ljaanne: t\u00e4na parendused ehitajas ja tulevikuplaanid\" src=\"\/wp-content\/uploads\/2020\/04\/58e981b2e0c579ddde817eadc1732874.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetailse v\u00e4ljundi kasutamisel (<code>--log-verbose<\/code>) on v\u00f5imalik j\u00e4lgida, kuidas werf t\u00f6\u00f6tab:<\/p>\n<p><img decoding=\"async\" alt=\"Werf 1.1 v\u00e4ljaanne: t\u00e4na parendused ehitajas ja tulevikuplaanid\" src=\"\/wp-content\/uploads\/2020\/04\/487ed5dfc5df0178f7c09f8da697ceff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetailne v\u00e4ljund (<code>--log-debug<\/code>), lisaks werfi silumise teabele sisaldab ka kasutatavate raamatukogude logisid. N\u00e4iteks saab n\u00e4ha, kuidas toimub suhtlemine Docker Registry'ga, ja fikseerida kohad, kus kulub m\u00e4rkimisv\u00e4\u00e4rselt aega:<\/p>\n<p><img decoding=\"async\" alt=\"Werf 1.1 v\u00e4ljaanne: t\u00e4na parendused ehitajas ja tulevikuplaanid\" src=\"\/wp-content\/uploads\/2020\/04\/99c1f3c2ab3803ff11fae1f2d5c9a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Edasised plaanid<\/h2>\n<p>\n<b>T\u00e4helepanu!<\/b> Allpool kirjeldatud v\u00f5imalused, millel on silt <b>v1.1<\/b> on juba selles versioonis saadaval, paljusid neist saadakse peagi. Uuendused tulevad l\u00e4bi automaatsete uuenduste <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/guides\/installation.html#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-multiwerf\">multiwerf'i kasutamisel<\/a><\/noindex>. Need v\u00f5imalused ei m\u00f5juta v1.1 stabiilse funktsionaalsuse osa, nende tulek ei n\u00f5ua kasutajalt juba olemasolevates konfiguratsioonides k\u00e4sitsi sekkumist.<\/p>\n<h3>T\u00e4ielik toetus erinevatele Docker Registry rakendustele (UUS)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>Ajad: m\u00e4rts<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2199\">Issue<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nEesm\u00e4rk \u2014 kasutaja peaks saama kasutada suvalist rakendust ilma piiranguteta werfi kasutamisel. <\/p>\n<p>Praegu oleme m\u00e4\u00e4ratlenud j\u00e4rgmise lahenduste komplekti, mille osas kavatseme tagada t\u00e4ieliku toe:<\/p>\n<ul>\n<li> Default (library\/registry)*,<\/li>\n<li> AWS ECR,<\/li>\n<li> Azure*,<\/li>\n<li> Docker Hub,<\/li>\n<li> GCR*,<\/li>\n<li> GitHub Packages,<\/li>\n<li> GitLab Registry*,<\/li>\n<li> Harbor*,<\/li>\n<li> Quay.<\/li>\n<\/ul>\n<p>\nT\u00e4rniga m\u00e4rgitud lahendused on praeguseks t\u00e4ielikult toetatud werf'i poolt. Teiste jaoks on toetus olemas, kuid piirangutega.<\/p>\n<p>Saab v\u00e4lja tuua kaks peamist probleemi:<\/p>\n<ul>\n<li> M\u00f5ned lahendused ei toeta siltide kustutamist Docker Registry API kaudu, mis ei v\u00f5imalda kasutajatel kasutada werf'is rakendatud automaatset puhastamist. See kehtib AWS ECR, Docker Hub'i ja GitHub Packages'i puhul.<\/li>\n<li> M\u00f5ned lahendused ei toeta nn sisemisi repository'sid (Docker Hub, GitHub Packages ja Quay) v\u00f5i toetavad, kuid kasutaja peab need k\u00e4sitsi looma, kasutades UI-d v\u00f5i API-t (AWS ECR).<\/li>\n<\/ul>\n<p>\nNende ja teiste probleemide lahendamiseks kavatseme kasutada lahenduste natiivseid API-sid. Selle \u00fclesande alla kuulub ka werf'i t\u00e4isk\u00e4igu testide katmine iga\u00fche jaoks.<\/p>\n<h3>Jaotatud piltide koostamine (\u2191)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.2 v1.1 (selle v\u00f5imaluse elluviimise prioriteet on suurenenud)<\/i><\/li>\n<li> <i>Ajaraam: m\u00e4rts-aprill m\u00e4rts<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1614\">Issue<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nPraegu saab werf v1.0 ja v1.1 kasutada ainult \u00fchel eraldatud hostil kogumise ja piltide avaldamise operatsioonide ning rakenduse juurutamise jaoks Kuberneteses.<\/p>\n<p>Werf'i mitme t\u00f6\u00f6 v\u00f5imaluste avamiseks, kui rakenduste koostamine ja juurutamine Kuberneteses k\u00e4ivitatakse mitmel suvalisel hostil, mille olekut ei salvestata koostamiste vahel (ajutised runner'id), on vajalik, et werf toetaks Docker Registry kasutamist etappide hoidmiseks.<\/p>\n<p>Varem, kui werf'i projekt kandis veel nime dapp, oli see v\u00f5imalus olemas. Kuid seisis silmitsi mitmete probleemidega, mida tuleb arvesse v\u00f5tta selle funktsiooni teostamisel werf'is.<\/p>\n<p><b>M\u00e4rkus<\/b>. \u0414\u0430\u043d\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 pod&#8217;\u043e\u0432 Kubernetes, \u0442.\u043a. \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e Docker-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0432 pod&#8217;\u0435 Kubernetes \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 Docker-\u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Docker-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043f\u043e \u0441\u0435\u0442\u0438 werf \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c). \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Kubernetes \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>Ametlik tugi GitHub Actions (UUENDUS)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>Ajad: m\u00e4rts<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2210\">Issue<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nH\u00f5lmab werf'i dokumentatsiooni (osad <i>viidatud<\/i> ja <i>juhend<\/i>), samuti ametlikku GitHub Action'it werf'iga t\u00f6\u00f6tamiseks.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c werf \u043d\u0430 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 runner&#8217;\u0430\u0445.<\/p>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 CI-\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 label&#8217;\u043e\u0432 \u043d\u0430 pull-request&#8217;\u044b \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e \u0441\u0431\u043e\u0440\u043a\u0435\/\u0432\u044b\u043a\u0430\u0442\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h3>Rakenduste kohalik arendamine ja juurutamine werf'iga (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>Aeg: jaanuar-veebruar aprill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1940\">Issue<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nPeamine eesm\u00e4rk on saavutada \u00fchtne ja \u00fchtlustatud konfigureerimine rakenduste juurutamiseks nii kohalikus keskkonnas kui ka tootmises, ilma keeruliste tegevusteta, 'karbist v\u00e4lja'.<\/p>\n<p>Werfilt oodatakse ka sellist t\u00f6\u00f6re\u017eiimi, kus rakenduskoodi on mugav redigeerida ja kohe tagasisidet saada t\u00f6\u00f6tava rakenduse kohta veaotsinguks.<\/p>\n<h3>Uus puhastusalgoritm (UUED)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>Aeg: aprill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2212\">Issue<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nPraeguses versioonis werf v1.1 menetluses <code>cleanup<\/code> ei ole ette n\u00e4htud pildi puhastamiseks sisu p\u00f5hjalikest m\u00e4rgistamisstrateegiatest (content-based tagging) \u2014 need pildid hakkavad kuhjuma.<\/p>\n<p>Samuti kasutavad praegused wersf versioonid (v1.0 ja v1.1) erinevaid puhastuspolitikaid piltide jaoks, mis on avaldatud m\u00e4rgistamisstrateegiate j\u00e4rgi: Git haru, Git silt v\u00f5i Git commit.<\/p>\n<p>On v\u00e4lja m\u00f5eldud uus \u00fchtne piltide puhastusalgoritm, mis p\u00f5hineb commitide ajaloos Git:<\/p>\n<ul>\n<li> Hoida mitte rohkem kui N1 pilti, mis on seotud N2 viimase commitiga igas git HEAD-is (harudes ja silti).<\/li>\n<li> Hoida mitte rohkem kui N1 faasipilti, mis on seotud N2 viimase commitiga igas git HEAD-is (harudes ja silti).<\/li>\n<li> \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0437\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes (\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 kube-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u044b \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 namespace&#8217;\u044b; \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438).<\/li>\n<li> Hoida k\u00f5ik pildid, mida kasutatakse ressursside konfiguratsiooni manfestides, mis on salvestatud Helm'i v\u00e4ljaannetes.<\/li>\n<li> Pilt v\u00f5ib olla kustutatud, kui see pole seotud \u00fchegi git HEAD-iga (n\u00e4iteks, kuna vastav HEAD on kustutatud) ja seda ei kasutata \u00fcheski manfestis Kubernetes klastris ega Helm'i v\u00e4ljaannetes.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Paralleelne piltide koostamine (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>Ajakava: jaanuar-veebruar aprill*<\/i><\/li>\n<\/ul>\n<p>\nPraegune wersioon werf kogub pilte ja artefakte, mis on kirjeldatud <code>werf.yaml<\/code>, j\u00e4rjekorras. On vajalik iseseisvate etappide piltide ja artefaktide koostamisprotsessi paralleelne \u00fclesehitamine ning mugava ja informatiivse v\u00e4ljundi tagamine.<\/p>\n<p><i>* M\u00e4rkus: t\u00e4htaeg on edasi l\u00fckatud, et suurendada prioriteeti ja rakendada jaotatud koost\u00f6\u00f6d, mis lisab rohkem horisontaalse skaaleerimise v\u00f5imalusi ning v\u00f5imaldab kasutada werfi koos GitHub Actions'iga. Paralleelne koostamine on j\u00e4rgmine optimeerimise samm, mis pakub vertikaalset skaaleeritavust \u00fche projekti koostamisel.<\/i><\/p>\n<h3>\u00dcleminek Helm 3-le (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.2<\/i><\/li>\n<li> <i>Ajaraamid: veebruar-m\u00e4rts mai*<\/i><\/li>\n<\/ul>\n<p>\nSisaldab \u00fcleminekut uuele koodibaasile <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/475722\/\">Helm 3<\/a><\/noindex> ja katsetatud, mugav viis olemasolevate paigaldiste migreerimiseks.<\/p>\n<p><i>* M\u00e4rkus: \u00fcleminek Helm 3-le ei too werfisse olulisi uusi v\u00f5imalusi, kuna k\u00f5ik Helm 3 peamised funktsioonid (3-way-merge ja tilleri puudumine) on juba werfis rakendatud. Veelgi enam, werfil on <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/deploy_process\/differences_with_helm.html\">t\u00e4iendavad v\u00f5imalused<\/a><\/noindex> lisaks nendele, mida on loetletud. Siiski j\u00e4\u00e4b see \u00fcleminek meie plaanidesse ja rakendatakse.<\/i><\/p>\n<h3>Jsonnet Kubernetes'i konfiguratsiooni kirjeldamiseks (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.2<\/i><\/li>\n<li> <i>Ajaraamid: jaanuar-veebruar aprill-mai<\/i><\/li>\n<\/ul>\n<p>\nWerf toetab Kubernetes'i konfiguratsiooni kirjeldamist Jsonnet formaadis. Samal ajal j\u00e4\u00e4b werf Helmiga \u00fchilduvaks ning on v\u00f5imalik valida kirjeldusformaati.<\/p>\n<p>P\u00f5hjus on see, et Go keele mallidel on paljude arvates suur sisenemisbarj\u00e4\u00e4r ning nende mallide kood on ka raskesti m\u00f5istetav.<\/p>\n<p>Samuti kaalutakse teiste Kubernetes'i konfigureerimiss\u00fcsteemide, n\u00e4iteks Kustomize'i, rakendamise v\u00f5imalust.<\/p>\n<h3>T\u00f6\u00f6 Kubernetes'is (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.2<\/i><\/li>\n<li> <i>Ajad: aprill-mai mai-juuni<\/i><\/li>\n<\/ul>\n<p>\nEesm\u00e4rk: tagada piltide koostamine ja rakenduse tarnimine runner'ite kasutamisega Kubernetes'is. See t\u00e4hendab, et uusi pilte saab koostada, avaldada, puhastada ja juurutada otse Kubernetes'i pod'idest.<\/p>\n<p>Selle v\u00f5imaluse rakendamiseks on k\u00f5igepealt vajalik jaotatud piltide koostamise v\u00f5imalus <i>(vt eelmist punkti)<\/i>.<\/p>\n<p>Samuti on vajalik toetada koostamisseisundi t\u00f6\u00f6d ilma Docker'i serverita (st Kaniko-sarnane koostamine v\u00f5i koostamine kasutajaruumi).<\/p>\n<p>Werf toetab koostamist Kubernetes'is mitte ainult Dockerfile'i kaudu, vaid ka oma koostaja Stapeli kaudu, mis v\u00f5imaldab inkrementaalseid uuesti koostamisi ja Ansible'i kasutamist.<\/p>\n<h2>Samm avatud arenduse suunas<\/h2>\n<p>\nMe armastame oma kogukonda (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">GitHub<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/werf_ru\">Telegram<\/a><\/noindex>) ja soovime, et \u00fcha rohkem inimesi aitaks werfi paremaks muuta, m\u00f5istaks, kuhu suunas me liigume, ja osaleks arenduses.<\/p>\n<p>Hiljuti otsustati \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/help.github.com\/en\/github\/managing-your-work-on-github\/about-project-boards\">GitHub'i projekti tahvlid<\/a><\/noindex> et avada meie tiimi t\u00f6\u00f6protsesse. Hetkel on saadaval \u00fclevaade l\u00e4hituleviku plaanidest ning hetkeolukorrast j\u00e4rgmistes valdkondades:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/9\">Dokumentatsioon ja sait<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/7\">Testimine<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/6\">Vead ja halb kasutajakogemus<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/5\">1.1<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nOn tehtud suur t\u00f6\u00f6 issues'idega:<\/p>\n<ul>\n<li> Ebaolulised on eemaldatud.<\/li>\n<li> Olemasolevad on viidud \u00fchtsesse formaati, piisavalt detailide ja \u00fcksikasjade hulgaga.<\/li>\n<li> Sisse on viidud uusi issues'id ideedega ja ettepanekutega.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kuidas aktiveerida versioon v1.1<\/h2>\n<p>\nVersioon on praegu saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">1.1 ea kanalil.<\/a><\/noindex> (kanalites <i>stabiilseks<\/i> ja <i>rock-solid<\/i> v\u00e4ljalasked ilmuvad stabiilsuse saavutamisega, kuid <i>ees<\/i> see on juba iseenesest piisavalt stabiilne kasutamiseks, kuna see on l\u00e4binud kanalid <i>alpha<\/i> ja <i>beta<\/i>). Aktiveeritakse <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/guides\/installation.html#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-multiwerf\">multiwerf'i kaudu<\/a><\/noindex> j\u00e4rgmist viisi:<\/p>\n<pre><code class=\"bash\">source $(multiwerf use 1.1 ea)\nwerf COMMAND ...<\/code><\/pre>\n<p><\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nUus etappide salvestamise arhitektuur ja kogumise optimeerimine Stapel ja Dockerfile kogujate jaoks avavad v\u00f5imalused jaotatud ja paralleelsete kogumiste rakendamiseks werf'is. Need v\u00f5imalused ilmuvad varsti samas versioonis v1.1 ning on automaatselt saadaval automaatse uuendamise mehhanismi kaudu (kasutajatele <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/guides\/installation.html#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D0%B9-multiwerf\">multiwerf<\/a><\/noindex>). <\/p>\n<p>Selles v\u00e4ljalaskes on lisatud piltide sisu p\u00f5hine m\u00e4rgistamisstrateegia \u2014 <i>sisu p\u00f5hine m\u00e4rgistamine<\/i>, \u2014 mis on vaikimisi strateegia. Samuti on \u00fcle t\u00f6\u00f6tatud p\u00f5hikomandide loogika: <code>werf build<\/code>, <code>werf publish<\/code>, <code>werf deploy<\/code>, <code>werf dismiss<\/code>, <code>werf cleanup<\/code>.<\/p>\n<p>J\u00e4rgmine oluline samm on hajusate ehituste lisamine. Hajusad ehitused on alates v1.0 saanud k\u00f5rgema prioriteedi kui paralleelsed ehitused, kuna need pakuvad werfile suuremat v\u00e4\u00e4rtust: vertikaalne koormuse skaleerimine ehitajates ja ajutiste ehitajate tugi erinevates CI\/CD s\u00fcsteemides, samuti v\u00f5imalus ametlikuks toeks GitHub Actions'ile. Seet\u00f5ttu on paralleelsete ehituste rakendamise t\u00e4htaeg edasi l\u00fckatud. T\u00f6\u00f6tame aga selle nimel, et m\u00f5lemad v\u00f5imalused v\u00f5imalikult kiiresti ellu viia.<\/p>\n<p>J\u00e4lgige uut! Ja \u00e4rge unustage meid k\u00fclastada <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">GitHub<\/a><\/noindex>, et luua issue, leida juba olemasolev ja h\u00e4\u00e4letada, luua PR v\u00f5i lihtsalt j\u00e4lgida projekti arengut.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">Esitleme werf 1.0 stable: mis on GitOps'i, staatuse ja plaanide seos<\/a><\/noindex>\u00bb<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 meie CI\/CD t\u00f6\u00f6riist Kubernetesis (\u00fclevaade ja videoettekanne)<\/a><\/noindex>\u00bb;<\/li>\n<li> Werfi uuenduste ring:\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/476646\/\">3-way merge werf'is: Kubernetes'i deploy Helmiga \"steroidide peal\"<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468049\/\">Werfi kasutamine keerukate Helm-chart'ide v\u00e4lja toomiseks<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465131\/\">Monorepo ja multirepo tugi werf'is ja kuidas siia sobib Docker Registry<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/463613\/\">Docker-iltide kogumist werfis saab n\u00fc\u00fcd teha ka tavalise Dockerfile'i abil<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/493170\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>werf \u2014 \u043d\u0430\u0448\u0430 GitOps CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b\u0438, \u0432\u044b\u0445\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438 v1.0 \u0437\u043d\u0430\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 werf \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043b\u0438\u0437 v1.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0437\u0430\u0434\u0435\u043b\u043e\u043c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 werf. \u0412\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":76765,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-76764","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=\"werf \u2014 \u043d\u0430\u0448\u0430 GitOps CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b\u0438, \u0432\u044b\u0445\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438 v1.0 \u0437\u043d\u0430\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 werf \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043b\u0438\u0437 v1.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0437\u0430\u0434\u0435\u043b\u043e\u043c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 werf. \u0412\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442\" \/>\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\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee\" \/>\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\u0420\u0435\u043b\u0438\u0437 werf 1.1: \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u043f\u043b\u0430\u043d\u044b \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"werf \u2014 \u043d\u0430\u0448\u0430 GitOps CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b\u0438, \u0432\u044b\u0445\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438 v1.0 \u0437\u043d\u0430\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 werf \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043b\u0438\u0437 v1.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0437\u0430\u0434\u0435\u043b\u043e\u043c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 werf. \u0412\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee\" \/>\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-04-04T11:42:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-04T11:42:24+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\udd47werf 1.1 v\u00e4ljalase: t\u00e4na toimetaja t\u00e4iustused ja tulevikuplaanid | ProHoster","description":"werf \u2014 meie avatud l\u00e4htekoodiga GitOps CLI-t\u00f6\u00f6riist, mis on m\u00f5eldud rakenduste koostamiseks ja kohaletoimetamiseks Kuberneteses. Nagu lubatud, t\u00e4histas v1.0 versiooni v\u00e4ljalase uute v\u00f5imaluste lisamise ja tuttavate l\u00e4henemisviiside l\u00e4bivaatamise algust. T\u00e4na oleme r\u00f5\u00f5msad, et saame tutvustada versiooni v1.1, mis on suur samm edasi ja alus tuleviku werf koostajale. Versioon on praegu saadaval.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","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\u0420\u0435\u043b\u0438\u0437 werf 1.1: \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u043f\u043b\u0430\u043d\u044b \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 | ProHoster","og:description":"werf \u2014 \u043d\u0430\u0448\u0430 GitOps CLI-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes. \u041a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b\u0438, \u0432\u044b\u0445\u043e\u0434 \u0432\u0435\u0440\u0441\u0438\u0438 v1.0 \u0437\u043d\u0430\u043c\u0435\u043d\u043e\u0432\u0430\u043b \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 werf \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043b\u0438\u0437 v1.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0437\u0430\u0434\u0435\u043b\u043e\u043c \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 werf. \u0412\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","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-04-04T11:42:24+00:00","article:modified_time":"2020-04-04T11:42:24+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"76764","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 17:30:23","updated":"2022-09-28 14:39:02"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/76764","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=76764"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/76764\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/76765"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=76764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=76764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=76764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}