{"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\/sq\/blog\/administrirovanie\/reliz-werf-1-1-uluchsheniya-v-sborshhike-segodnya-i-plany-na-budushhee","title":{"rendered":"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb nd\u00ebrtuesin sot dhe planet p\u00ebr t\u00eb ardhmen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb nd\u00ebrtuesin sot dhe planet p\u00ebr t\u00eb ardhmen\" 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 mjeti yn\u00eb CLI GitOps me kod t\u00eb hapur p\u00ebr nd\u00ebrtimin dhe d\u00ebrgimin e aplikacioneve n\u00eb Kubernetes. Ashtu si\u00e7 e premtuam, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">dalja e versionit v1.0<\/a><\/noindex> sh\u00ebnoi fillimin e shtimit t\u00eb mund\u00ebsive t\u00eb reja n\u00eb werf dhe rishikimin e qasjeve t\u00eb zakonshme. Tani jemi t\u00eb g\u00ebzuar t\u00eb paraqesim l\u00ebshimin v1.1, i cili \u00ebsht\u00eb nj\u00eb hap i madh n\u00eb zhvillim dhe nj\u00eb frym\u00ebzim p\u00ebr t\u00eb ardhmen <i>nd\u00ebrtuesit<\/i> werf. Versioni \u00ebsht\u00eb i disponuesh\u00ebm tani n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">kanalin 1.1 ea<\/a><\/noindex>.<\/p>\n<p>Thelbi i l\u00ebshimit \u00ebsht\u00eb arkitektura e re e magazin\u00ebs p\u00ebr fazat dhe optimizimi i funksionimit t\u00eb t\u00eb dy nd\u00ebrtuesve (p\u00ebr Stapel dhe Dockerfile). Arkitektura e re e magazin\u00ebs hap mund\u00ebsi p\u00ebr realizimin e nd\u00ebrtimeve t\u00eb shp\u00ebrndara nga disa host\u00eb dhe nd\u00ebrtimeve paralele n\u00eb nj\u00eb host.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Optimizimi i funksionimit p\u00ebrfshin heqjen e llogaritjeve t\u00eb panevojshme n\u00eb faz\u00ebn e llogaritjes s\u00eb n\u00ebnshkrimeve t\u00eb fazave dhe ndryshimin e mekanizmave t\u00eb llogaritjes s\u00eb kontrollit t\u00eb shumave t\u00eb skedar\u00ebve n\u00eb m\u00eb efikas. Kjo optimizim zvog\u00eblon koh\u00ebn mesatare t\u00eb nd\u00ebrtimeve t\u00eb projektit duke p\u00ebrdorur werf. Edhe nd\u00ebrtimet e zbrazta, kur t\u00eb gjitha fazat ekzistojn\u00eb n\u00eb cache <i>stages-storage<\/i>, tani jan\u00eb v\u00ebrtet t\u00eb shpejta. N\u00eb shumic\u00ebn e rasteve, rinisja e nd\u00ebrtimit do t\u00eb kaloj\u00eb m\u00eb shpejt se 1 sekond\u00eb! Kjo vlen gjithashtu p\u00ebr procedurat e verifikimit t\u00eb fazave gjat\u00eb pun\u00ebs s\u00eb ekipeve <code>werf deploy<\/code> dhe <code>werf run<\/code>.<\/p>\n<p>Gjithashtu n\u00eb k\u00ebt\u00eb l\u00ebshim u shfaq strategjia e etiketimit t\u00eb imazheve sipas p\u00ebrmbajtjes \u2014 <i>content-based tagging<\/i>, e cila tani \u00ebsht\u00eb e aktivizuar si parazgjedhje dhe \u00ebsht\u00eb e vetmja e rekomanduar.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb m\u00eb n\u00eb detaje novitetet kryesore n\u00eb werf v1.1, nd\u00ebrsa gjithashtu do t\u00eb flasim p\u00ebr planet p\u00ebr t\u00eb ardhmen.<\/p>\n<h2>\u00c7far\u00eb ka ndryshuar n\u00eb werf v1.1?<\/h2>\n<p><\/p>\n<h3>Formati i ri i em\u00ebrtimit t\u00eb fazave dhe algoritmi i p\u00ebrzgjedhjes s\u00eb fazave nga cache<\/h3>\n<p>\nRregulli i ri i gjenerimit t\u00eb emrit t\u00eb faz\u00ebs. Tani \u00e7do nd\u00ebrtim faze gjeneron nj\u00eb em\u00ebr unik t\u00eb faz\u00ebs, i cili p\u00ebrb\u00ebhet nga 2 pjes\u00eb: n\u00ebnshkrimi (si ishte n\u00eb v1.0) plus nj\u00eb identifikues t\u00eb koh\u00ebs unik.<\/p>\n<p>P\u00ebr shembull, emri i plot\u00eb i imazhit t\u00eb faz\u00ebs mund t\u00eb duket k\u00ebshtu:<\/p>\n<p><code>werf-stages-storage\/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835<\/code><\/p>\n<p>\u2026 ose n\u00eb form\u00eb t\u00eb p\u00ebrgjithshme:<\/p>\n<p><code>werf-stages-storage\/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC<\/code><\/p>\n<p>K\u00ebtu:<\/p>\n<ul>\n<li> <code>SIGNATURE<\/code> \u2014 \u00ebsht\u00eb n\u00ebnshkrimi i faz\u00ebs, i cili paraqet identifikuesin e p\u00ebrmbajtjes s\u00eb faz\u00ebs dhe varet nga historia e ndryshimeve n\u00eb Git, q\u00eb solli k\u00ebt\u00eb p\u00ebrmbajtje;<\/li>\n<li> <code>TIMESTAMP_MILLISEC<\/code> \u2014 \u00ebsht\u00eb nj\u00eb identifikues garantues unik i imazhit, i cili gjenerohet n\u00eb momentin e nd\u00ebrtimit t\u00eb nj\u00eb imazhi t\u00eb ri.<\/li>\n<\/ul>\n<p>\nAlgoritmi i p\u00ebrzgjedhjes s\u00eb fazave nga cache bazohet n\u00eb kontrollin e lidhshm\u00ebris\u00eb s\u00eb Git-commit-\u00ebve:<\/p>\n<ol>\n<li> Werf llogarit n\u00ebnshkrimin e nj\u00eb faze t\u00eb caktuar.<\/li>\n<li> N\u00eb <i>stages-storage<\/i> mund t\u00eb ekzistojn\u00eb disa faza p\u00ebr k\u00ebt\u00eb n\u00ebnshkrim. Werf zgjedh t\u00eb gjitha fazat q\u00eb p\u00ebrputhen me n\u00ebnshkrimin.<\/li>\n<li> N\u00ebse faza aktuale \u00ebsht\u00eb e lidhur me Git (git-archive, nj\u00eb faz\u00eb e p\u00ebrdoruesit me Git-patch: <code>instalo<\/code>, <code>paraSetup<\/code>, <code>setup<\/code>; ose git-latest-patch), at\u00ebher\u00eb werf zgjedh vet\u00ebm ato faza q\u00eb jan\u00eb t\u00eb lidhura me commit-in q\u00eb \u00ebsht\u00eb paraardh\u00ebsi i commit-it aktual (p\u00ebr t\u00eb cilin \u00ebsht\u00eb thirrur nd\u00ebrtimi).<\/li>\n<li> Nga fazat e mbetura t\u00eb p\u00ebrshtatshme, zgjedhet nj\u00eb \u2014 ajo m\u00eb e vjet\u00ebr n\u00eb dat\u00ebn e krijimit.<\/li>\n<\/ol>\n<p>\nFaza p\u00ebr deg\u00eb t\u00eb ndryshme Git mund t\u00eb ket\u00eb t\u00eb nj\u00ebjtin n\u00ebnshkrim. Por werf do t\u00eb parandaloj\u00eb p\u00ebrdorimin e caches t\u00eb lidhura me deg\u00eb t\u00eb ndryshme midis k\u00ebtyre deg\u00ebve, edhe n\u00ebse n\u00ebnshkrimet p\u00ebrputhen.<\/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 Dokumentacioni<\/a><\/noindex>.<\/p>\n<h3>Algoritmi i ri p\u00ebr krijimin dhe ruajtjen e fazave n\u00eb magazin\u00ebn e fazave<\/h3>\n<p>\nN\u00ebse gjat\u00eb p\u00ebrzgjedhjes s\u00eb fazave nga cache, werf nuk gjen nj\u00eb faz\u00eb t\u00eb p\u00ebrshtatshme, at\u00ebher\u00eb aktivizohet procesi i nd\u00ebrtimit t\u00eb nj\u00eb faze t\u00eb re.<\/p>\n<p>V\u00ebrejm\u00eb se disa procese (n\u00eb nj\u00eb ose disa hoste) mund t\u00eb fillojn\u00eb nd\u00ebrtimin e t\u00eb nj\u00ebjt\u00ebs faz\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb p\u00ebraf\u00ebrt n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb. Werf p\u00ebrdor algoritmin e bllokimit optimist <i>stages-storage<\/i> n\u00eb momentin e ruajtjes s\u00eb imazhit t\u00eb sapo nd\u00ebrtuar n\u00eb <i>stages-storage<\/i>. K\u00ebshtu, kur nd\u00ebrtimi i nj\u00eb faze t\u00eb re \u00ebsht\u00eb p\u00ebrfunduar, werf bllokon <i>stages-storage<\/i> dhe ruan aty vet\u00ebm imazhin e sapo nd\u00ebrtuar n\u00eb rast se atje nuk ekziston tashm\u00eb nj\u00eb imazh i p\u00ebrshtatsh\u00ebm <i>(sip\u00ebr n\u00ebnshkrimit dhe parametrave t\u00eb tjer\u00eb \u2014 shihni algoritmin e ri t\u00eb p\u00ebrzgjedhjes s\u00eb fazave nga cache)<\/i>.<\/p>\n<p>Imazhi i sapo nd\u00ebrtuar do t\u00eb ket\u00eb me siguri nj\u00eb identifikues unik sipas <code>TIMESTAMP_MILLISEC<\/code> <i>(shihni formatin e ri t\u00eb em\u00ebrimit t\u00eb fazave)<\/i>. N\u00eb rast se n\u00eb <i>stages-storage<\/i> do t\u00eb gjendet nj\u00eb imazh i p\u00ebrshtatsh\u00ebm, werf do t\u00eb hedh\u00eb posht\u00eb imazhin e sapo nd\u00ebrtuar dhe do t\u00eb p\u00ebrdor\u00eb imazhin nga cache.<\/p>\n<p>Me fjal\u00eb t\u00eb tjera: procesi i par\u00eb q\u00eb p\u00ebrfundon nd\u00ebrtimin e imazhit (m\u00eb i shpejti), do t\u00eb ket\u00eb t\u00eb drejtat e ruajtjes n\u00eb stages-storage (dhe vet\u00ebm ky imazh do t\u00eb p\u00ebrdoret p\u00ebr t\u00eb gjitha nd\u00ebrtimet). Procesi i ngadalt\u00eb i nd\u00ebrtimit nuk do ta bllokoj\u00eb kurr\u00eb procesin m\u00eb t\u00eb shpejt\u00eb nga ruajtja e rezultateve t\u00eb nd\u00ebrtimit t\u00eb faz\u00ebs aktuale dhe kalimi n\u00eb nd\u00ebrtimin e faz\u00ebs tjet\u00ebr.<\/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 Dokumentacioni<\/a><\/noindex>.<\/p>\n<h3>P\u00ebrformanca e nd\u00ebrtuesit t\u00eb Dockerfile \u00ebsht\u00eb p\u00ebrmir\u00ebsuar<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb moment, konstrukti i fazave p\u00ebr imazhin e nd\u00ebrtuar nga Dockerfile p\u00ebrb\u00ebhet nga nj\u00eb faz\u00eb \u2014 <code>dockerfile<\/code>. N\u00eb llogaritjen e n\u00ebnshkrimit llogaritet suma e kontrollet e skedar\u00ebve <code>context<\/code>, q\u00eb do t\u00eb p\u00ebrdoren gjat\u00eb nd\u00ebrtimit. Para k\u00ebtij p\u00ebrmir\u00ebsimi, werf kalonte rekurzivisht n\u00ebp\u00ebr t\u00eb gjith\u00eb skedar\u00ebt dhe merrte shum\u00ebn e kontrollit duke p\u00ebrmbledhur kontekstin dhe modin e \u00e7do skedari. Duke filluar nga versionet v1.1, werf mund t\u00eb p\u00ebrdor\u00eb shum\u00ebn e kontrollet e llogaritur, t\u00eb ruajtur n\u00eb depo Git.<\/p>\n<p>N\u00eb thelb t\u00eb algoritmit \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/docs\/git-ls-tree\">git ls-tree<\/a><\/noindex>. Algoritmi merr parasysh t\u00eb dh\u00ebnat n\u00eb <code>.dockerignore<\/code> dhe kalon rekurzivisht n\u00ebp\u00ebr pem\u00ebn e skedar\u00ebve vet\u00ebm kur \u00ebsht\u00eb e nevojshme. K\u00ebshtu, ne u \u00e7lirua nga leximi i sistemit t\u00eb skedar\u00ebve, dhe var\u00ebsia e algoritmit nga madh\u00ebsia <code>context<\/code> nuk \u00ebsht\u00eb e r\u00ebnd\u00ebsishme.<\/p>\n<p>Po ashtu, algoritmi kontrollon skedar\u00ebt e pa ndjekur dhe, kur \u00ebsht\u00eb e nevojshme, i p\u00ebrfshin ata n\u00eb shum\u00ebn e kontrollit.<\/p>\n<h3>P\u00ebrmir\u00ebsuar performanca gjat\u00eb importimit t\u00eb skedar\u00ebve<\/h3>\n<p>\nN\u00eb versionet werf v1.1 p\u00ebrdoret nj\u00eb server rsync gjat\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.werf.io\/v1.1\/documentation\/configuration\/stapel_image\/import_directive.html\">importit t\u00eb skedar\u00ebve nga artefaktet dhe imazhet<\/a><\/noindex>. M\u00eb par\u00eb, importimi kryhej n\u00eb dy hapa duke p\u00ebrdorur montimin e drejtoris\u00eb nga sistemi host.<\/p>\n<p>Performanca e importeve n\u00eb macOS nuk \u00ebsht\u00eb m\u00eb e kufizuar nga volumi Docker, dhe importet kryhen p\u00ebr t\u00eb nj\u00ebjt\u00ebn koh\u00eb si n\u00eb Linux dhe Windows.<\/p>\n<h3>Etiketa e bazuar n\u00eb p\u00ebrmbajtje<\/h3>\n<p>\nWerf v1.1 mb\u00ebshtet at\u00eb q\u00eb quhet etiketa e bazuar n\u00eb p\u00ebrmbajtjen e imazhit \u2014 <i>content-based tagging<\/i>. Etiketat e imazheve p\u00ebrfundimtare Docker varen nga p\u00ebrmbajtja e k\u00ebtyre imazheve.<\/p>\n<p>Gjat\u00eb ekzekutimit t\u00eb komand\u00ebs <code>werf publish --tags-by-stages-signature<\/code> \u0438\u043b\u0438 <code>werf ci-env --tagging-strategy=stages-signature<\/code> do t\u00eb etiketohen imazhet e publikuara me at\u00eb q\u00eb quhet <b>n\u00ebnshkrimi i fazave<\/b> t\u00eb imazhit. \u00c7do imazh etiketizohet me n\u00ebnshkrimin e vet t\u00eb fazave t\u00eb k\u00ebtij imazhi, i cili llogaritet sipas t\u00eb nj\u00ebjtave rregulla si n\u00ebnshkrimi normal i secil\u00ebs faz\u00eb ve\u00e7mas, por \u00ebsht\u00eb nj\u00eb identifikues agregues i imazhit.<\/p>\n<p>N\u00ebnshkrimi i fazave t\u00eb imazhit varet nga:<\/p>\n<ol>\n<li> p\u00ebrmbajtja e k\u00ebtij imazhi;<\/li>\n<li> historia e modifikimeve n\u00eb Git, q\u00eb \u00e7uan n\u00eb k\u00ebt\u00eb p\u00ebrmbajtje.<\/li>\n<\/ol>\n<p>\nN\u00eb depo Git gjithmon\u00eb ka komitete t\u00eb kota, q\u00eb nuk ndryshojn\u00eb p\u00ebrmbajtjen e skedar\u00ebve t\u00eb imazhit. P\u00ebr shembull, komitete q\u00eb kan\u00eb vet\u00ebm komente ose komitete bashkimit, ose komitete q\u00eb ndryshojn\u00eb ato skedar\u00eb n\u00eb Git, q\u00eb nuk do t\u00eb importohen n\u00eb imazh.<\/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>\u00cbht\u00eb e r\u00ebnd\u00ebsishme<\/b>: duke filluar nga ky moment <i>stages-signature<\/i> \u2014 \u00ebsht\u00eb <b>strategjia e vetme e rekomanduar p\u00ebr tagging<\/b>. Ajo do t\u00eb p\u00ebrdoret si parazgjedhje n\u00eb komand\u00ebn <code>werf ci-env<\/code> (n\u00ebse nuk especificohet nj\u00eb skem\u00eb tjet\u00ebr tagimi).<\/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 Dokumentacioni<\/a><\/noindex>. K\u00ebsaj ve\u00e7orie do t'i dedikohet gjithashtu nj\u00eb publikim t\u00eb ve\u00e7ant\u00eb. <b>P\u00cbRPUNUAR<\/b> (3 Prill): Artikulli me detaje <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/495112\/\">u publikua<\/a><\/noindex>.<\/p>\n<h3>Nivelet e regjistrimit<\/h3>\n<p>\nK\u00ebtu, p\u00ebrdoruesi ka mund\u00ebsin\u00eb t\u00eb kontrolloj\u00eb daljen, t\u00eb caktuar nivelin e regjistrimit dhe t\u00eb punoj\u00eb me informacionin e debug-imit. Jan\u00eb shtuar opsionet <code>--log-quiet<\/code>, <code>--log-verbose<\/code>, <code>--log-debug<\/code>.<\/p>\n<p>P\u00ebr parazgjedhje, n\u00eb dalje p\u00ebrmban minimum informacioni:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb nd\u00ebrtuesin sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/58e981b2e0c579ddde817eadc1732874.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuke p\u00ebrdorur daljen e detajuar (<code>--log-verbose<\/code>) mund t\u00eb ndjek\u00ebsh se si punon werf:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb nd\u00ebrtuesin sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/487ed5dfc5df0178f7c09f8da697ceff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDalja e detajuar (<code>--log-debug<\/code>), p\u00ebrve\u00e7 informacionit t\u00eb debug-imit nga werf, gjithashtu p\u00ebrmban log-et e bibliotekave t\u00eb p\u00ebrdorura. P\u00ebr shembull, mund t\u00eb shihni se si ndodh nd\u00ebrveprimi me Docker Registry, si dhe t\u00eb regjistroni vendet ku humb shum\u00eb koh\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb nd\u00ebrtuesin sot dhe planet p\u00ebr t\u00eb ardhmen\" src=\"\/wp-content\/uploads\/2020\/04\/99c1f3c2ab3803ff11fae1f2d5c9a5af.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Planet e ardhshme<\/h2>\n<p>\n<b>Kujdes!<\/b> Funksionalitetet e p\u00ebrshkruara m\u00eb posht\u00eb me shenimin <b>v1.1<\/b> do t\u00eb b\u00ebhen t\u00eb aksesueshme q\u00eb n\u00eb k\u00ebt\u00eb version, shum\u00eb nga to \u2014 n\u00eb nj\u00eb t\u00eb ardhme t\u00eb af\u00ebrt. P\u00ebrdit\u00ebsimet do t\u00eb vijn\u00eb p\u00ebrmes autoazhgjerimeve <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\">n\u00eb p\u00ebrdorimin e multiwerf<\/a><\/noindex>. K\u00ebto funksionalitete nuk prekin pjes\u00ebn e stabilizuar t\u00eb funksioneve v1.1, shfaqja e tyre nuk do t\u00eb k\u00ebrkoj\u00eb nd\u00ebrhyrje manuale nga p\u00ebrdoruesi n\u00eb konfigurimet ekzistuese.<\/p>\n<h3>P\u00ebrkrahje e plot\u00eb p\u00ebr realizime t\u00eb ndryshme t\u00eb Docker Registry (E RE)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: mars<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2199\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nQ\u00ebllimi \u00ebsht\u00eb q\u00eb p\u00ebrdoruesi t\u00eb p\u00ebrdor\u00eb realizimin e tij t\u00eb preferuar pa kufizime kur p\u00ebrdor werf. <\/p>\n<p>N\u00eb k\u00ebt\u00eb moment, ne kemi identifikuar grupin e m\u00ebposht\u00ebm t\u00eb zgjidhjeve p\u00ebr t\u00eb cilat planifikojm\u00eb t\u00eb ofrojm\u00eb mb\u00ebshtetje t\u00eb plot\u00eb:<\/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>\nMe yll\u00eb kan\u00eb sh\u00ebnuar zgjidhjet q\u00eb aktualisht mb\u00ebshteten plot\u00ebsisht nga werf. P\u00ebr t\u00eb tjerat ka mb\u00ebshtetje, por me kufizime.<\/p>\n<p>Mund t\u00eb ve\u00e7ojm\u00eb dy probleme kryesore:<\/p>\n<ul>\n<li> Disa zgjidhje nuk mb\u00ebshtesin fshirjen eetiketave me an\u00eb t\u00eb Docker Registry API, gj\u00eb q\u00eb nuk u lejon p\u00ebrdoruesve t\u00eb p\u00ebrdorin pastrimin automatik t\u00eb implementuar n\u00eb werf. Ky fakt \u00ebsht\u00eb valid p\u00ebr AWS ECR, Docker Hub dhe GitHub Packages.<\/li>\n<li> Nj\u00eb pjes\u00eb e zgjidhjeve nuk mb\u00ebshtesin, ashtuquajturat, nested repositories (Docker Hub, GitHub Packages dhe Quay) ose mb\u00ebshtesin, por p\u00ebrdoruesi duhet t'i krijoj\u00eb ato manualisht duke p\u00ebrdorur UI ose API (AWS ECR).<\/li>\n<\/ul>\n<p>\nNe synojm\u00eb t\u00eb zgjidhim k\u00ebto e probleme t\u00eb tjera duke p\u00ebrdorur API-t\u00eb native t\u00eb zgjidhjeve. Ky projekt p\u00ebrfshin gjithashtu mbulimin me teste t\u00eb ciklit t\u00eb plot\u00eb t\u00eb funksionimit t\u00eb werf p\u00ebr secil\u00ebn prej tyre.<\/p>\n<h3>Nd\u00ebrtime t\u00eb shp\u00ebrndara t\u00eb imazheve (\u2191)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2 v1.1 (prioriteti p\u00ebr implementimin e k\u00ebsaj mund\u00ebsie \u00ebsht\u00eb rritur)<\/i><\/li>\n<li> <i>Afatet: mars-prill mars<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1614\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nAktualisht, werf v1.0 dhe v1.1 mund t\u00eb p\u00ebrdoren vet\u00ebm n\u00eb nj\u00eb host t\u00eb dedikuar p\u00ebr operacionet e nd\u00ebrtimit, botimit t\u00eb imazheve dhe vendosjes s\u00eb aplikacionit n\u00eb Kubernetes.<\/p>\n<p>P\u00ebr t\u00eb hapur mund\u00ebsit\u00eb e pun\u00ebs shp\u00ebrndare t\u00eb werf, kur nd\u00ebrtimi dhe vendosja e aplikacioneve n\u00eb Kubernetes fillojn\u00eb n\u00eb disa host-e t\u00eb rast\u00ebsishme dhe k\u00ebta host-e nuk ruajn\u00eb gjendjen e tyre midis nd\u00ebrtimeve (runner t\u00eb p\u00ebrkohsh\u00ebm), werf k\u00ebrkon zbatimin e mund\u00ebsis\u00eb p\u00ebr t\u00eb p\u00ebrdorur Docker Registry si depo t\u00eb stadeve.<\/p>\n<p>M\u00eb par\u00eb, kur projekti werf quhej dapp, ekzistonte nj\u00eb mund\u00ebsi e till\u00eb. Sidoqoft\u00eb, ne p\u00ebrball\u00ebm disa probleme q\u00eb duhet t\u00eb merret parasysh gjat\u00eb implementimit t\u00eb k\u00ebsaj funksionaliteti n\u00eb werf.<\/p>\n<p><b>Sh\u00ebnim<\/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>Mb\u00ebshtetje zyrtare p\u00ebr GitHub Actions (E RE)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: mars<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2210\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nP\u00ebrfshin dokumentacionin e werf (seksionet <i>referenc\u00eb<\/i> dhe <i>udh\u00ebzues<\/i>), si dhe nj\u00eb veprim t\u00eb zyrtarizuar t\u00eb GitHub p\u00ebr t\u00eb punuar me werf.<\/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>Zhvillimi lokal dhe disfatimi i aplikacioneve me werf (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: janar-shkurt prill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/1940\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nQ\u00ebllimi kryesor \u00ebsht\u00eb t\u00eb arrihet nj\u00eb konfigurim i unifikuar p\u00ebr disfatimin e aplikacioneve si lokal, ashtu edhe n\u00eb prodhim, pa veprime t\u00eb komplikuara, \"nga kutia\".<\/p>\n<p>Nga werf k\u00ebrkohet gjithashtu nj\u00eb mod operativ ku do t\u00eb jet\u00eb e rehatshme t\u00eb redaktohet kodi i aplikacionit dhe t\u00eb marrim menj\u00ebher\u00eb reagim nga aplikacioni funksional p\u00ebr debug.<\/p>\n<h3>Algoritmi i ri i pastrimit (E RE)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: prill<\/i><\/li>\n<li> <i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/issues\/2212\">\u00c7\u00ebshtja<\/a><\/noindex><\/i><\/li>\n<\/ul>\n<p>\nN\u00eb versionin aktual t\u00eb werf v1.1 n\u00eb procedur\u00ebn <code>cleanup<\/code> nuk \u00ebsht\u00eb parashikuar pastrimi i imazheve p\u00ebr skem\u00ebn e etiketimit bazuar n\u00eb p\u00ebrmbajtje (content-based tagging) \u2014 k\u00ebto imazhe do t\u00eb grumbullohen.<\/p>\n<p>Gjithashtu, n\u00eb versionin aktual t\u00eb werf (v1.0 dhe v1.1) p\u00ebrdoren politika t\u00eb ndryshme pastrimi p\u00ebr imazhet e publikuara sipas skemave t\u00eb etiketimit: deg\u00eb Git, etiket\u00eb Git ose angazhim Git.<\/p>\n<p>\u00cbsht\u00eb menduar nj\u00eb algorit\u00ebm i ri unifikues p\u00ebr t\u00eb gjitha skemat e etiketimit p\u00ebr pastrimin e imazheve duke u bazuar n\u00eb historin\u00eb e angazhimeve n\u00eb Git:<\/p>\n<ul>\n<li> T\u00eb ruhet jo m\u00eb shum\u00eb se N1 imazhe t\u00eb lidhura me N2 angazhimet e fundit p\u00ebr secil\u00ebn nga git HEAD (degat dhe etiketat).<\/li>\n<li> T\u00eb ruhet jo m\u00eb shum\u00eb se N1 imazhe-stage, t\u00eb lidhura me N2 angazhimet e fundit p\u00ebr secil\u00ebn nga git HEAD (degat dhe etiketat).<\/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> T\u00eb ruhet gjith\u00eb imazhet q\u00eb p\u00ebrdoren n\u00eb manifestet e konfigurimit t\u00eb burimeve, t\u00eb ruajtura n\u00eb l\u00ebshimet Helm.<\/li>\n<li> Nj\u00eb imazh mund t\u00eb fshihet n\u00ebse nuk \u00ebsht\u00eb i lidhur me asnj\u00eb HEAD nga git (p.sh., sepse ai lidh\u00ebs p\u00ebrkat\u00ebs \u00ebsht\u00eb fshir\u00eb) dhe nuk p\u00ebrdoret n\u00eb asnj\u00eb nga manifestet n\u00eb klasterin Kubernetes dhe n\u00eb l\u00ebshimet Helm.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Nd\u00ebrtimi paralel i imazheve (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.1<\/i><\/li>\n<li> <i>Afatet: janar-shkurt prill*<\/i><\/li>\n<\/ul>\n<p>\nVersioni aktual i werf nd\u00ebrtan imazhet dhe artefaktet e p\u00ebrshkruara n\u00eb <code>werf.yaml<\/code>k\u00ebshtu, gradualisht. \u00cbsht\u00eb e nevojshme t\u00eb paralelizohet procesi i nd\u00ebrtimit t\u00eb indivit\u00ebve t\u00eb pavarur t\u00eb imazheve dhe artefakteve, si dhe t\u00eb sigurohet nj\u00eb output i p\u00ebrshtatsh\u00ebm dhe informativ.<\/p>\n<p><i>* Sh\u00ebnim: afati \u00ebsht\u00eb shtyr\u00eb p\u00ebr shkak t\u00eb rritjes s\u00eb prioritetit p\u00ebr zbatimin e ndarjes s\u00eb shp\u00ebrndar\u00eb, e cila do t\u00eb shtoj\u00eb m\u00eb shum\u00eb mund\u00ebsi p\u00ebr shkall\u00ebzimin horizontal dhe p\u00ebrdorimin e werf me GitHub Actions. Nd\u00ebrsa ndarja paralele \u00ebsht\u00eb hapi tjet\u00ebr i optimizimit, duke ofruar shkall\u00ebzim vertikal gjat\u00eb ndarjes s\u00eb nj\u00eb projekti.<\/i><\/p>\n<h3>Kalimi n\u00eb Helm 3 (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2<\/i><\/li>\n<li> <i>Afatet: shkurt-mars maj*<\/i><\/li>\n<\/ul>\n<p>\nP\u00ebrfshin kalimin n\u00eb baz\u00ebn e re t\u00eb kodit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/475722\/\">Helm 3<\/a><\/noindex> dhe nj\u00eb m\u00ebnyr\u00eb t\u00eb provuar dhe t\u00eb leht\u00eb p\u00ebr migrimin e instalimeve ekzistuese.<\/p>\n<p><i>* Sh\u00ebnim: kalimi n\u00eb Helm 3 nuk do t\u00eb sjell\u00eb mund\u00ebsi t\u00eb r\u00ebnd\u00ebsishme n\u00eb werf, sepse t\u00eb gjitha funksionalitetet kryesore t\u00eb Helm 3 (3-way-merge dhe mungesa e tiller) jan\u00eb tashm\u00eb t\u00eb zbatuara n\u00eb werf. P\u00ebr m\u00eb tep\u00ebr, werf ka <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/deploy_process\/differences_with_helm.html\">mund\u00ebsi t\u00eb tjera<\/a><\/noindex> p\u00ebrve\u00e7 atyre t\u00eb p\u00ebrmendura. Sidoqoft\u00eb, ky kalim mbetet n\u00eb planet tona dhe do t\u00eb realizohet.<\/i><\/p>\n<h3>Jsonnet p\u00ebr p\u00ebrshkrimin e konfiguracionit Kubernetes (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2<\/i><\/li>\n<li> <i>Afatet: janar-shkurt prill-maj<\/i><\/li>\n<\/ul>\n<p>\nWerf do t\u00eb mb\u00ebshtes\u00eb p\u00ebrshkrimin e konfiguracionit p\u00ebr Kubernetes n\u00eb formatin Jsonnet. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, werf do t\u00eb mbetet n\u00eb p\u00ebrputhje me Helm dhe do t\u00eb ket\u00eb mund\u00ebsin\u00eb e zgjedhjes s\u00eb formatit t\u00eb p\u00ebrshkrimit.<\/p>\n<p>Shkaku \u00ebsht\u00eb se shabllonet e gjuh\u00ebs Go, sipas vler\u00ebsimit t\u00eb shum\u00eb njer\u00ebzve, kan\u00eb nj\u00eb prag t\u00eb lart\u00eb hyrjeje, dhe kuptueshm\u00ebria e kodit t\u00eb k\u00ebtyre shablloneve gjithashtu vuante.<\/p>\n<p>Po ashtu, po shqyrtohet mund\u00ebsia e implementimit t\u00eb sistemeve t\u00eb tjera p\u00ebrshkruese t\u00eb konfiguracionit Kubernetes (p\u00ebr shembull, Kustomize).<\/p>\n<h3>Puna brenda Kubernetes (\u2193)<\/h3>\n<p><\/p>\n<ul>\n<li> <i>Versioni: v1.2<\/i><\/li>\n<li> <i>Afatet: prill-maj maj-qershor<\/i><\/li>\n<\/ul>\n<p>\nQ\u00ebllimi: t\u00eb sigurohet ndarja e imazheve dhe dor\u00ebzimi i aplikacionit duke p\u00ebrdorur runner n\u00eb Kubernetes. Dometh\u00ebn\u00eb, ndarja e imazheve t\u00eb reja, publikimi i tyre, pastrimi dhe deploy mund t\u00eb ndodhin direkt nga pod Kubernetes.<\/p>\n<p>P\u00ebr t\u00eb realizuar k\u00ebt\u00eb mund\u00ebsi, fillimisht k\u00ebrkohet mund\u00ebsia e ndarjes s\u00eb shp\u00ebrndar\u00eb t\u00eb imazheve <i>(shih pik\u00ebn m\u00eb lart)<\/i>.<\/p>\n<p>Po ashtu k\u00ebrkohet mb\u00ebshtetje p\u00ebr modin e pun\u00ebs s\u00eb ndar\u00ebsit pa serverin Docker (dmth, ndarje e ngjashme me Kaniko ose ndarje n\u00eb userspace).<\/p>\n<p>Werf do t\u00eb mb\u00ebshtes\u00eb ndarjen n\u00eb Kubernetes jo vet\u00ebm me Dockerfile, por gjithashtu me ndar\u00ebsin e tij Stapel me rip\u00ebrpunime inkrementale dhe Ansible.<\/p>\n<h2>Hapi drejt zhvillimit t\u00eb hapur<\/h2>\n<p>\nNe e duam komunitetin ton\u00eb (<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>) dhe duam q\u00eb gjithnj\u00eb e m\u00eb shum\u00eb njer\u00ebz t\u00eb ndihmojn\u00eb n\u00eb p\u00ebrmir\u00ebsimin e werf, t\u00eb kuptojn\u00eb drejtimin n\u00eb t\u00eb cilin po l\u00ebvizim dhe t\u00eb kontribuojn\u00eb n\u00eb zhvillim.<\/p>\n<p>Koh\u00ebt e fundit u vendos q\u00eb t\u00eb kalojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/help.github.com\/en\/github\/managing-your-work-on-github\/about-project-boards\">tabulat e projekteve t\u00eb GitHub<\/a><\/noindex> p\u00ebr t\u00eb hapur pak nga procesi i pun\u00ebs s\u00eb ekipit ton\u00eb. Tani mund t\u00eb shihni planet e af\u00ebrta, si dhe pun\u00ebt aktuale n\u00eb drejtimet e m\u00ebposhtme:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/9\">Dokumentimi dhe Site<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/7\">Testimi<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/projects\/6\">Gabime dhe UX t\u00eb k\u00ebqij<\/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>\nK \u00ebsht\u00eb b\u00ebr\u00eb nj\u00eb pun\u00eb e madhe me issues:<\/p>\n<ul>\n<li> Jan\u00eb fshir\u00eb ato q\u00eb nuk jan\u00eb m\u00eb t\u00eb r\u00ebnd\u00ebsishme.<\/li>\n<li> Ato ekzistuese jan\u00eb zvog\u00ebluar n\u00eb nj\u00eb format t\u00eb unifikuar, me num\u00ebr t\u00eb mjaftuesh\u00ebm detajesh dhe holl\u00ebsish.<\/li>\n<li> Jan\u00eb shtuar issues t\u00eb reja me ide dhe propozime.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Si t\u00eb aktivizoni versionin v1.1<\/h2>\n<p>\nVersioni \u00ebsht\u00eb i disponuesh\u00ebm tani n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf#backward-compatibility-promise\">kanalin 1.1 ea<\/a><\/noindex> (n\u00eb kanalet <i>stabil<\/i> dhe <i>shk\u00ebmbim t\u00eb fort\u00eb<\/i> l\u00ebshimet do t\u00eb shfaqen me kalimin e koh\u00ebs, megjithat\u00eb <i>ea<\/i> veta \u00ebsht\u00eb e mjaftueshme e stabilizuar p\u00ebr p\u00ebrdorim, sepse ka kaluar p\u00ebrmes kanaleve <i>alpha<\/i> dhe <i>beta<\/i>). Aktivizohet <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\">n\u00ebp\u00ebrmjet multiwerf<\/a><\/noindex> n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb:<\/p>\n<pre><code class=\"bash\">source $(multiwerf use 1.1 ea)\nwerf KOMANDA ...<\/code><\/pre>\n<p><\/p>\n<h2>P\u00ebrfundim<\/h2>\n<p>\nArkitektura e re e ruajtjes s\u00eb fazave dhe optimizimi i funksionimit t\u00eb nd\u00ebrtuesit p\u00ebr nd\u00ebrtuesit Stapel dhe Dockerfile ofron mund\u00ebsi p\u00ebr t\u00eb realizuar nd\u00ebrtime t\u00eb shp\u00ebrndara dhe paralel n\u00eb werf. k\u00ebto mund\u00ebsi do t\u00eb ken\u00eb shum\u00eb shpejt n\u00eb t\u00eb nj\u00ebjtin l\u00ebshim v1.1 dhe do t\u00eb b\u00ebhen automatikisht t\u00eb disponueshme p\u00ebrmes mekanizmit t\u00eb azhurnimeve automatik. <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>N\u00eb k\u00ebt\u00eb l\u00ebshim u shtua strategjia e etiketimit t\u00eb p\u00ebrmbajtjes s\u00eb imazheve \u2014 <i>content-based tagging<\/i>, \u2014 e cila u b\u00eb strategjia e paracaktuar. Gjithashtu u rishikua logu i komandave kryesore: <code>werf build<\/code>, <code>werf publish<\/code>, <code>werf deploy<\/code>, <code>werf dismiss<\/code>, <code>werf cleanup<\/code>.<\/p>\n<p>Hapi i ardhsh\u00ebm i r\u00ebnd\u00ebsish\u00ebm do t\u00eb jet\u00eb shtimi i nd\u00ebrtimeve t\u00eb shp\u00ebrndara. Nd\u00ebrtimet e shp\u00ebrndara, nga versioni v1.0, jan\u00eb b\u00ebr\u00eb nj\u00eb prioritet m\u00eb i lart\u00eb se nd\u00ebrtimet paralel, sepse shtojn\u00eb m\u00eb shum\u00eb vler\u00eb p\u00ebr werf: shkall\u00ebzimi vertikal i nd\u00ebrtuesve dhe mb\u00ebshtetje p\u00ebr nd\u00ebrtuesit efemer\u00eb n\u00eb sistemet e ndryshme CI\/CD, si dhe mund\u00ebsia p\u00ebr t\u00eb b\u00ebr\u00eb mb\u00ebshtetje zyrtare p\u00ebr GitHub Actions. Prandaj, afatet p\u00ebr realizimin e nd\u00ebrtimeve paralel jan\u00eb shtyr\u00eb. Megjithat\u00eb, ne po punojm\u00eb p\u00ebr t'i realizuar t\u00eb dyja mund\u00ebsit\u00eb sa m\u00eb shpejt t\u00eb jet\u00eb e mundur.<\/p>\n<p>Mbani syt\u00eb hapur! Dhe mos harroni t\u00eb shihni tek ne n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">GitHub<\/a><\/noindex>, p\u00ebr t\u00eb krijuar issue, p\u00ebr t\u00eb gjetur nj\u00eb t\u00eb ekzistuesh\u00ebm dhe p\u00ebr t\u00eb dh\u00ebn\u00eb nj\u00eb plus, p\u00ebr t\u00eb krijuar nj\u00eb PR ose thjesht p\u00ebr t\u00eb ndjekur zhvillimin e projektit.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/481306\/\">Paraqesim werf 1.0 stabil: \u00e7far\u00eb lidhjeje ka me GitOps, statusin dhe planet<\/a><\/noindex>\u00bb<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf - mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes (shqyrtim dhe video prezantimi)<\/a><\/noindex>\u00bb;<\/li>\n<li> Cikli i sh\u00ebnimeve t\u00eb rinovimeve n\u00eb werf:\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/476646\/\">3-way merge n\u00eb werf: deploy n\u00eb Kubernetes me Helm \"n\u00eb steroide\"<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468049\/\">P\u00ebrdorimi i werf p\u00ebr l\u00ebshimin e Helm-chart-eve komplekse<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465131\/\">Mb\u00ebshtetje p\u00ebr monorepo dhe multirepo n\u00eb werf dhe \u00e7far\u00eb lidhjeje ka kjo me Docker Registry<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/463613\/\">Tani mund t\u00eb nd\u00ebrtosh imazhe Docker n\u00eb werf edhe me Dockerfile standard<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Burimi: <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\/sq\/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=\"sq_AL\" \/>\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\/sq\/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\udd47L\u00ebshimi i werf 1.1: p\u00ebrmir\u00ebsime n\u00eb grumbullues sot dhe planet p\u00ebr t\u00eb ardhmen | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sq\/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":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/76764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=76764"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/76764\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/76765"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=76764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=76764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=76764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}