{"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 t\u00e4iustused ehitajale ja tulevikuplaanid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"werf 1.1 v\u00e4ljaanne: t\u00e4na t\u00e4iustused ehitajale 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 koostamiseks ja tarnimiseks Kubernetesesse. Nagu lubatud, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">v\u00e4ljaanne versioon v1.0<\/a><\/noindex> t\u00e4histas uute v\u00f5imaluste lisamise ja harjumusp\u00e4raste l\u00e4henemiste \u00fclevaatamise algust werfis. N\u00fc\u00fcd oleme r\u00f5\u00f5msad esitleda v\u00e4ljaannet v1.1, mis on suur samm edasi ja alus tulevikuks <i>koostaja<\/i> werf. Versioon on praegu saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">kanalis 1.1 ea<\/a><\/noindex>.<\/p>\n<p>V\u00e4ljaande alus on uus etappide salvestuse arhitektuur ja kahe koostaja (Stapel ja Dockerfile) t\u00f6\u00f6 optimeerimine. Uus salvestuse arhitektuur avab v\u00f5imalused hajutatud koostamiseks mitmelt hostilt ja paralleelseks koostamiseks \u00fchel hostil.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>T\u00f6\u00f6 optimeerimine h\u00f5lmab liialdavate arvutuste k\u00f5rvaldamist etappide allkirjade arvutamise etapis ja failide kontrollsummade arvutamismehhanismide muutmist efektiivsemateks. See optimeerimine v\u00e4hendab keskmist projekti koostamise aega werfiga. Ja t\u00fchjad koostamised, kui k\u00f5ik etapid eksisteerivad vahem\u00e4lus <i>stages-storage<\/i>, on n\u00fc\u00fcd t\u00f5eliselt kiired. Enamikel juhtudel toimub koostamise uuesti k\u00e4ivitamine kiiremini kui 1 sekund! See kehtib ka etappide kinnitamisprotseduuride kohta meeskondade t\u00f6\u00f6tamise k\u00e4igus <code>werf deploy<\/code> ja <code>werf run<\/code>.<\/p>\n<p>Lisaks on selles v\u00e4ljaandes ilmunud kujundusstrateegia piltide m\u00e4rgistamiseks sisu p\u00f5hjal \u2014 <i>sisu p\u00f5hine m\u00e4rgistamine<\/i>, mis on n\u00fc\u00fcd vaikimisi lubatud ja ainus soovitatav.<\/p>\n<p>Vaatame l\u00e4hemalt werfi v1.1 p\u00f5himuudatusi ja r\u00e4\u00e4gime ka tulevikuplaanidest.<\/p>\n<h2>Mis on werf v1.1-s muutunud?<\/h2>\n<p><\/p>\n<h3>Uus etappide nimede formaat ja etappide valimise algoritm vahem\u00e4lust<\/h3>\n<p>\nUus etappide nime genereerimise reegel. N\u00fc\u00fcdsest genereerib iga etapi koostamine unikaalse etapi nime, mis koosneb kahest osast: allkiri (nagu v1.0-s) pluss unikaalne ajasild.<\/p>\n<p>N\u00e4iteks, t\u00e4ielik etapi pildi nimi v\u00f5ib v\u00e4lja n\u00e4ha nii:<\/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 muudatuste ajaloost, mis viis sellise sisuni;<\/li>\n<li> <code>TIMESTAMP_MILLISEC<\/code> \u2014 see on garanteeritult ainulaadne pildi identifikaator, mis genereeritakse uue pildi koostmise hetkel.<\/li>\n<\/ul>\n<p>\nEtappide valimise algoritm vahem\u00e4lust p\u00f5hineb Git-i commitide suguluse kontrollimisel:<\/p>\n<ol>\n<li> Werf arvutab mingi etapi allkirja.<\/li>\n<li> Uues <i>stages-storage<\/i> Sama allkirjaga v\u00f5ib olla mitu etappi. Werf valib k\u00f5ik allkirjale vastavad etapid.<\/li>\n<li> Kui praegune etapp on seotud Gitiga (git-archive, kasutaja etapp Git-patchide jaoks: <code>install<\/code>, <code>beforeSetup<\/code>, <code>setup<\/code>; v\u00f5i git-latest-patch), valib werf ainult need etapid, mis on seotud commit'iga, mis on praeguse commit'i eelk\u00e4ija (mille jaoks kutsuti esile koostamine).<\/li>\n<li> J\u00e4relej\u00e4\u00e4nud sobivate etappide hulgast valitakse \u00fcks \u2013 k\u00f5ige vanem loomise kuup\u00e4eva j\u00e4rgi.<\/li>\n<\/ol>\n<p>\nErinevates Git-oksades v\u00f5ib samal etapp olla sama allkirjaga. Kuid werf takistab erinevate okste vahel koodi vahetamist, 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 salves<\/h3>\n<p>\nKui werf ei leia vahem\u00e4lust sobivat etappi, algatatakse uue etapi koostamisprotsess.<\/p>\n<p>M\u00e4rkusena, et mitu protsessi (\u00fchel v\u00f5i mitmel serveril) v\u00f5ivad alustada sama etapi koostamist umbes samal ajal. Werf kasutab optimistliku lukustamise algoritmi <i>stages-storage<\/i> v\u00e4rskelt loodud pildi salvestamise hetkel <i>stages-storage<\/i>. Seega, kui uue etapi koostamine on valmis, lukustab werf <i>stages-storage<\/i> ja salvestab sinna v\u00e4rskelt loodud pildi ainult juhul, kui seal ei eksisteeri juba sobivat pilti <i>(allkirja ja muude parameetrite kohaselt \u2013 vt uut algoritmi etappide valimiseks vahem\u00e4lust)<\/i>.<\/p>\n<p>V\u00e4rskelt loodud pildil on garanteeritud ainulaadne ID <code>TIMESTAMP_MILLISEC<\/code> <i>(vt uut etappide nimede formaat)<\/i>. Kui <i>stages-storage<\/i> leidub sobiv pilt, loob werf v\u00e4rskelt loodud pildi k\u00f5rvale ja kasutab vahem\u00e4lus olevat pilti.<\/p>\n<p>Teisis\u00f5nu: esimene protsess, mis l\u00f5petab pildi koostamise (k\u00f5ige kiirem), saab \u00f5iguse salvestada selle stages-storage'isse (ja just seda ainukest pilti kasutatakse k\u00f5igi koostamiste jaoks). Aeglane koostamisprotsess ei takista kunagi kiiremat protsessi praeguse etapi koostamise tulemuste salvestamisel ja j\u00e4rgmise etapi koostamisele \u00fcleminekul.<\/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 koosturi j\u00f5udlust on parandatud<\/h3>\n<p>\nPraegu koosneb Dockerfile'ist genereeritava pildi etapi rida \u00fchest etapist \u2013 <code>dockerfile<\/code>. Allkirja arvutamisel arvestatakse failide hajutuse summat. <code>context<\/code>, mis kasutatakse kogumisel. Selle t\u00e4iustamise eel saavutab werf rekurssiivselt k\u00f5ikidel failidel kontrollsummad, v\u00f5ttes arvesse konteksti ja iga faili moodulit. Alates versioonist v1.1 saab werf kasutada arvutatud kontrollsummasid, mis on talletatud Git-repositooriumis.<\/p>\n<p>Algoritmi aluseks on <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/docs\/git-ls-tree\">git ls-tree<\/a><\/noindex>. Algoritm arvestab kirjeid <code>.dockerignore<\/code> ja l\u00e4bib rekurssiivselt failipuid ainult vajadusel. Nii oleme vabastanud end failis\u00fcsteemi lugemise s\u00f5ltuvusest ja algoritmi s\u00f5ltuvus <code>context<\/code> ei ole oluline.<\/p>\n<p>Samuti kontrollib algoritm j\u00e4lgimata faile ja arvestab neid vajadusel kontrollsummas.<\/p>\n<h3>Parandatud on j\u00f5udlust, kui faile importitakse<\/h3>\n<p>\nWerf v1.1 versioonides kasutatakse rsync-serverit <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/configuration\/stapel_image\/import_directive.html\">failide importimisel artefaktidest ja piltidest<\/a><\/noindex>. Varem viidi import l\u00e4bi kahes etapis, kasutades host-s\u00fcsteemi kausta montaa\u017ei.<\/p>\n<p>Importsed j\u00f5udlust macOS-is ei piira enam Docker volumes, import toimub sama ajaga nagu Linuxis ja Windowsis.<\/p>\n<h3>Sisu p\u00f5hine m\u00e4rgistamine<\/h3>\n<p>\nWerf v1.1 toetab nn pildisisese sisu m\u00e4rgistamist \u2014 <i>sisu p\u00f5hine m\u00e4rgistamine<\/i>. Tulemuseks oleva Docker-pildi m\u00e4rgid s\u00f5ltuvad nende piltide sisust.<\/p>\n<p>K\u00e4ivitades k\u00e4su <code>werf publish --tags-by-stages-signature<\/code> v\u00f5i <code>werf ci-env --tagging-strategy=stages-signature<\/code> m\u00e4rgistatakse avaldatud pildid nii nimetatud <b>staadiumi allkirjaga<\/b> pildi jaoks. Iga pilt saab omaenda selle pildi staadiumi allkirja, mis arvutatakse samade reeglite j\u00e4rgi kui iga eraldi staadiumi regulaarne allkiri, kuid on pildi \u00fcldine identifikaator.<\/p>\n<p>Pildi staadiumi allkiri s\u00f5ltub:<\/p>\n<ol>\n<li> selle pildi sisust;<\/li>\n<li> Git\u2019is toimunud muudatuste ajaloost, mis viis sellise sisuni.<\/li>\n<\/ol>\n<p>\nGit-repositooriumis on alati t\u00fchjad kommitsioonid, mis ei muuda pildi failide sisu. N\u00e4iteks ainult kommentaaridega kommitsioonid v\u00f5i sulandumise kommitsioonid, v\u00f5i kommitsioonid, mis muudavad Git\u2019is faile, mis ei impordita pildisse.<\/p>\n<p>Kasutades sisup\u00f5hist sildistamist, lahendatakse Kuberneteses rakenduspod'ide liigsete taask\u00e4ivituste probleemid pildinime muutmisest, isegi kui pildi sisu ei ole muutunud. Muide, see on \u00fcks p\u00f5hjusi, mis takistavad mitme mikroteenuse hoidmist \u00fche rakenduse kohta \u00fches Git-reposiitiumis.<\/p>\n<p>Samuti on sisup\u00f5hine sildistamine usaldusv\u00e4\u00e4rsem sildistamismeetod kui Git-haru sildistamine, kuna tulemuseks olevate piltide sisu ei s\u00f5ltu CI-s\u00fcsteemi torujuhtme t\u00e4itmise j\u00e4rjestusest, kui ehitatakse sama haru mitu kinnitust.<\/p>\n<p><b>Oluline<\/b>: alates k\u00e4esolevast hetkest <i>stages-signature<\/i> \u2014 see on <b>ainus soovitatav sildistamisstrateegia<\/b>. See hakkab vaikimisi kasutama meeskonnas <code>werf ci-env<\/code> (kui ei ole selgelt m\u00e4\u00e4ratud teist sildistamisskeemi).<\/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 artikkel. <b>UUENDATUD<\/b> (3. aprill): Artikkel \u00fcksikasjadega <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/495112\/\">avalikustatud<\/a><\/noindex>.<\/p>\n<h3>Logimise tasemed<\/h3>\n<p>\nKasutajal on v\u00f5imalus kontrollida v\u00e4ljundit, m\u00e4\u00e4rata logimise taset ja t\u00f6\u00f6tada silumisinfoga. Lisatud 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 t\u00e4iustused ehitajale ja tulevikuplaanid\" src=\"\/wp-content\/uploads\/2020\/04\/58e981b2e0c579ddde817eadc1732874.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKasutades p\u00f5hjalikku v\u00e4ljundit (<code>--log-verbose<\/code>) saab j\u00e4lgida, kuidas werf t\u00f6\u00f6tab:<\/p>\n<p><img decoding=\"async\" alt=\"werf 1.1 v\u00e4ljaanne: t\u00e4na t\u00e4iustused ehitajale ja tulevikuplaanid\" src=\"\/wp-content\/uploads\/2020\/04\/487ed5dfc5df0178f7c09f8da697ceff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00e4pne v\u00e4ljund (<code>--log-debug<\/code>), lisaks werf'i silumisinfotele, sisaldab ka kasutatavate raamatukogude logisid. N\u00e4iteks saab n\u00e4ha, kuidas toimub suhtlemine Docker Registry'ga, ning fikseerida kohad, kus kulub oluline kogus aega:<\/p>\n<p><img decoding=\"async\" alt=\"werf 1.1 v\u00e4ljaanne: t\u00e4na t\u00e4iustused ehitajale 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 funktsioonid, mis on m\u00e4rgitud <b>v1.1<\/b> on juba selle versiooni jooksul saadaval, paljusid neist - peagi. Uuendused tulevad automaatsete t\u00e4iendustega <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\">kasutades multiwerf<\/a><\/noindex>. Need funktsioonid ei m\u00f5juta v1.1 stabiilsete funktsioonide osa, nende ilmumine ei n\u00f5ua kasutajalt k\u00e4sitsi sekkumist juba olemasolevatesse konfiguratsioonidesse.<\/p>\n<h3>T\u00e4ielik toetus erinevatele Docker Registry rakendustele (UUED)<\/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\">Probleem<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nEesm\u00e4rk - kasutaja peaks saama kasutada suvalist rakendust piiranguteta, kasutades werf'i. <\/p>\n<p>Praegu oleme v\u00e4lja selgitanud j\u00e4rgmise lahenduste komplekti, mille jaoks plaanime t\u00e4ielikku toetust tagada:<\/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, mis on hetkel juba t\u00e4ielikult werf'i poolt toetatud. \u00dclej\u00e4\u00e4nute puhul on toetus olemas, kuid piirangutega.<\/p>\n<p>Saab eristada kahte peamist probleemi:<\/p>\n<ul>\n<li> M\u00f5ned lahendused ei toeta siltide kustutamist Docker Registry API kaudu, mis ei luba kasutajatel kasutada werf'is rakendatud automaatset puhastamist. See kehtib AWS ECR, Docker Hub ja GitHub Packages kohta.<\/li>\n<li> M\u00f5ned lahendused ei toeta nii \u00f6eldud nested repositories (Docker Hub, GitHub Packages ja Quay) v\u00f5i toetavad, kuid kasutaja peab need k\u00e4sitsi looma, kasutades UI-d v\u00f5i API-d (AWS ECR).<\/li>\n<\/ul>\n<p>\nNende ja teiste probleemide lahendamiseks kavatseme kasutada lahenduste natiivseid API-sid. See \u00fclesanne h\u00f5lmab ka testide katvuse loomist werfi kogu t\u00f6\u00f6ts\u00fckli jaoks iga\u00fche jaoks.<\/p>\n<h3>Jaotatud piltide kogu (\u2191)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.2 v1.1 (selle v\u00f5imaluse rakendamise prioriteet on suurenenud)<\/i><\/li>\n<li> <i>Ajavahemikud: m\u00e4rts-aprill m\u00e4rts<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1614\">Probleem<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nHetkel saab werfi v1.0 ja v1.1 kasutada vaid \u00fchel eraldatud serveril, et teostada pilte kogumist ja avaldamist ning rakenduse juurutamist Kubernetesesse.<\/p>\n<p>Et avada werfi jaotatud t\u00f6\u00f6v\u00f5imalused, kui rakenduste kogumine ja juurutamine Kuberneteses algatatakse mitmetel suvalistel serveritel ning need serverid ei hoia oma seisundit kogumiste vahel (ajalised runnerid), on werfilt vajalik rakendada Docker Registry kasutamise v\u00f5imalust etappide salvestamiseks.<\/p>\n<p>Varem, kui projekt werf veel dapp-ina tuntud oli, oli sellel selline v\u00f5imalus. Siiski seisime silmitsi mitmete probleemidega, mida on vaja arvesse v\u00f5tta selle funktsiooni rakendamisel werfis.<\/p>\n<p><b>M\u00e4rkus<\/b>. See funktsioon ei eelda ehitaja t\u00f6\u00f6tamist Kuberneteses pod'ides, kuna selleks on vajalik loobuda kohaliku Docker-serveri s\u00f5ltuvusest (Kuberneteses pod'is ei ole juurdep\u00e4\u00e4su kohalikele Docker-serveritele, kuna protsess ise t\u00f6\u00f6tab konteineris, ja Docker-serveriga v\u00f5rgu kaudu t\u00f6\u00f6tamine werf ei toeta ega toeta tulevikus). Kuberneteses t\u00f6\u00f6tamise toetamine viiakse ellu eraldi.<\/p>\n<h3>Ametlik tugi GitHub Actions (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\/2210\">Probleem<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nSelle hulka kuulub werf dokumentatsioon (peat\u00fckid <i>reference<\/i> ja <i>guide<\/i>), samuti ametlik GitHub Action, et t\u00f6\u00f6tada werfiga.<\/p>\n<p>Lisaks v\u00f5imaldab werfi t\u00f6\u00f6 efemeersetes runner'ites.<\/p>\n<p>Kasutaja koost\u00f6\u00f6 CI-s\u00fcsteemiga p\u00f5hineb siltide seadmisel pull-request'idele, et algatada teatud tegevusi rakenduse kokkupaneku\/v\u00e4ljalaskmise korral.<\/p>\n<h3>Kohalik arendus ja rakenduste juurutamine werfiga (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>Ajavahemikud: jaanuar-veebruar aprill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1940\">Probleem<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nPeamine eesm\u00e4rk on saavutada \u00fchtne \u00fchtne konfigureerimine rakenduste juurutamiseks nii kohalikult kui ka tootmises, ilma keerukate toiminguteta, \u201ekarbist v\u00e4lja\u201c.<\/p>\n<p>werf n\u00f5uab ka t\u00f6\u00f6re\u017eiimi, kus on mugav rakenduse koodi redigeerida ja koheselt saada tagasisidet t\u00f6\u00f6tavast rakendusest veaotsimiseks.<\/p>\n<h3>Uus puhastamise algoritm (UUS)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>T\u00e4htajad: aprill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2212\">Probleem<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nAktuaalses versioonis werf v1.1 on protsessis <code>cleanup<\/code> ei ole ette n\u00e4htud kuvandeid puhastamiseks sisu p\u00f5hjal (content-based tagging) \u2014 need pildid kogunevad.<\/p>\n<p>Samuti kasutatakse aktuaalses versioonis werf (v1.0 ja v1.1) erinevaid puhastusstrateegiaid piltide jaoks, mis on avaldatud t\u00e4histamisstrateegiate alusel: Git-haru, Git-silt v\u00f5i Git-commit.<\/p>\n<p>On v\u00e4lja t\u00f6\u00f6tatud uus \u00fchtne k\u00f5igile t\u00e4histamisstrateegiatele m\u00f5eldud piltide puhastusalgoritm, mis p\u00f5hineb Git'i commitide ajaloos:<\/p>\n<ul>\n<li> Hoida mitte rohkem kui N1 pilti, mis on seotud N2 viimase commitiga iga git HEAD (haru ja sildid) jaoks.<\/li>\n<li> Hoida mitte rohkem kui N1 staatus ettepanekut, mis on seotud N2 viimase commitiga iga git HEAD (haru ja sildid) jaoks.<\/li>\n<li> Hoidke k\u00f5ik pildid, mida kasutatakse Kuberneteses klastrite ressurssides (kogu kube-kontekstid ja nimed skanditakse konfiguratsioonifailist; sellist k\u00e4itumist on v\u00f5imalik piirata spetsiaalsete valikute kaudu).<\/li>\n<li> Hoida k\u00f5ik pildid, mida kasutatakse ressursside konfiguratsioonide manifestides, mis on salvestatud Helm'i v\u00e4ljalaskes.<\/li>\n<li> Pilt v\u00f5ib olla eemaldatud, kui see ei ole seotud \u00fchegi git HEAD'iga (nt kuna vastav HEAD on eemaldatud) ja ei ole kasutusel \u00fcheski manifestis Kubernetes klastris ja Helm'i v\u00e4ljalaskes.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Paralleelne piltide kogumine (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioon: v1.1<\/i><\/li>\n<li> <i>T\u00e4htajad: jaanuar-veebruar aprill*<\/i><\/li>\n<\/ul>\n<p>\nAktuaalne versioon werf kogub pilte ja artefakte, nagu on kirjeldatud <code>werf.yaml<\/code>, j\u00e4rjestikku. On vajalik jagada s\u00f5ltumatute piltide ja artefaktide kogumise protsess ning tagada mugav ja informatiivne v\u00e4ljund.<\/p>\n<p><i>* M\u00e4rkus: t\u00e4htaeg on nihkunud distribuudi kogumise k\u00f5rgema prioriteedi t\u00f5ttu, mis lisab rohkem horisontaalse skaleeritavuse v\u00f5imalusi, samuti kasutades werf'i GitHub Actions'iga. Paralleelne kogumine on j\u00e4rgmine optimeerimise etapp, tasandades vertikaalselt \u00fche projekti kogumist.<\/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>T\u00e4htajad: 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 t\u00f5estatud, mugav migratsiooniviis olemasolevate installatsioonide jaoks.<\/p>\n<p><i>* M\u00e4rkus: \u00fcleminek Helm 3-le ei lisa werf-ile olulisi v\u00f5imalusi, kuna k\u00f5ik Helm 3 p\u00f5hifunktsioonid (3-way-merge ja tilleri puudumine) on juba werf-is rakendatud. Veelgi enam, werf-l on <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/deploy_process\/differences_with_helm.html\">lisafunktsioonid<\/a><\/noindex> lisaks nimetatutele. Siiski j\u00e4\u00e4b see \u00fcleminek meie plaanidesse ja see teostatakse.<\/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>Ajakava: jaanuar-veebruar aprill-mai<\/i><\/li>\n<\/ul>\n<p>\nWerf toetab Kubernetes'i konfiguratsiooni kirjeldamist Jsonnet formaadis. Samuti j\u00e4\u00e4b werf Helmiga \u00fchilduvaks ja on v\u00f5imalus valida kirjeldusformaati.<\/p>\n<p>P\u00f5hjuseks on asjaolu, et Go keele mallid, paljude arvates, on neil k\u00f5rge sisenemisbarj\u00e4\u00e4r ning nende mallide koodi arusaadavus on samuti probleemne.<\/p>\n<p>Samuti kaalutakse v\u00f5imalust v\u00f5tta kasutusele teiseid Kubernetes'i konfiguratsiooni kirjeldamise s\u00fcsteeme (n\u00e4iteks Kustomize).<\/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>Ajakava: aprill-mai mai-juuni<\/i><\/li>\n<\/ul>\n<p>\nEesm\u00e4rk: tagada piltide koostamine ja rakenduse kohaletoimetamine runnerite abil Kubernetes'is. St. uute piltide koostamine, nende avaldamine, puhastamine ja juurutamine v\u00f5ib toimuda otse Kubernetes'i pod'idest.<\/p>\n<p>Selle v\u00f5imaluse teostamiseks on k\u00f5igepealt vajalik jaotatud piltide koostamise v\u00f5imalus <i>(vt eelpool)<\/i>.<\/p>\n<p>Samuti on vajalik toetada koostaja t\u00f6\u00f6re\u017eiimi ilma Docker-serverita (st Kaniko-sarnane koostamine v\u00f5i koostamine userspace'is).<\/p>\n<p>Werf toetab Kubernetes'is piltide koostamist mitte ainult Dockerfile'i kaudu, vaid ka oma koostajaga Stapel, koos inkrementaalsete \u00fcmberkoostamiste ja Ansible'iga.<\/p>\n<h2>Samm avatud arendamise 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 werf'i paremaks teha, m\u00f5istaks, millises suunas me liigume, ning osaleks arenduses.<\/p>\n<p>Hiljuti otsustati minna \u00fcle <noindex><a rel=\"nofollow\" href=\"https:\/\/help.github.com\/en\/github\/managing-your-work-on-github\/about-project-boards\">GitHubi projektide tahvlitele<\/a><\/noindex> et avada meie meeskonna t\u00f6\u00f6protsess. N\u00fc\u00fcd saab vaadata l\u00e4hituleviku plaane, samuti k\u00e4imasolevaid t\u00f6id j\u00e4rgmistes suundades:<\/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 issue'idega:<\/p>\n<ul>\n<li> Ebavajalikud on eemaldatud.<\/li>\n<li> Olemasolevad on viidud \u00fchtsesse vormingusse, piisavas koguses detaile ja p\u00f5hjalikkust.<\/li>\n<li> Uued issues on lisatud ideede ja ettepanekutega.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kuidas lubada versioon v1.1<\/h2>\n<p>\nVersioon on praegu saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">kanalis 1.1 ea<\/a><\/noindex> (kanalites <i>stable<\/i> ja <i>rock-solid<\/i> v\u00e4ljaanded ilmuvad stabiliseerimise k\u00e4igus, kuid <i>ea<\/i> ise on juba 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 kaudu<\/a><\/noindex> j\u00e4rgmistel viisidel:<\/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 ladustamise etappide arhitektuur ja ehituse optimeerimine Stapeli ja Dockerfile ehitajate jaoks avavad v\u00f5imalusi jaotatud ja paralleelsete ehituste teostamiseks werf'is. Need v\u00f5imalused saavad peagi olema kergelt k\u00e4ttesaadavad versioonis v1.1 ja saadaval automaatselt 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 versioonis lisati piltide sisu p\u00f5hine ettepanekute strateegia \u2014 <i>sisu p\u00f5hine m\u00e4rgistamine<\/i>, \u2014 mis on n\u00fc\u00fcd vaikimisi strateegia. Samuti on \u00fcmber kujundatud peamiste k\u00e4skude logi: <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 jaotatud ehituste lisamine. Alates v1.0'st on jaotatud ehitused olnud prioriteediks rohkem kui paralleelsed ehitused, sest need toovad werf'ile rohkem v\u00e4\u00e4rtust: ehitajate vertikaalne skaleerimine ja ajutiste ehitajate toetamine erinevates CI\/CD s\u00fcsteemides, samuti v\u00f5imalus ametlikuks toeks GitHub Actions'ile. Seet\u00f5ttu on paralleelsete ehituste teostamise t\u00e4htaegu edasi l\u00fckatud. T\u00f6\u00f6tame siiski selle nimel, et viia ellu m\u00f5lemad v\u00f5imalused pigem varakult.<\/p>\n<p>J\u00e4lgige uudiseid! Ja \u00e4rge unustage k\u00fclastada meid <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">GitHub<\/a><\/noindex>, et luua issue, leida juba olemasolev ja panna pluss, 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 stabiilset versiooni: mis on GitOps, olek ja plaanid<\/a><\/noindex>\u00bb<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 meie t\u00f6\u00f6riist CI\/CD jaoks Kuberneteses (\u00fclevaade ja video ettekandest)<\/a><\/noindex>\u00bb;<\/li>\n<li> Uuenduste m\u00e4rkmete ts\u00fckkel werf-is:\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/476646\/\">3-way merge werf-is: Kubernetesesse installimine koos Helmiga 'steroidide peal'<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468049\/\">werf-i kasutamine keerukate Helm-chartide jaoks<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465131\/\">Toetamine monorepo ja multirepo werf-is ning kuidas see on seotud Docker Registryga<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/463613\/\">Saate n\u00fc\u00fcd Docker-pilte werf-is ehitada 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 5.0.1.1 - 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\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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: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\u00e4ljaanne: ehitaja t\u00e4iustused t\u00e4na ja tulevikuplaanid | ProHoster","description":"","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: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","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\/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}]}}