{"id":35941,"date":"2019-10-31T22:07:41","date_gmt":"2019-10-31T19:07:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/chto-zhe-takoe-gitops\/"},"modified":"2019-10-31T22:07:41","modified_gmt":"2019-10-31T19:07:41","slug":"chto-zhe-takoe-gitops","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/chto-zhe-takoe-gitops","title":{"rendered":"\u00c7far\u00eb \u00ebsht\u00eb GitOps?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Sh\u00ebn. p\u00ebrk.<\/b>: Pas publikimit t\u00eb fundit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/456754\/\">t\u00eb materialeve<\/a><\/noindex> rreth metodave pull dhe push n\u00eb GitOps, ne pam\u00eb interes p\u00ebr k\u00ebt\u00eb model n\u00eb p\u00ebrgjith\u00ebsi, megjithat\u00eb, publikimet n\u00eb gjuh\u00ebn ruse mbi k\u00ebt\u00eb tem\u00eb ishin tep\u00ebr t\u00eb pakta (n\u00eb Habr nuk ka asnj\u00eb). Prandaj, jemi t\u00eb lumtur t'ju ofrojm\u00eb p\u00ebrkthimin e nj\u00eb artikulli tjet\u00ebr \u2014 ndon\u00ebse tashm\u00eb pothuajse nj\u00eb vit m\u00eb par\u00eb! \u2014 nga kompania Weaveworks, themeluesi i s\u00eb cil\u00ebs shpiku termin \u201cGitOps\u201d. N\u00eb tekst shpjegohet thelbi i qasjes dhe dallimet ky\u00e7e nga ato ekzistuese.<\/i><\/p>\n<p>\nNj\u00eb vit m\u00eb par\u00eb ne publikuam <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-operations-by-pull-request\">nj\u00eb hyrje n\u00eb GitOps<\/a><\/noindex>. At\u00ebher\u00eb ne treguam se si ekipi i Weaveworks filloi nj\u00eb SaaS, t\u00ebr\u00ebsisht t\u00eb bazuar n\u00eb Kubernetes, dhe zhvilloi nj\u00eb set praktikash m\u00eb t\u00eb mira p\u00ebr implementimin, menaxhimin dhe monitorimin n\u00eb nj\u00eb ambient cloud native.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Artikulli u b\u00eb i njohur. T\u00eb tjer\u00eb filluan t\u00eb flasin p\u00ebr GitOps, filluan t\u00eb publikojn\u00eb mjete t\u00eb reja p\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hasura\/gitkube\">git push<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/dzone.com\/articles\/weaveworks-gitops-developer-toolkit-part-one-skaff\">zhvillimit<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/storing-secure-sealed-secrets-using-gitops\">sekretet<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.alexellis.io\/introducing-openfaas-cloud\/\">funksione<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/jenkins.io\/blog\/2018\/03\/19\/introducing-jenkins-x\/\">integrimit t\u00eb vazhduesh\u00ebm<\/a><\/noindex> etj. N\u00eb faqen ton\u00eb u shfaq <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/category\/gitops\/\">nj\u00eb num\u00ebr i madh<\/a><\/noindex> publikimesh dhe raste p\u00ebrdorimi t\u00eb GitOps. Por disa njer\u00ebz ende pat\u00ebn pyetje. Si ndryshon modeli nga tradita <noindex><a rel=\"nofollow\" href=\"https:\/\/puppet.com\/blog\/a-deployment-pipeline-for-infrastructure-a-devops-case-study-at-nbn\">infrastructure as code<\/a><\/noindex> dhe d\u00ebrgesat e vazhdueshme (<noindex><a rel=\"nofollow\" href=\"https:\/\/puppet.com\/blog\/a-deployment-pipeline-for-infrastructure-a-devops-case-study-at-nbn\">continuous delivery<\/a><\/noindex>)? A \u00ebsht\u00eb e domosdoshme t\u00eb p\u00ebrdoret Kubernetes?<\/p>\n<p>S\u00eb shpejti kuptuam se nevojitej nj\u00eb p\u00ebrshkrim i ri, q\u00eb ofron:<\/p>\n<ol>\n<li> Nj\u00eb num\u00ebr t\u00eb madh shembujsh dhe historish;<\/li>\n<li> Nj\u00eb p\u00ebrcaktim konkret t\u00eb GitOps;<\/li>\n<li> Krahasimi me d\u00ebrgimin e vazhduesh\u00ebm tradicional.<\/li>\n<\/ol>\n<p>\nN\u00eb k\u00ebt\u00eb artikull ne p\u00ebrpiqemi t\u00eb mbulojm\u00eb t\u00eb gjitha k\u00ebto tema. Do t\u00eb gjeni nj\u00eb hyrje t\u00eb azhurnuar n\u00eb GitOps dhe nj\u00eb perspektiv\u00eb mbi t\u00eb nga ana e zhvilluesve dhe CI\/CD. Ne kryesisht fokusohemi n\u00eb Kubernetes, megjithat\u00eb modeli mund t\u00eb p\u00ebrgjith\u00ebsohet.<\/p>\n<h2>Njoftohuni: GitOps<\/h2>\n<p>\nImagjinoni Alice. Ajo menaxhon kompanin\u00eb Family Insurance, e cila ofron politika p\u00ebr sigurimin e sh\u00ebndetit, automjeteve, pasurive dhe sigurimeve t\u00eb udh\u00ebtimit p\u00ebr persona q\u00eb jan\u00eb shum\u00eb t\u00eb z\u00ebn\u00eb p\u00ebr t\u00eb kuptuar detajet e kontratave vet\u00eb. Biznesi i saj filloi si nj\u00eb projekt an\u00ebsor, kur Alice punonte n\u00eb bank\u00eb si data scientist. Nj\u00ebher\u00eb ajo kuptoi se mund t\u00eb p\u00ebrdorte algoritme t\u00eb avancuara kompjuterike p\u00ebr t\u00eb analizuar t\u00eb dh\u00ebnat m\u00eb efektivisht dhe p\u00ebr t\u00eb formuar paketa sigurimi. Investitor\u00ebt financuan projektin, dhe tani kompania e saj sjell mbi 20 milion dollar\u00eb n\u00eb vit dhe po rritet me shpejt\u00ebsi. Aktualisht, n\u00eb t\u00eb punojn\u00eb 180 njer\u00ebz n\u00eb pozita t\u00eb ndryshme. Midis tyre \u00ebsht\u00eb ekipi teknologjik, i cili merret me zhvillimin, mir\u00ebmbajtjen e faqes, baz\u00ebs s\u00eb dh\u00ebnave dhe analiz\u00ebn e baz\u00ebs s\u00eb klient\u00ebve. Ekipi me 60 njer\u00ebz drejtohet nga Bob \u2014 drejtori teknik i kompanis\u00eb.<\/p>\n<p>Ekipi i Bob-it boton sisteme production n\u00eb cloud. Aplikacionet e tyre kryesore funksionojn\u00eb n\u00eb GKE, duke shfryt\u00ebzuar avantazhet e Kubernetes n\u00eb Google Cloud. P\u00ebr m\u00eb tep\u00ebr, ata p\u00ebrdorin nj\u00eb s\u00ebr\u00eb mjetesh p\u00ebr p\u00ebrpunimin e t\u00eb dh\u00ebnave dhe analitik\u00ebs.<\/p>\n<p>Family Insurance \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043d\u043e \u0437\u0430\u0440\u0430\u0437\u0438\u043b\u0430\u0441\u044c \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u043e\u043c \u0432\u043e\u043a\u0440\u0443\u0433 Docker. \u0412\u0441\u043a\u043e\u0440\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438, \u0447\u0442\u043e GKE \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e. \u0411\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b Jenkins \u0434\u043b\u044f CI \u0438 Quay \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f Jenkins, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 push&#8217;\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 GKE.<\/p>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0410\u043b\u0438\u0441\u0430 \u0438 \u0411\u043e\u0431 \u0440\u0430\u0437\u043e\u0447\u0430\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438 \u0435\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u0438 \u043d\u0430 \u0431\u0438\u0437\u043d\u0435\u0441. \u0412\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0435 \u043f\u043e\u0432\u044b\u0441\u0438\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0434\u0435\u044f\u043b\u0430\u0441\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u0418\u043d\u043e\u0433\u0434\u0430 deployment&#8217;\u044b \u043b\u043e\u043c\u0430\u043b\u0438\u0441\u044c, \u0438 \u0431\u044b\u043b\u043e \u043d\u0435\u044f\u0441\u043d\u043e, \u0432\u0438\u043d\u043e\u0432\u0430\u0442\u044b \u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430. \u0422\u0430\u043a\u0436\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0442\u044f\u0436\u0435\u043b\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432. \u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0431\u0430\u0440\u0434\u0430\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u0410\u043b\u0438\u0441\u0430 \u0431\u043e\u044f\u043b\u0430\u0441\u044c, \u0447\u0442\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u0437\u0440\u0435\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f). \u0411\u043e\u0431 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432, \u043f\u043b\u043e\u0445\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430?<\/p>\n<p><b>Pastaj ata m\u00ebsuan rreth GitOps. Ky zgjidhje doli t\u00eb ishte pik\u00ebrisht ajo q\u00eb u nevojitej p\u00ebr t\u00eb avancuar me besim.<\/b><\/p>\n<p>Alice dhe Bob kishin d\u00ebgjuar p\u00ebr disa vite p\u00ebr proceset e bazuara n\u00eb Git, DevOps dhe infrastructure as code. Ve\u00e7oria e GitOps \u00ebsht\u00eb se ai sjell nj\u00eb s\u00ebr\u00eb praktikash m\u00eb t\u00eb mira \u2014 kategorike dhe normuese \u2014 p\u00ebr implementimin e k\u00ebtyre ideve n\u00eb kontekstin e Kubernetes. Ky tem\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/search?q=gitops&amp;src=typd\">u ngrit disa her\u00eb<\/a><\/noindex>, p\u00ebrfshir\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-high-velocity-cicd-for-kubernetes\">blogun e Weaveworks<\/a><\/noindex>.<\/p>\n<p>Family Insurance vendos t\u00eb implementoj\u00eb GitOps. Tani kompania ka nj\u00eb model t\u00eb automatizuar operimi, t\u00eb p\u00ebrputhsh\u00ebm me Kubernetes dhe q\u00eb kombinon <i>\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c<\/i> me <i>me stabilitetin<\/i>, pasi ata:<\/p>\n<ul>\n<li> zbuluan se produktiviteti i ekipit u dyfishua dhe askush nuk po shp\u00ebrthehet k\u00ebshtu.<\/li>\n<li> ndaluan suportin p\u00ebr skriptet. N\u00eb vend t\u00eb k\u00ebsaj, ata tani mund t\u00eb p\u00ebrqendrohen n\u00eb funksionalitete t\u00eb reja dhe t\u00eb p\u00ebrmir\u00ebsojn\u00eb metodat inxhinierike \u2014 p\u00ebr shembull, t\u00eb implementojn\u00eb l\u00ebshime t\u00eb kanarinave dhe t\u00eb p\u00ebrmir\u00ebsojn\u00eb testimin;<\/li>\n<li> p\u00ebrmir\u00ebsuan procesin e shp\u00ebrndarjes \u2014 tani ai rrall\u00eb d\u00ebshton;<\/li>\n<li> \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c deployment&#8217;\u044b \u043f\u043e\u0441\u043b\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u0431\u043e\u0435\u0432 \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430;<\/li>\n<li> fituan m\u00eb<i>o<\/i>shum\u00eb besim n\u00eb sistemet e dor\u00ebzimit. Alisa dhe Bobi zbuluan se mund t\u00eb ndanin ekipin n\u00eb grupe q\u00eb merren me mikrosh\u00ebrbime dhe punojn\u00eb paralelisht;<\/li>\n<li> mund t\u00eb b\u00ebjn\u00eb nga 30-50 ndryshime n\u00eb projekt \u00e7do dit\u00eb me p\u00ebrpjekjet e \u00e7do grupi dhe t\u00eb provojn\u00eb teknika t\u00eb reja;<\/li>\n<li> \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u044e\u0442 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043d\u043e\u0432\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 production \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e pull request&#8217;\u043e\u0432 \u0443\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432;<\/li>\n<li> leht\u00eb kalojn\u00eb auditet e SOC2 <i>(p\u00ebr t'u p\u00ebrputhur me k\u00ebrkesat e sh\u00ebrbimeve p\u00ebr menaxhimin e sigurt t\u00eb t\u00eb dh\u00ebnave; lexoni m\u00eb shum\u00eb, p\u00ebr shembull, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.imperva.com\/learn\/data-security\/soc-2-compliance\/\">k\u00ebtu<\/a><\/noindex> \u2014 sh\u00ebnim i p\u00ebrkthyesit.)<\/i>.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00c7far\u00eb ndodhi?<\/h3>\n<p>\nGitOps \u00ebsht\u00eb dy gj\u00ebra:<\/p>\n<ol>\n<li> Nj\u00eb model operimi p\u00ebr Kubernetes dhe cloud native. Ai ofron nj\u00eb set praktikash m\u00eb t\u00eb mira p\u00ebr shp\u00ebrndarjen, menaxhimin dhe monitorimin e klaster\u00ebve dhe aplikacioneve t\u00eb mbledhura n\u00eb kontejner\u00eb. Nj\u00eb p\u00ebrkufizim elegant n\u00eb form\u00ebn <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/vitorsilva\/status\/999978906903080961\">e nj\u00eb slide.<\/a><\/noindex> nga <noindex><a rel=\"nofollow\" href=\"https:\/\/2018.agilept.org\/speaker_luis_faceira.html\">Luis Faceira<\/a><\/noindex>:\n<\/li>\n<li> Nj\u00eb rrug\u00eb p\u00ebr t\u00eb krijuar nj\u00eb mjedis t\u00eb orientuar ndaj zhvilluesve p\u00ebr menaxhimin e aplikacioneve. Ne p\u00ebrdorim fluksin e pun\u00ebs Git si p\u00ebr operimin ashtu edhe p\u00ebr zhvillimin. Vini re se nuk b\u00ebhet fjal\u00eb vet\u00ebm p\u00ebr Git push, por p\u00ebr organizimin e t\u00eb gjith\u00eb grupit t\u00eb mjeteve CI\/CD dhe UI\/UX.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Nj\u00eb fjal\u00eb p\u00ebr Git<\/h3>\n<p>\n\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043d\u0430 Git \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c, \u043c\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0438\u0445. \u041f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0435\u0442\u0432\u044f\u043c\u0438 \u0438 pull request&#8217;\u0430\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u043d\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439, \u043d\u043e \u043f\u043b\u044e\u0441\u044b \u0441\u0442\u043e\u044f\u0442 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439. \u0412\u043e\u0442 <noindex><a rel=\"nofollow\" href=\"https:\/\/codeburst.io\/trunk-based-development-vs-git-flow-a0212a6cae64\">artikull i mir\u00eb<\/a><\/noindex> p\u00ebr fillimin.<\/p>\n<h2>Si funksionon Kubernetes<\/h2>\n<p>\nN\u00eb historin\u00eb ton\u00eb, Alisa dhe Bobi iu drejtuan GitOps, pasi punuan p\u00ebr nj\u00eb koh\u00eb me Kubernetes. Me t\u00eb v\u00ebrtet\u00eb, GitOps \u00ebsht\u00eb ngusht\u00ebsisht i lidhur me Kubernetes \u2014 \u00ebsht\u00eb nj\u00eb model operimi p\u00ebr infrastruktur\u00ebn dhe aplikacionet q\u00eb mb\u00ebshteten n\u00eb Kubernetes.<\/p>\n<h3>\u00c7far\u00eb i ofron Kubernetes p\u00ebrdoruesve?<\/h3>\n<p>\nK\u00ebtu jan\u00eb disa nga mund\u00ebsit\u00eb kryesore:<\/p>\n<ol>\n<li> N\u00eb modelin e Kubernetes, gjith\u00e7ka mund t\u00eb p\u00ebrshkruhet n\u00eb nj\u00eb form\u00eb deklarative.<\/li>\n<li> API-serveri i Kubernetes pranon k\u00ebt\u00eb deklarat\u00eb si input dhe pastaj vazhdimisht p\u00ebrpiqet ta sjell\u00eb klasterin n\u00eb gjendjen e p\u00ebrshkruar n\u00eb deklarat\u00eb.<\/li>\n<li> Deklaratat mjaftojn\u00eb p\u00ebr t\u00eb p\u00ebrshkruar dhe menaxhuar nj\u00eb gam\u00eb t\u00eb gjer\u00eb ngarkesash pune \u2014 \"aplikacione\".<\/li>\n<li> Si rezultat, ndryshimet n\u00eb aplikacion dhe klaster ndodhin nga:\n<ul>\n<li> ndryshime n\u00eb imazhet e kontejner\u00ebve;<\/li>\n<li> ndryshime n\u00eb specifikimin deklarativ;<\/li>\n<li> gabimet n\u00eb mjedis \u2014 p\u00ebr shembull, r\u00ebniet e kontejner\u00ebve.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3>Aft\u00ebsit\u00eb e shk\u00eblqyera t\u00eb konvergjenc\u00ebs s\u00eb Kubernetes<\/h3>\n<p>\nKur nj\u00eb administrator b\u00ebn ndryshime n\u00eb konfigurim, orkestratori i Kubernetes do t'i aplikoj\u00eb ato n\u00eb klaster derisa gjendja e tij <i>t\u00eb afrohet me konfigurimin e ri.<\/i>. \u042d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 Kubernetes \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Custom Resource Definitions (CRDs). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 deployment&#8217;\u044b Kubernetes \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0447\u0443\u0434\u0435\u0441\u043d\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438:<\/p>\n<ul>\n<li> <b>Automatizimi<\/b>: p\u00ebrdit\u00ebsimet e Kubernetes ofrojn\u00eb nj\u00eb mekaniz\u00ebm p\u00ebr automatizimin e procesit t\u00eb aplikimit t\u00eb ndryshimeve n\u00eb m\u00ebnyr\u00eb t\u00eb sakt\u00eb dhe me koh\u00eb.<\/li>\n<li> <b>Konvergjenca<\/b>: Kubernetes do t\u00eb vazhdoj\u00eb t\u00eb p\u00ebrpiqet p\u00ebr p\u00ebrdit\u00ebsime deri n\u00eb arritjen e suksesit.<\/li>\n<li> <b>Idempotentizmi<\/b>: rip\u00ebrs\u00ebritjet e konvergjenc\u00ebs sjellin t\u00eb nj\u00ebjtin rezultat.<\/li>\n<li> <b>Determinizmi<\/b>: n\u00eb kushte t\u00eb mjaftueshme, gjendja e t\u00eb p\u00ebrdit\u00ebsuarit t\u00eb klasterit varet vet\u00ebm nga gjendja e d\u00ebshiruar.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Si funksionon GitOps<\/h2>\n<p>\nNe m\u00ebsuam mjaft p\u00ebr Kubernetes p\u00ebr t\u00eb shpjeguar principet e funksionimit t\u00eb GitOps.<\/p>\n<p>Le t\u00eb kthehemi te ekipet e Family Insurance, t\u00eb lidhura me mikrosh\u00ebrbimet. \u00c7far\u00eb duhet t\u00eb b\u00ebjn\u00eb zakonisht ato? Shikoni list\u00ebn m\u00eb posht\u00eb (n\u00ebse disa pika n\u00eb t\u00eb duken t\u00eb \u00e7uditshme ose t\u00eb panjohura \u2014 ju lutemi, prisni pak me kritikat dhe mbeteni me ne). K\u00ebto jan\u00eb thjesht shembuj t\u00eb flukseve t\u00eb pun\u00ebs me baz\u00eb Jenkins. Ka edhe shum\u00eb procese t\u00eb tjera kur punoni me mjete t\u00eb tjera.<\/p>\n<p>E r\u00ebnd\u00ebsishmja \u00ebsht\u00eb, ne shohim se \u00e7do p\u00ebrdit\u00ebsim p\u00ebrfundon me ndryshime n\u00eb skedar\u00ebt e konfigurimit dhe depozitat Git. K\u00ebto ndryshime n\u00eb Git \u00e7ojn\u00eb n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb q\u00eb \"operatori GitOps\" p\u00ebrdit\u00ebson klasterin:<\/p>\n<p>1. Fluksi i pun\u00ebs: \"<i>Nd\u00ebrtimi Jenkins \u2014 dega master<\/i>\u00bb.<br \/>\nLista e detyrave:<\/p>\n<ul>\n<li> Jenkins push&#8217;\u0438\u0442 \u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u0432 Quay;<\/li>\n<li> Jenkins push&#8217;\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 Helm-\u0447\u0430\u0440\u0442\u044b \u0432 \u0431\u0430\u043a\u0435\u0442 master-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430;<\/li>\n<li> Funksioni i rethit kopjon konfigurimin dhe diagramet nga bucket-i i master-it n\u00eb depozit\u00ebn Git master;<\/li>\n<li> Operatori GitOps p\u00ebrdit\u00ebson klasterin.<\/li>\n<\/ul>\n<p>\n2. <i>Nd\u00ebrtimi Jenkins \u2014 dega e l\u00ebshimit ose hotfix<\/i>:<\/p>\n<ul>\n<li> Jenkins push&#8217;\u0438\u0442 \u043d\u0435\u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u0432 Quay;<\/li>\n<li> Jenkins push&#8217;\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 Helm-\u0447\u0430\u0440\u0442\u044b \u0432 \u0431\u0430\u043a\u0435\u0442 staging-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430;<\/li>\n<li> Funksioni n\u00eb re kopjon konfigurimin dhe diagramet nga depoja staging n\u00eb Git-repozitorin\u00eb staging;<\/li>\n<li> Operatori GitOps p\u00ebrdit\u00ebson klasterin.<\/li>\n<\/ul>\n<p>\n3. <i>Konstruksioni Jenkins \u2014 dega develop ose feature<\/i>:<\/p>\n<ul>\n<li> Jenkins push&#8217;\u0438\u0442 \u043d\u0435\u0442\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u0432 Quay;<\/li>\n<li> Jenkins push&#8217;\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 Helm-\u0447\u0430\u0440\u0442\u044b \u0432 \u0431\u0430\u043a\u0435\u0442 develop-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430;<\/li>\n<li> Funksioni n\u00eb re kopjon konfigurimin dhe diagramet nga depoja develop n\u00eb Git-repozitorin\u00eb develop;<\/li>\n<li>Operatori GitOps p\u00ebrdit\u00ebson klasterin.<\/li>\n<\/ul>\n<p>\n4. <i>Shtimi i klientit t\u00eb ri<\/i>:<\/p>\n<ul>\n<li> Menaxheri ose administratori (LCM\/ops) th\u00ebrret Gradle p\u00ebr shp\u00ebrndarjen e par\u00eb dhe konfigurimin e balancuesve t\u00eb ngarkes\u00ebs (NLB);<\/li>\n<li> LCM\/ops \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 deployment&#8217;\u0430 \u043a \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c;<\/li>\n<li> Operatori GitOps p\u00ebrdit\u00ebson klasterin.<\/li>\n<\/ul>\n<p><\/p>\n<h3>P\u00ebrshkrimi i shkurt\u00ebr t\u00eb GitOps<\/h3>\n<p><\/p>\n<ol>\n<li> P\u00ebrshkruani gjendjen e d\u00ebshiruar t\u00eb gjith\u00eb sistemit, duke p\u00ebrdorur specifikime deklarative p\u00ebr \u00e7do mjedis (n\u00eb historin\u00eb ton\u00eb, ekipi i Bobit p\u00ebrcakton t\u00eb gjith\u00eb konfigurimin e sistemit n\u00eb Git).\n<ul>\n<li> Git-repozitorie \u00ebsht\u00eb burimi i vet\u00ebm i t\u00eb v\u00ebrtet\u00ebs n\u00eb lidhje me gjendjen e d\u00ebshiruar t\u00eb gjith\u00eb sistemit.<\/li>\n<li> T\u00eb gjitha ndryshimet n\u00eb gjendjen e d\u00ebshiruar realizohen p\u00ebrmes angazhimeve n\u00eb Git.<\/li>\n<li> T\u00eb gjith\u00eb parametrat e d\u00ebshiruar t\u00eb klasterit jan\u00eb gjithashtu t\u00eb v\u00ebzhguesh\u00ebm brenda vet\u00eb klasterit. K\u00ebshtu, ne mund t\u00eb p\u00ebrcaktojm\u00eb n\u00ebse gjendja e d\u00ebshiruar dhe e v\u00ebzhguar jan\u00eb n\u00eb p\u00ebrputhje (konvergojn\u00eb, <i>converge<\/i>) ose ndryshojn\u00eb (divergojn\u00eb, <i>diverge<\/i>) gjendja e d\u00ebshiruar dhe e v\u00ebzhguar.<\/li>\n<\/ul>\n<\/li>\n<li> N\u00ebse gjendja e d\u00ebshiruar dhe e v\u00ebzhguar ndryshon, at\u00ebher\u00eb:\n<ul>\n<li> Ekziston nj\u00eb mekaniz\u00ebm konvergjence, i cili, nj\u00ebher\u00eb e nj\u00eb koh\u00eb, do t\u00eb sinkronizoj\u00eb automatikisht gjendjen e synuar dhe gjendjen e v\u00ebzhguar. Brenda klasterit, kjo merret nga Kubernetes.<\/li>\n<li> Procesi niset menj\u00ebher\u00eb me njoftimin \"ndryshimi \u00ebsht\u00eb angazhuar\".<\/li>\n<li> Pas nj\u00eb intervali t\u00eb caktuar kohor, mund t\u00eb d\u00ebrgohet nj\u00eb njoftim \"dif\", n\u00ebse gjendjet ndryshojn\u00eb.<\/li>\n<\/ul>\n<\/li>\n<li> K\u00ebshtu, t\u00eb gjitha angazhimet n\u00eb Git shkaktuan p\u00ebrdit\u00ebsime verifikuesh\u00ebm dhe idempotente n\u00eb klaster.\n<ul>\n<li>Rivendosja \u00ebsht\u00eb nj\u00eb konvergjenc\u00eb n\u00eb nj\u00eb gjendje t\u00eb d\u00ebshiruar m\u00eb par\u00eb.<\/li>\n<\/ul>\n<\/li>\n<li> Konvergjenca \u00ebsht\u00eb p\u00ebrfundimtare. T\u00eb dh\u00ebnat p\u00ebr k\u00ebt\u00eb tregojn\u00eb:\n<ul>\n<li> Mungesa e njoftimeve \"dif\" p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohore.<\/li>\n<li> Njoftimi \"konverguar\" (p.sh., webhook, ngjarje Git writeback).<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3>\u00c7far\u00eb \u00ebsht\u00eb divergjenca?<\/h3>\n<p>\nP\u00ebr ta p\u00ebrs\u00ebritur p\u00ebrs\u00ebri: <i>t\u00eb gjitha pronat e d\u00ebshiruara t\u00eb klasterit duhet t\u00eb jen\u00eb t\u00eb v\u00ebzhgueshme brenda klasterit<\/i>.<\/p>\n<p>Disa shembuj t\u00eb divergjenc\u00ebs:<\/p>\n<ul>\n<li> Ndryshimi n\u00eb skedarin e konfigurimit p\u00ebr shkak t\u00eb bashkimit t\u00eb deg\u00ebve n\u00eb Git.<\/li>\n<li> Ndryshimi n\u00eb skedarin e konfigurimit p\u00ebr shkak t\u00eb angazhimit n\u00eb Git, t\u00eb b\u00ebr\u00eb nga nj\u00eb klient GUI.<\/li>\n<li> Shum\u00eb ndryshime n\u00eb gjendjen e d\u00ebshiruar p\u00ebr shkak t\u00eb PR n\u00eb Git me nd\u00ebrtimin e m\u00ebvonsh\u00ebm t\u00eb imazhit t\u00eb kontejnerit dhe ndryshimeve n\u00eb konfigurim.<\/li>\n<li> Ndryshimi i gjendjes s\u00eb klasterit p\u00ebr shkak t\u00eb gabimit, konfliktit t\u00eb burimeve, q\u00eb \u00e7on n\u00eb \"sjellje t\u00eb keqe\", ose thjesht devijimit t\u00eb rast\u00ebsish\u00ebm nga gjendja origjinale.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00c7far\u00eb paraqet nj\u00eb mekaniz\u00ebm konvergjence?<\/h3>\n<p>\nDisa shembuj:<\/p>\n<ul>\n<li> P\u00ebr kontejner\u00ebt dhe klaster\u00ebt, mekanizmi i konvergjenc\u00ebs ofrohet nga Kubernetes.<\/li>\n<li> I nj\u00ebjti mekaniz\u00ebm mund t\u00eb p\u00ebrdoret p\u00ebr menaxhimin e aplikacioneve dhe strukturave t\u00eb bazuara n\u00eb Kubernetes (p.sh., Istio dhe Kubeflow).<\/li>\n<li> \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u043c\u0435\u0436\u0434\u0443 Kubernetes, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 Git&#8217;\u043e\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/weaveworks\/flux\">operatori GitOps Weave Flux<\/a><\/noindex>, q\u00eb \u00ebsht\u00eb pjes\u00eb e <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.weave.works\/\">Weave Cloud<\/a><\/noindex>.<\/li>\n<li> P\u00ebr makinat baz\u00eb, mekanizmi i konvergjenc\u00ebs duhet t\u00eb jet\u00eb deklarativ dhe autonom. Nga p\u00ebrvoja jon\u00eb, mund t\u00eb themi se <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c\">Terraform<\/a><\/noindex> \u00ebsht\u00eb m\u00eb af\u00ebr k\u00ebsaj p\u00ebrkufizimi, megjithat\u00eb, k\u00ebrkon akoma kontroll nga nj\u00eb person. N\u00eb k\u00ebt\u00eb kuptim, GitOps zgjeron traditat e Infrastructure as Code.<\/li>\n<\/ul>\n<p>\nGitOps bashkon Git me nj\u00eb mekaniz\u00ebm t\u00eb shk\u00eblqyer konvergjence t\u00eb Kubernetes, duke ofruar nj\u00eb model p\u00ebr eksploitimin.<\/p>\n<p>GitOps na lejon t\u00eb deklarojm\u00eb: <i>automatik\u00eb dhe kontrolli u n\u00ebnshtruan vet\u00ebm atyre sistemeve q\u00eb mund t\u00eb p\u00ebrshkruhen dhe v\u00ebzhgohen<\/i>.<\/p>\n<h3>GitOps \u00ebsht\u00eb p\u00ebr t\u00eb gjith\u00eb stakun cloud native (p.sh., Terraform etj.)<\/h3>\n<p>\nGitOps nuk \u00ebsht\u00eb vet\u00ebm Kubernetes. Ne duam q\u00eb i gjith\u00eb sistemi t\u00eb menaxhohet n\u00eb m\u00ebnyr\u00eb deklarative dhe t\u00eb p\u00ebrdor\u00eb konvergjenc\u00ebn. Nga gjith\u00eb sistemi, ne n\u00ebnkuptojm\u00eb nj\u00eb p\u00ebrmbledhje t\u00eb mjediseve q\u00eb punojn\u00eb me Kubernetes \u2014 p.sh., \"dev cluster 1\", \"produksioni\" etj. N\u00eb \u00e7do mjedis p\u00ebrfshihen makina, klaster\u00eb, aplikacione, si dhe nd\u00ebrfaqet p\u00ebr sh\u00ebrbimet e jashtme q\u00eb ofrojn\u00eb t\u00eb dh\u00ebna, monitorim etj.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Terraform \u0432\u0430\u0436\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b bootstrapping&#8217;\u0430. Kubernetes \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Terraform \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b GitOps \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u044f, \u043b\u0435\u0436\u0430\u0449\u0435\u0433\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 Kubernetes \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430.<\/p>\n<p>Nj\u00eb v\u00ebmendje e madhe i kushtohet aplikimit t\u00eb koncepteve t\u00eb GitOps n\u00eb shtresat mbi Kubernetes. Deri tani, ka zgjidhje t\u00eb tipit GitOps p\u00ebr Istio, Helm, Ksonnet, OpenFaaS dhe Kubeflow, si dhe p\u00ebr shembuj, p\u00ebr Pulumi, q\u00eb krijojn\u00eb nj\u00eb shtres\u00eb p\u00ebr zhvillimin e aplikacioneve p\u00ebr cloud native.<\/p>\n<h2>Kubernetes CI\/CD: krahasimi i GitOps me qasje t\u00eb tjera<\/h2>\n<p>\nSi\u00e7 u tha, GitOps \u00ebsht\u00eb dy gj\u00ebra:<\/p>\n<ol>\n<li> Nj\u00eb model eksploitimi p\u00ebr Kubernetes dhe cloud native, i p\u00ebrshkruar m\u00eb sip\u00ebr.<\/li>\n<li> Nj\u00eb rrug\u00eb p\u00ebr organizimin e nj\u00eb ambienti t\u00eb orientuar ndaj zhvilluesve p\u00ebr menaxhimin e aplikacioneve.<\/li>\n<\/ol>\n<p>\n\u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 GitOps \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Git push&#8217;\u0435\u0439. \u041d\u0430\u043c \u043e\u043d \u0442\u043e\u0436\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435: \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 CI\/CD-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b.<\/p>\n<h3>GitOps siguron shp\u00ebrndarje t\u00eb vazhdueshme (CD) n\u00ebn Kubernetes<\/h3>\n<p>\nGitOps ofron nj\u00eb mekaniz\u00ebm p\u00ebr shp\u00ebrndarje t\u00eb vazhdueshme q\u00eb eliminon nevoj\u00ebn p\u00ebr \"sisteme menaxhimi t\u00eb shp\u00ebrndarjeve\" t\u00eb ve\u00e7anta. E gjith\u00eb pun\u00ebn e b\u00ebn Kubernetes.<\/p>\n<ul>\n<li> \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 Git&#8217;\u0435. \u042d\u0442\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u00ab\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u00bb \u0437\u0430\u0442\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u0430\u043c\u0438\u043c Kubernetes \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f.<\/li>\n<li> P\u00ebr shkak t\u00eb natyr\u00ebs s\u00eb pun\u00ebs s\u00eb Kubernetes, k\u00ebto p\u00ebrdit\u00ebsime jan\u00eb konvergjente. Kjo siguron nj\u00eb mekaniz\u00ebm p\u00ebr shp\u00ebrndarje t\u00eb vazhdueshme, ku t\u00eb gjitha p\u00ebrdit\u00ebsimet jan\u00eb atomike.<\/li>\n<li> Sh\u00ebnim: <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.weave.works\/\">Weave Cloud<\/a><\/noindex> ofron nj\u00eb operator GitOps, q\u00eb integron Git dhe Kubernetes dhe lejon ekzekutimin e CD duke p\u00ebrputhur gjendjen e d\u00ebshiruar me at\u00eb aktuale t\u00eb klasterit.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Pa kubectl dhe skenar\u00eb<\/h3>\n<p>\nDuhet t\u00eb shmangen p\u00ebrdorimi i Kubectl p\u00ebr p\u00ebrdit\u00ebsimin e klasterit, sidomos skenar\u00ebt p\u00ebr grupimin e komandave kubectl. N\u00eb vend t\u00eb k\u00ebsaj, me an\u00eb t\u00eb pipeline t\u00eb GitOps, p\u00ebrdoruesi mund t\u00eb p\u00ebrdit\u00ebsoj\u00eb klasterin e tij Kubernetes p\u00ebrmes Git.<\/p>\n<p>P\u00ebrpar\u00ebsit\u00eb p\u00ebrfshijn\u00eb:<\/p>\n<ol>\n<li> <b>Sakt\u00ebsia<\/b>. Nj\u00eb grup p\u00ebrdit\u00ebsimesh mund t\u00eb aplikohet, t\u00eb konvergoj\u00eb dhe p\u00ebrfundimisht t\u00eb validizohet, duke na afruar me q\u00ebllimin e shp\u00ebrndarjes atomike. N\u00eb an\u00ebn tjet\u00ebr, p\u00ebrdorimi i skripteve nuk jep asnj\u00eb garanci konvergjence (m\u00eb shum\u00eb p\u00ebr k\u00ebt\u00eb m\u00eb posht\u00eb).<\/li>\n<li> <b>Siguria<\/b>. <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/kelseyhightower\/status\/939003832805179392?lang=en\">Citoj<\/a><\/noindex> Kelsey Hightower: \"Kufizoni aksesin n\u00eb klasterin Kubernetes p\u00ebr mjetet e automatizimit dhe administrator\u00ebt q\u00eb kan\u00eb p\u00ebr detyr\u00eb ta rregullojn\u00eb ose ta mbajn\u00eb n\u00eb pun\u00eb.\" Shih gjithashtu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-compliance-and-secure-cicd\">postimin tim<\/a><\/noindex> p\u00ebr sigurin\u00eb dhe p\u00ebrputhshm\u00ebrin\u00eb me standardet teknike, si dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@vesirin\/how-i-gained-commit-access-to-homebrew-in-30-minutes-2ae314df03ab\">artikullin p\u00ebr hackimin e Homebrew<\/a><\/noindex> p\u00ebrmes vjedhjes s\u00eb kredencialeve nga nj\u00eb skenar Jenkins i heshtur.<\/li>\n<li> <b>P\u00ebrvoja e p\u00ebrdoruesit<\/b>. Kubectl zbulohet mekanika e modelit objektiv t\u00eb Kubernetes, i cili \u00ebsht\u00eb mjaft kompleks. Idealisht, p\u00ebrdoruesit duhet t\u00eb nd\u00ebrveprojn\u00eb me sistemin n\u00eb nj\u00eb nivel m\u00eb t\u00eb lart\u00eb abstraksioni. K\u00ebtu do t\u00eb citoj p\u00ebrs\u00ebri Kelsey dhe rekomandoj t\u00eb shikoni <noindex><a rel=\"nofollow\" href=\"http:\/\/superuser.openstack.org\/articles\/kubernetes-boring\/\">nj\u00eb p\u00ebrmbledhje t\u00eb till\u00eb<\/a><\/noindex>.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Dallimi mes CI dhe CD<\/h3>\n<p>\nGitOps p\u00ebrmir\u00ebson modelet ekzistuese t\u00eb CI\/CD.<\/p>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 CI-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 CI-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u043e\u0432. \u041e\u043d\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f build, test, merge to trunk \u0438 \u0442. \u0434. CI-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u043c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u043c\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u043c\u0438. \u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u0431\u043b\u0430\u0437\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 Kubernetes \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0434\u043b\u044f push&#8217;\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e, \u0438 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443.<\/p>\n<p>CI duhet t\u00eb p\u00ebrdoret p\u00ebr t\u00eb b\u00ebr\u00eb p\u00ebrdit\u00ebsime n\u00eb trunk, dhe klasteri Kubernetes duhet ta ndryshoj\u00eb veten n\u00eb baz\u00eb t\u00eb k\u00ebtyre p\u00ebrdit\u00ebsimeve p\u00ebr t\u00eb menaxhuar CD \"brenda\". Ne e quajm\u00eb k\u00ebt\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-compliance-and-secure-cicd\">model t\u00ebrheq\u00ebs p\u00ebr CD<\/a><\/noindex>, n\u00eb kund\u00ebrshtim me modelin e CI push. CD \u00ebsht\u00eb pjes\u00eb e <i>orkestrimit n\u00eb koh\u00eb<\/i>.<\/p>\n<h3>Pse server\u00ebt CI nuk duhet t\u00eb kryejn\u00eb CD p\u00ebrmes p\u00ebrdit\u00ebsimeve t\u00eb drejtp\u00ebrdrejta n\u00eb Kubernetes<\/h3>\n<p>\n<i>Mos e p\u00ebrdorni serverin CI p\u00ebr t\u00eb orkestruar p\u00ebrdit\u00ebsime t\u00eb drejtp\u00ebrdrejta n\u00eb Kubernetes si nj\u00eb grup detyrash CI. Kjo \u00ebsht\u00eb nj\u00eb anti-model, p\u00ebr t\u00eb cilin ne <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/kubernetes-anti-patterns-let-s-do-gitops-not-ciops\">vazhduam t\u00eb flasim<\/a><\/noindex> n\u00eb blogun ton\u00eb.<\/i><\/p>\n<p>Le t\u00eb kthehemi te Alisa dhe Boba.<\/p>\n<p>Me \u00e7far\u00eb problemeve jan\u00eb p\u00ebrballur ata? Serveri CI i Bobit aplikon ndryshimet n\u00eb klaster, por n\u00ebse gjat\u00eb procesit ai d\u00ebshtoi, Bobi nuk do t\u00eb dij\u00eb n\u00eb \u00e7far\u00eb gjendjeje \u00ebsht\u00eb (apo duhet t\u00eb jet\u00eb) klasteri dhe si ta rregulloj\u00eb at\u00eb. E nj\u00ebjta gj\u00eb \u00ebsht\u00eb e v\u00ebrtet\u00eb dhe n\u00eb rast suksesi.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0411\u043e\u0431\u0430 \u0441\u043e\u0431\u0440\u0430\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0438 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u043b\u0430 \u0441\u0432\u043e\u0438 deployment&#8217;\u044b, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0431\u0440\u0430\u0437 (\u0432\u0441\u0435 \u044d\u0442\u043e \u0438\u0437 CI-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430).<\/p>\n<p>N\u00ebse imazhi ngarkohet normalisht, por pipeline d\u00ebshtoi, ekipi do t\u00eb duhet t\u00eb zbuloj\u00eb:<\/p>\n<ul>\n<li> A u shp\u00ebrndan p\u00ebrdit\u00ebsimi?<\/li>\n<li> A po ekzekutojm\u00eb nj\u00eb nd\u00ebrtim t\u00eb ri? A do t\u00eb \u00e7oj\u00eb kjo n\u00eb efekte an\u00ebsore t\u00eb panevojshme - me mund\u00ebsin\u00eb e marrjes s\u00eb dy nd\u00ebrtimeve t\u00eb t\u00eb nj\u00ebjtit imazh t\u00eb pandryshuar? <\/li>\n<li> A duhet t\u00eb presim nj\u00eb tjet\u00ebr p\u00ebrdit\u00ebsim para se t\u00eb ekzekutojm\u00eb nd\u00ebrtimin?<\/li>\n<li> \u00c7far\u00eb sakt\u00ebsisht shkoi keq? Cil\u00ebt hapa duhet t\u00eb p\u00ebrs\u00ebriten (dhe cil\u00ebt prej tyre mund t\u00eb p\u00ebrs\u00ebriten me siguri)?<\/li>\n<\/ul>\n<p>\n<i>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 Git&#8217;\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0411\u043e\u0431\u0430 \u043d\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438. \u041e\u043d\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043e\u0433\u0443\u0442 \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f \u0441 push&#8217;\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0430, \u0441 \u0442\u0435\u0433\u043e\u043c \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u043c-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c; \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u0441\u0435 \u0436\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043b\u0438\u0436\u0435 \u043a \u044f\u0432\u043d\u043e\u043c\u0443 \u0432\u0441\u0435-\u0438\u043b\u0438-\u043d\u0438\u0447\u0435\u0433\u043e.<\/i><\/p>\n<p>P\u00ebr t\u00eb p\u00ebrmbledhur, ja pse server\u00ebt CI nuk duhet t\u00eb merren me CD:<\/p>\n<ul>\n<li> Skripti i p\u00ebrdit\u00ebsimit nuk \u00ebsht\u00eb gjithmon\u00eb i p\u00ebrcaktuar; \u00ebsht\u00eb e leht\u00eb p\u00ebr t\u00eb b\u00ebr\u00eb gabime.<\/li>\n<li> Server\u00ebt CI nuk konvergojn\u00eb n\u00eb modelin deklarativ t\u00eb klasterit.<\/li>\n<li> Eshte e v\u00ebshtir\u00eb t\u00eb garantosh idempotenc\u00ebn. P\u00ebrdoruesit duhet t\u00eb kuptojn\u00eb semantik\u00ebn e thell\u00eb t\u00eb sistemit.<\/li>\n<li> \u00ebsht\u00eb m\u00eb e v\u00ebshtir\u00eb t\u00eb kryhet rikuperimi pas nj\u00eb d\u00ebshtimi t\u00eb pjessh\u00ebm.<\/li>\n<\/ul>\n<p>\n<i>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e Helm&#8217;e: \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Helm, \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441 GitOps-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/managing-helm-releases-the-gitops-way\">Flux-Helm<\/a><\/noindex>. Kjo do t\u00eb ndihmoj\u00eb n\u00eb sigurimin e konvergjenc\u00ebs. N\u00eb vetvete, Helm nuk \u00ebsht\u00eb as determinist, as atomic.<\/i><\/p>\n<h2>GitOps si m\u00ebnyra m\u00eb e mir\u00eb p\u00ebr t\u00eb realizuar Continuous Delivery p\u00ebr Kubernetes.<\/h2>\n<p>\nEkipa e Alice dhe Bob po implementon GitOps dhe zbulon se \u00ebsht\u00eb shum\u00eb m\u00eb e leht\u00eb t\u00eb punosh me produktet software, duke mbajtur nj\u00eb performanc\u00eb t\u00eb lart\u00eb dhe stabilitet. Le t\u00eb p\u00ebrfundojm\u00eb k\u00ebt\u00eb artikull me ilustrime q\u00eb tregojn\u00eb se si duket qasja e tyre e re. Mbani mend, ne po flasim kryesisht p\u00ebr aplikacione dhe sh\u00ebrbime, megjithat\u00eb GitOps mund t\u00eb p\u00ebrdoret p\u00ebr menaxhimin e t\u00ebr\u00eb platform\u00ebs.<\/p>\n<h3>Modeli i operimit p\u00ebr Kubernetes.<\/h3>\n<p>\nShikoni diagramin e m\u00ebposht\u00ebm. Ai paraqet Git dhe depot e imazheve t\u00eb konteiner\u00ebve si burime t\u00eb zakonshme p\u00ebr dy ciklet e orkestruar:<\/p>\n<ul>\n<li> Pipeline i integrimit t\u00eb vazhduesh\u00ebm, i cili lexon dhe shkruan skedar\u00eb n\u00eb Git dhe mund t\u00eb azhurnohet depoja e imazheve t\u00eb konteiner\u00ebve.<\/li>\n<li> Pipeline i Runtime GitOps, q\u00eb kombinon deploy-in me menaxhimin dhe v\u00ebzhgimin. Ai lexon dhe shkruan skedar\u00eb n\u00eb Git dhe mund t\u00eb ngarkoj\u00eb imazhe konteiner\u00ebsh.<\/li>\n<\/ul>\n<h3>Cilat jan\u00eb p\u00ebrfundimet kryesore?<\/h3>\n<p><\/p>\n<ol>\n<li> <b>Ndara e problemeve<\/b>: Vini re se t\u00eb dy pipeline-t mund t\u00eb shk\u00ebmbejn\u00eb t\u00eb dh\u00ebna duke azhurnuar vet\u00ebm Git-in ose depot e imazheve. N\u00eb fjal\u00eb t\u00eb tjera, ekziston nj\u00eb firewall n\u00eb mes CI dhe ambientit t\u00eb runtime. Ne e quajm\u00eb k\u00ebt\u00eb \"firewall t\u00eb pavendosshm\u00ebris\u00eb\" <i>(immutability firewall)<\/i>, pasi t\u00eb gjitha azhurnimet e depove krijojn\u00eb versione t\u00eb reja. P\u00ebr informacion shtes\u00eb mbi k\u00ebt\u00eb tem\u00eb, ju lutemi referojuni faqeve 72-87. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/weaveworks\/continuous-lifecycle-london-2018-event-keynote-97418556\">k\u00ebt\u00eb prezantim<\/a><\/noindex>.<\/li>\n<li> <b>Mund t\u00eb p\u00ebrdoret \u00e7do CI- dhe server Git<\/b>: GitOps punon me \u00e7do komponent. Ju mund t\u00eb vazhdoni t\u00eb p\u00ebrdorni server\u00ebt tuaj t\u00eb preferuar CI dhe Git, depot e imazheve dhe paketat e testimeve. Praktikisht t\u00eb gjitha mjetet e tjera p\u00ebr Continuous Delivery n\u00eb treg k\u00ebrkojn\u00eb CI-\/Git-serverin e tyre ose deposit e imazheve. Kjo mund t\u00eb b\u00ebhet nj\u00eb faktor p\u00ebrcaktues n\u00eb zhvillimin e cloud native. N\u00eb rastin e GitOps, ju mund t\u00eb p\u00ebrdorni mjetet q\u00eb keni zakon.<\/li>\n<li> <b>Ngjarjet si nj\u00eb mjet integrimi<\/b>: Sa her\u00eb q\u00eb t\u00eb dh\u00ebnat n\u00eb Git azhurnohet, Weave Flux (ose operatori Weave Cloud) e informon k\u00ebt\u00eb runtime. \u00c7do her\u00eb q\u00eb Kubernetes pranon nj\u00eb grup ndryshimesh, Git azhurnohet. Kjo siguron nj\u00eb model t\u00eb thjesht\u00eb integrimi p\u00ebr organizimin e proceseve p\u00ebr GitOps, si\u00e7 tregohet m\u00eb posht\u00eb.<\/li>\n<\/ol>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nGitOps ofron garantion e r\u00ebnd\u00ebsishme t\u00eb azhurnimit, e nevojshme p\u00ebr \u00e7do mjet modern CI\/CD:<\/p>\n<ul>\n<li> automatik;<\/li>\n<li> konvergjenc\u00eb;<\/li>\n<li> idempotenc\u00eb;<\/li>\n<li> determiniz\u00ebm.<\/li>\n<\/ul>\n<p>\nKjo \u00ebsht\u00eb e r\u00ebnd\u00ebsishme pasi ofron nj\u00eb model operativ p\u00ebr zhvilluesit n\u00eb fush\u00ebn e cloud native.<\/p>\n<ul>\n<li> \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 runbook&#8217;\u0430 <i>(grupi i procedurave rutinore dhe operacioneve \u2014 sh\u00ebnim i p\u00ebrkthyesit)<\/i>, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 deployment&#8217;\u0443.<\/li>\n<li> N\u00eb menaxhimin e sistemeve cloud native, mjetet p\u00ebr v\u00ebzhgimin jan\u00eb m\u00ebnyra m\u00eb e mir\u00eb p\u00ebr t\u00eb vler\u00ebsuar rezultatet e deployment-eve, n\u00eb m\u00ebnyr\u00eb q\u00eb ekipi i zhvilluesve t\u00eb mund t\u00eb reagoj\u00eb shpejt.<\/li>\n<\/ul>\n<p>\nImagjinoni shum\u00eb klaster\u00eb t\u00eb shp\u00ebrndar\u00eb n\u00eb disa cloud dhe shum\u00eb sh\u00ebrbime me ekipet e tyre dhe planet e tyre t\u00eb deployment-it. GitOps ofron nj\u00eb model t\u00eb invarianc\u00ebs n\u00eb shkall\u00eb p\u00ebr t\u00eb menaxhuar gjith\u00eb k\u00ebt\u00eb pasuri.<\/p>\n<h2>P.S. nga p\u00ebrkthyesi<\/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\/456754\/\">GitOps: krahasimi i metodave Pull dhe Push<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/434160\/\">Prezantojm\u00eb bibliotek\u00ebn kubedog p\u00ebr monitorimin e burimeve Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Zgjerimi dhe plot\u00ebsimi i Kubernetes (p\u00ebrmbledhje dhe video e referatit)<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p class=\"for_users_only_msg\">Vet\u00ebm p\u00ebrdoruesit e regjistruar mund t\u00eb marrin pjes\u00eb n\u00eb anket\u00eb. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Hyni<\/a><\/noindex>, ju lutemi.<\/p>\n<h2 class=\"default-block__polling-title\">A e dinit p\u00ebr GitOps para k\u00ebtyre dy p\u00ebrkthimeve n\u00eb Habr\u00eb?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Po, e dija gjith\u00e7ka<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Vet\u00ebm sip\u00ebrfaq\u00ebsisht<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jo<\/p>\n<\/li>\n<\/ul>\n<p>    35 p\u00ebrdorues votuan. 10 p\u00ebrdorues abstenuan.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043e \u043c\u0435\u0442\u043e\u0434\u0430\u0445 pull \u0438 push \u0432 GitOps \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u043e (\u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435\u0442). \u041f\u043e\u0441\u0435\u043c\u0443 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u0443\u0441\u0442\u044c \u0438 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434\u0438\u0447\u043d\u043e\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438! \u2014 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Weaveworks, \u0433\u043b\u0430\u0432\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35941","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043e \u043c\u0435\u0442\u043e\u0434\u0430\u0445 pull \u0438 push \u0432 GitOps \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u043e (\u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435\u0442). \u041f\u043e\u0441\u0435\u043c\u0443 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u0443\u0441\u0442\u044c \u0438 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434\u0438\u0447\u043d\u043e\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438! \u2014 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Weaveworks, \u0433\u043b\u0430\u0432\u0430\" \/>\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\/chto-zhe-takoe-gitops\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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\u0427\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 GitOps? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043e \u043c\u0435\u0442\u043e\u0434\u0430\u0445 pull \u0438 push \u0432 GitOps \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u043e (\u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435\u0442). \u041f\u043e\u0441\u0435\u043c\u0443 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u0443\u0441\u0442\u044c \u0438 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434\u0438\u0447\u043d\u043e\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438! \u2014 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Weaveworks, \u0433\u043b\u0430\u0432\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/chto-zhe-takoe-gitops\" \/>\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:07:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:07:41+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\u00c7far\u00eb \u00ebsht\u00eb GitOps? | ProHoster","description":"Sh\u00ebnim i p\u00ebrkthyesit: Pas publikimit t\u00eb fundit t\u00eb materialit mbi metodat pull dhe push n\u00eb GitOps, ne pam\u00eb nj\u00eb interes p\u00ebr k\u00ebt\u00eb model n\u00eb p\u00ebrgjith\u00ebsi, por publikimet n\u00eb k\u00ebt\u00eb tem\u00eb n\u00eb gjuh\u00ebn ruse ishin shum\u00eb t\u00eb pakta (n\u00eb Habr\u00eb thjesht nuk ka asnj\u00eb). Prandaj jemi t\u00eb lumtur t'ju ofrojm\u00eb p\u00ebrkthimin e nj\u00eb artikulli tjet\u00ebr \u2014 edhe pse t\u00eb pakt\u00ebn nj\u00eb vit m\u00eb par\u00eb! \u2014 nga kompania Weaveworks, kapitulli","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/chto-zhe-takoe-gitops","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\u0427\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 GitOps? | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043e \u043c\u0435\u0442\u043e\u0434\u0430\u0445 pull \u0438 push \u0432 GitOps \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u043e (\u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435\u0442). \u041f\u043e\u0441\u0435\u043c\u0443 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043f\u0443\u0441\u0442\u044c \u0438 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434\u0438\u0447\u043d\u043e\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438! \u2014 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Weaveworks, \u0433\u043b\u0430\u0432\u0430","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/chto-zhe-takoe-gitops","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:07:41+00:00","article:modified_time":"2019-10-31T19:07:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35941","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-22 01:21:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:53:31","updated":"2026-01-22 01:21:19","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\/35941","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=35941"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/35941\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=35941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=35941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=35941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}