{"id":37667,"date":"2019-10-31T22:18:58","date_gmt":"2019-10-31T19:18:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry\/"},"modified":"2019-10-31T22:18:58","modified_gmt":"2019-10-31T19:18:58","slug":"podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","title":{"rendered":"Toetamine monorepo ja multirepo werf-is ning kuidas see on seotud Docker Registryga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Toetamine monorepo ja multirepo werf-is ning kuidas see on seotud Docker Registryga\" src=\"\/wp-content\/uploads\/2019\/09\/7bd2036d8e53b04965212698a209d4c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMonorepo teema on juba korduvalt arutatud ja tavaliselt tekitab see \u00fcsna aktiivset diskussiooni. Luues <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex> avatud l\u00e4htekoodiga t\u00f6\u00f6riista, mille eesm\u00e4rk on parandada rakenduste koodi koostamise protsessi Gitist Docker piltide (ja nende edasise tarnimise Kubernetesesse), m\u00f5tleme me v\u00e4he, milline valik on parem. Meie jaoks on esmat\u00e4htis tagada k\u00f5ik vajalik erinevate arvamuste toetajatele (kui see ei l\u00e4he vastuollu terve m\u00f5istusega, muidugi).<\/p>\n<p>Hiljuti ilmunud tugi mono-repole werf'is on hea n\u00e4ide sellest. Kuid esiteks uurime, kuidas see tugi \u00fcldse on seotud werf'i kasutamisega ja mis on seos Docker Registryga ...<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Problemaatika<\/h2>\n<p>\nKujutage ette olukorda. Ettev\u00f5ttes on mitmeid arendustiime, kes tegelevad iseseisvate projektidega. Enamik rakendusi t\u00f6\u00f6tab Kuberneteses ja seega \u2013 on konteineritud. Konteinerite ja piltide salvestamiseks on vajalik register. Sellise registrina kasutab ettev\u00f5te Docker Hub'i \u00fche abonendiga <code>ETTEV\u00d5TE<\/code>. Sarnaselt enamikule l\u00e4htekoodi salvestamise s\u00fcsteemidele, <b>Docker Hub ei luba luua hierarhilisi registrite struktuure<\/b>, nagu n\u00e4iteks <code>ETTEV\u00d5TE\/PROJEKT\/IMAGE<\/code>. Sellisel juhul ... kuidas salvestada registris mitte-monoliitseid rakendusi, luues iga projekti jaoks eraldi konto? <\/p>\n<p><img decoding=\"async\" alt=\"Toetamine monorepo ja multirepo werf-is ning kuidas see on seotud Docker Registryga\" src=\"\/wp-content\/uploads\/2019\/09\/b7905fab48723a123bee536e1fe56c5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00f5imalik, et kirjeldatud olukord on kellegi jaoks tuttav, kuid vaatame k\u00fcsimust rakenduste salvestamise korralduse \u00fcle \u00fcldiselt, st ilma seoseta eespool kirjeldatud n\u00e4ite ja Docker Hub'iga.<\/p>\n<h3>Lahenduste teed<\/h3>\n<p>\nKui rakendus <b>on monoliitne<\/b>, siis probleeme ei teki ja me lihtsalt salvestame pildid projekti konteinerite registrisse.<\/p>\n<p>Kui rakendus on esitatud mitme komponendina, <b>Mikroteenused<\/b>, siis tuleb valida kindel l\u00e4henemine. N\u00e4iteks t\u00fc\u00fcpilise veebirakenduse puhul, mis koosneb kahest pildist: <code>frontend<\/code> ja <code>backend<\/code> \u2014 v\u00f5imalused on j\u00e4rgmised:<\/p>\n<ol>\n<li> Salvestada pildid eraldi sissep\u00e4\u00e4sudega registrites:\n<p><img decoding=\"async\" alt=\"Toetamine monorepo ja multirepo werf-is ning kuidas see on seotud Docker Registryga\" src=\"\/wp-content\/uploads\/2019\/09\/a05bfdaec10ea7b4542200c6a2bb4939.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li> Salvestada k\u00f5ik \u00fchte registrisse ja arvestada pildi nimega m\u00e4rgises, n\u00e4iteks j\u00e4rgmiselt:\n<p><img decoding=\"async\" alt=\"Toetamine monorepo ja multirepo werf-is ning kuidas see on seotud Docker Registryga\" src=\"\/wp-content\/uploads\/2019\/09\/83498b5bcdf7a57dfe933295e78fc785.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\n<i><b>NB<\/b>: Tegelikult on veel variant pidada erinevates registrites, <code>PROJEKT-frontend<\/code> ja <code>PROJEKT-backend<\/code>, kuid seda me ei k\u00e4sitle keerukuse t\u00f5ttu toetamisel, korraldamisel ja \u00f5iguste jagamisel kasutajate vahel.<\/i><\/p>\n<h2>Tugi werf'is<\/h2>\n<p>\nEsialgu piirdus werf siserepositooriumidega \u2014 \u00f5nneks toetab enamik registreid seda v\u00f5imalust. Alates versioonist <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/releases\/tag\/v1.0.4-alpha.3\">v1.0.4-alpha.3<\/a><\/noindex>, on lisatud tugi registritele, kus <b>sisemine tugi ei ole saadaval<\/b>, sealhulgas Docker Hub. Sellest hetkest alates on kasutajal v\u00f5imalus valida, kuidas rakenduste pilte salvestada.<\/p>\n<p>Rakendamine on saadaval valiku kaudu <code>--images-repo-mode=multirepo|monorepo<\/code> (vaikimisi <code>multirepo<\/code>, st salvestamine siserepositooriumidesse). See m\u00e4\u00e4rab mallid, mille alusel pilte registris hoitakse. Lihtsalt valige vajalik re\u017eiim peamiste k\u00e4skude kasutamisel, k\u00f5ik muu j\u00e4\u00e4b muutumatuks.<\/p>\n<p>Kuna enamik werfi valikuid saab m\u00e4\u00e4rata <b>keskkonnamuutujate<\/b>, on CI\/CD s\u00fcsteemides salvestusre\u017eiimi tavaliselt lihtne m\u00e4\u00e4rata projekti tasandil. N\u00e4iteks <b>GitLabi puhul<\/b> piisab, kui lisada keskkonnamuutuja projekti seadetes: <i>Settings -&gt; CI \/ CD -&gt; Variables: <code>WERF_IMAGES_REPO_MODE: multirepo|monorepo<\/code><\/i>.<\/p>\n<p>Kui r\u00e4\u00e4kida piltide avaldamisest ja rakenduste juurutamisest (nende protsesside kohta saab p\u00f5hjalikult lugeda vastavates dokumentatsiooni artiklites: <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/publish_process.html\">Avaldamise protsess<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/deploy_process\/deploy_into_kubernetes.html\">Juurutamise protsess<\/a><\/noindex>), siis re\u017eiim m\u00e4\u00e4rab rangelt mustri, mille alusel saab pilte hallata.<\/p>\n<h3>Detailides peitub t\u00f5de<\/h3>\n<p>\nEraldamise ja peamine keerukus uue salvestusviisi lisamisel on registri puhastusprotsess <i>(puhastusv\u00f5imalused, mida werf toetab, vt <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/cleaning_process.html\">Puhastusprotsess<\/a><\/noindex>)<\/i>.<\/p>\n<p>Puhastamisel v\u00f5tab werf arvesse Kuberneteses klastrites kasutatavaid pilte ning ka kasutaja m\u00e4\u00e4ratletud poliitikaid. Poliitikate aluseks on siltide jagamine strateegiate vahel. Praegu toetatakse j\u00e4rgmisi strateegiaid:<\/p>\n<ol>\n<li> 3 strateegiat, mis on seotud Git-i primitiividega, nagu silt, haru ja commit;<\/li>\n<li> 1 strateegia juhuslike kasutaja siltide jaoks.<\/li>\n<\/ol>\n<p>\nTeavet sildi strateegia kohta salvestame pilti avaldades l\u00f5pppildi etikettides. Isegi v\u00e4\u00e4rtus \u2014 nn <b>metasilt<\/b> \u2014 on vajalik poliitika osade rakendamiseks. N\u00e4iteks, kui eemaldada haru v\u00f5i silt Git-repositooriumist, on loogiline eemaldada ka seotud <i>kasutamata<\/i> pildid registrist, mis katab osa meie poliitikatest.<\/p>\n<p>Kui salvestatakse \u00fchte registrisse (<code>monorepo<\/code>), siis pildi sildil, v\u00e4lja arvatud metasild, v\u00f5ib samuti sisaldada pildi nime: <code>PROJEKT:<b>frontend<\/b>-META-M\u00c4RG<\/code>Meie ei kasutanud mingit spetsiifilist eraldajat, vaid lisasime lihtsalt vajaliku v\u00e4\u00e4rtuse l\u00f5pp-pildi etiketisse publikatsiooni ajal.<\/p>\n<p><i><b>NB<\/b>: Kui soovite n\u00e4ha kogu seda, mis on werfi l\u00e4htekoodis, siis v\u00f5ib alguspunktiks olla <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/pull\/1684\/files\">PR 1684<\/a><\/noindex>.<\/i><\/p>\n<p>Selles artiklis ei p\u00fchenda me enam t\u00e4helepanu probleemidele ja meie l\u00e4henemise p\u00f5hjendustele: strateegiate etikettimine, andmete salvestamine etiketites ja v\u00e4ljaandmisprotsess \u00fcldiselt \u2014 k\u00f5ik see on \u00fcksikasjalikult kajastatud Dmitri Stolyarovi hiljutises ettekandes: \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 meie CI\/CD t\u00f6\u00f6riist Kuberneteses<\/a><\/noindex>\u00bb.<\/p>\n<h2>Kokkuv\u00f5tteks<\/h2>\n<p>\nKonteineriregistrite toetuse puudumine ilma sisemisteta ei olnud meie v\u00f5i tundma\u00f5pitavate werf kasutajate jaoks takistuseks \u2014 alati on v\u00f5imalik \u00fcles seadistada eraldi konteineriregister (v\u00f5i liikuda Googles Cloudis tingimuslikule Container Registry'le)\u2026 Siiski n\u00e4gi sellise piirangu kaotamine loogilisena, et t\u00f6\u00f6riist oleks mugavam laiemale DevOpsi kogukonnale. Selle rakendamisel kokku puutudes seisisime silmitsi peamise keerukusega konteineriregistri puhastusmehhanismi \u00fcmberkujundamisel. N\u00fc\u00fcd, kui k\u00f5ik on valmis, on meeldiv teadvustada, et kellelegi on see lihtsamaks muutunud, ja meil (kui projekti peaarendajatel) ei prognoosi edaspidi selle funktsiooni toetamisel t\u00f5siseid raskusi.<\/p>\n<p>P\u00fcsi meiega ja varsti r\u00e4\u00e4gime teistest uuendustest <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex>!<\/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\/463613\/\">Saate n\u00fc\u00fcd Docker-pilte werf-is ehitada ka tavalise Dockerfile'i abil<\/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<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465131\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0430\u0441\u044c \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 \u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0440\u044b. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u044f werf \u043a\u0430\u043a Open Source-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 Git \u0432 Docker-\u043e\u0431\u0440\u0430\u0437\u044b (\u0438 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 Kubernetes), \u043c\u044b \u043c\u0430\u043b\u043e \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u0435\u043c \u043d\u0430 \u0442\u0435\u043c\u0443 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043b\u0443\u0447\u0448\u0435. \u0414\u043b\u044f \u043d\u0430\u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a\u043e\u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043d\u0435\u043d\u0438\u0439 (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28270,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37667","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=\"description\" content=\"\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.\" \/>\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\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry\" \/>\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\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 monorepo \u0438 multirepo \u0432 werf \u0438 \u043f\u0440\u0438 \u0447\u0451\u043c \u0437\u0434\u0435\u0441\u044c Docker Registry | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:58+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\udd47Monorepo ja multirepo toetamine werfis ja kuidas see seondub Docker Registry'ga | ProHoster","description":"Monoreposti teema.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","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\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 monorepo \u0438 multirepo \u0432 werf \u0438 \u043f\u0440\u0438 \u0447\u0451\u043c \u0437\u0434\u0435\u0441\u044c Docker Registry | ProHoster","og:description":"\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:58+00:00","article:modified_time":"2019-10-31T19:18:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37667","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:22:29","updated":"2026-01-23 18:48:19","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\/37667","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=37667"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37667\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/28270"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=37667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=37667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=37667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}