{"id":35594,"date":"2019-10-31T22:05:15","date_gmt":"2019-10-31T19:05:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/gitops-sravnenie-metodov-pull-i-push\/"},"modified":"2019-10-31T22:05:15","modified_gmt":"2019-10-31T19:05:15","slug":"gitops-sravnenie-metodov-pull-i-push","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","title":{"rendered":"GitOps: Pulli ja Pushi meetodite v\u00f5rdlus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>M\u00e4rk. t\u00f5lge.<\/b>: Kubernetes'e kogukonnas on populaarsust kogumas suund nimega GitOps, milles oleme isiklikult veendunud, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/454184\/\">k\u00fclastades<\/a><\/noindex> KubeCon Europe 2019. See termin m\u00f5eldi v\u00e4lja suhteliselt hiljuti <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-operations-by-pull-request\">Weaveworks'i juhi \u2014 Alexis Richardson'i poolt \u2014 ja see t\u00e4hendab arendajatele tuttavate vahendite (esmaj\u00e4rjekorras Git, kust ka nimi) kasutamist operatiivsete \u00fclesannete lahendamiseks. Eelk\u00f5ige r\u00e4\u00e4gime Kubernetes'e haldamisest, salvestades selle konfiguratsioonid Git'isse ja rakendades muudatused automaatselt klastrisse. Kahest l\u00e4henemisest sellele rakendusele r\u00e4\u00e4gib Matthias Jg k\u00e4esolevas artiklis.<\/a><\/noindex> Weaveworks'i tegevjuhi Alexis Richardsoni selgituses t\u00e4hendab see arendajatele tuttavate t\u00f6\u00f6riistade (eelk\u00f5ige Git'i, mille j\u00e4rgi see nimi on saanud) rakendamist operatiivt\u00f6\u00f6de lahendamiseks. T\u00e4psemalt \u00f6eldes r\u00e4\u00e4gime Kubernetes'i haldamisest, hoides selle konfigureerimisi Git'is ja automaatsete muudatuste rakendamisest klastrisse. Kahest l\u00e4henemisviisist nende muudatuste rakendamisel r\u00e4\u00e4gib Matthias Jg antud artiklis.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"GitOps: Pulli ja Pushi meetodite v\u00f5rdlus\" src=\"\/wp-content\/uploads\/2862627cedb4347679d0c14876a24869.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEelmisel aastal <i>(tegelikult juhtus see formaalselt 2017. aasta augustis \u2014 m\u00e4rk. t\u00f5lge.)<\/i> ilmunud on uus l\u00e4henemine rakenduste juurutamiseks Kuberneteses. Seda nimetatakse GitOps-iks, mille p\u00f5hialuseks on arusaam, et juurutamiste versioonide j\u00e4lgimine toimub Git-repo turvalises keskkonnas.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Selle l\u00e4henemise peamised eelised on j\u00e4rgmised<\/b>:<\/p>\n<ol>\n<li> <b>Juurutamiste versioonimine ja muudatuste ajalugu<\/b>. Kogu klastriseisund salvestatakse Git-repos, ning juurutamisi uuendatakse ainult commit'ide kaudu. Lisaks saab k\u00f5iki muudatusi j\u00e4lgida commit-ide ajalooga.<\/li>\n<li> <b>Tagasiv\u00f5tmised, kasutades tuttavaid Git-k\u00e4sku<\/b>. Lihtne <code>git reset<\/code> lubab tagasi p\u00f6\u00f6rduda juurutamiste muutustes; minevikud olekud on alati kergesti ligip\u00e4\u00e4setavad.<\/li>\n<li> <b>Valmis juurdep\u00e4\u00e4sukontroll<\/b>. T\u00fc\u00fcpiliselt sisaldab Git-s\u00fcsteem hulgaliselt konfidentsiaalset teavet, mist\u00f5ttu p\u00f6\u00f6ravad enamik ettev\u00f5tteid erilist t\u00e4helepanu selle kaitsmisele. Vastavalt laieneb see kaitse ka juurutamistele.<\/li>\n<li> <b>Poliitikad deployment\u2019ide jaoks<\/b>. Enamik Git-s\u00fcsteemidest toetab algselt poliitikaid erinevatele harudele \u2014 n\u00e4iteks v\u00f5ivad ainult pull request'id v\u00e4rskendada masterit, ning muudatused peab kontrollima ja kinnitama teine meeskonna liige. Ligip\u00e4\u00e4su kontrolliga seonduvalt kehtivad samad poliitikad ka juurutamiste v\u00e4rskendustele.<\/li>\n<\/ol>\n<p>\nNagu n\u00e4ete, on GitOps meetodil palju eeliseid. Viimase aasta jooksul on kaks l\u00e4henemist saavutanud erilist populaarsust. \u00dcks p\u00f5hineb push-l\u00e4htepunktidel, teine aga pull-l\u00e4htepunktidel. Enne nende arutamist vaatame esmalt, millised on t\u00fc\u00fcpilised Kubernetes'i juurutused.<\/p>\n<h2>Deployment'ide meetodid<\/h2>\n<p>\nViimastel aastatel on Kubernetesis kujunenud v\u00e4lja erinevad meetodid ja t\u00f6\u00f6riistad rakenduste juurutamiseks:<\/p>\n<ol>\n<li> <b>Kubernetes\/Kustomize'i natiivsete mallide p\u00f5hjal<\/b>. See on k\u00f5ige lihtsam rakenduste juurutamise viis Kubernetesis. Arendaja loob p\u00f5hjalikud YAML-failid ja rakendab need. \u00dchenduses pideva sama malli uuesti kirjutamisega on v\u00e4lja t\u00f6\u00f6tatud Kustomize (see muudab Kubernetes'i mallid mooduliteks). <i><b>M\u00e4rk. t\u00f5lge.<\/b>: Kustomize on integreeritud kubectl-ga alates <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445196\/\">Kubernetes 1.14 versioonist<\/a><\/noindex>.<\/i><\/li>\n<li> <b>Helm'i chart'id<\/b>. Helm'i graafikud v\u00f5imaldavad luua malle, init-konteinereid, sidecar'e ja muud, mida kasutatakse rakenduste juurutamiseks, pakkudes paindlikumaid konfiguratsiooniv\u00f5imalusi kui \u0161abloonip\u00f5hine l\u00e4henemine. Selle meetodi aluseks on malleeritud YAML-failid. Helm t\u00e4idab need erinevate parameetritega ja saadab seej\u00e4rel Tiller'ile \u2014 klastrikomponendile, mis paigaldab need klastrisse ja v\u00f5imaldab uuendusi ja tagasiv\u00f5ttu. Oluline on see, et Helm lihtsalt sisestab vajalikud v\u00e4\u00e4rtused malli ja rakendab need nii, nagu tehakse traditsioonilises l\u00e4henemises. <i>(rohkem selle kohta, kuidas see k\u00f5ik t\u00f6\u00f6tab ja kuidas seda kasutada, loe meie <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423239\/\">Helm'i artiklist<\/a><\/noindex> \u2014 kt. t\u00f5lge)<\/i>. On olemas suur valik valmis Helm-chart'e, mis katab laia valikut \u00fclesandeid.<\/li>\n<li> <b>Alternatiivsed t\u00f6\u00f6riistad<\/b>. On mitmeid alternatiivseid t\u00f6\u00f6riistu. Kuldne liitja on see, et nad muudavad mingid mallifailid arusaadavateks Kubernetes YAML-failideks ja seej\u00e4rel rakendavad need.<\/li>\n<\/ol>\n<p>\nOma t\u00f6\u00f6s kasutame pidevalt Helm-chart'e oluliste t\u00f6\u00f6riistade jaoks (kuna neis on palju juba valmis, mis lihtsustab elu) ja \u201epuhasid\u201d Kubernetes YAML-failid oma rakenduste juurutamiseks.<\/p>\n<h2>Pull &amp; Push<\/h2>\n<p>\n\u00dches oma hiljutises blogipostituses tutvustasin t\u00f6\u00f6riista <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/weaveworks\/flux\">Weave Flux<\/a><\/noindex>, mis v\u00f5imaldab kommitida malli Git-reposiiti ja uuendada juurutust p\u00e4rast iga kommiti v\u00f5i konteineri push&#8217;imist. Minu kogemus n\u00e4itab, et see t\u00f6\u00f6riist on \u00fcks peamisi pull-approach'i edendamise vahendeid, seet\u00f5ttu viitan ma sellele sageli. Kui soovite rohkem teada, kuidas seda kasutada, siis siin on <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@m.k.joerg\/gitops-weave-flux-in-detail-77ce36945646\">artikkel<\/a><\/noindex>.<\/p>\n<p><i><b>NB!<\/b> K\u00f5ik GitOps'i kasutamise eelised j\u00e4\u00e4vad kehtima m\u00f5lema l\u00e4henemise puhul.<\/i><\/p>\n<h2>Pull-l\u00e4henemine<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: Pulli ja Pushi meetodite v\u00f5rdlus\" src=\"\/wp-content\/uploads\/4ed8e6de36bc37d0e747ff99027f8399.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPull-approach'i alus on see, et k\u00f5ik muudatused rakendatakse klusteri seestpoolt. Klusteris on operaator, mis regulaarselt kontrollib seotud Git ja Docker Registry reposid. Kui seal toimub mingeid muudatusi, uuendatakse klusteri olek seestpoolt. \u00dcldiselt peetakse sarnast protsessi \u00fcsna ohutuks, kuna \u00fchelgi v\u00e4lisel kliendil pole juur\u00f5igusi klusterile.<\/p>\n<p><b>Plussid:<\/b><\/p>\n<ol>\n<li> \u00dchelgi v\u00e4lisel kliendil pole \u00f5igusi klusterisse muudatusi teha, k\u00f5ik uuendused rakendatakse seestpoolt.<\/li>\n<li> M\u00f5ned t\u00f6\u00f6riistad v\u00f5imaldavad samuti Helm-chartide uuenduste s\u00fcnkroonimist ja nende sidumist klastriga.<\/li>\n<li> Docker Registry't saab skaneerida uute versioonide leidmiseks. Kui ilmub uus pilt, uuendatakse Git-repo ja deployment uuteks versioonideks.<\/li>\n<li> T\u00f5mbet\u00f6\u00f6riistad v\u00f5ivad olla jaotatud erinevatesse nimekohtadesse koos erinevate Git-repositooriumide ja juurdep\u00e4\u00e4su\u00f5igustega. Selle kaudu saab rakendada mitme\u00fc\u00fcrilise mudeli. N\u00e4iteks v\u00f5ib meeskond A kasutada nimekohta A, meeskond B nimekohta B ning infrastruktuuri haldav meeskond v\u00f5ib kasutada globaalset nimekohta.<\/li>\n<li> Tavaliselt on t\u00f6\u00f6riistad v\u00e4ga kerged.<\/li>\n<li> Koos selliste t\u00f6\u00f6riistadega nagu operaator <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami-labs\/sealed-secrets\">Bitnami Sealed Secrets<\/a><\/noindex>, saavad saladused salvestuda kr\u00fcpteeritud kujul Git-repositooriumisse ja neid saab klastri sees v\u00e4lja v\u00f5tta.<\/li>\n<li> CD-pipeline'idega pole \u00fchendust, kuna juurutamised toimuvad klastri sees.<\/li>\n<\/ol>\n<p>\n<b>Miinused<\/b>:<\/p>\n<ol>\n<li> Juurutuste saladuste haldamine Helm-chartide hulgast on keerulisem kui tavalised, kuna neid tuleb esmalt genereerida n\u00e4iteks suletud saladustena, seej\u00e4rel dekr\u00fcpteerida sisemise operaatori poolt ja alles siis on need pull-t\u00f6\u00f6riistale k\u00e4ttesaadavad. Seej\u00e4rel saab Helm&#8217;is k\u00e4ivitada v\u00e4ljaande juba juurutatud saladustes olevate v\u00e4\u00e4rtustega. Lihtsaim viis on luua saladus k\u00f5igi juurutuse jaoks kasutatavate Helm v\u00e4\u00e4rtustega, dekr\u00fcpteerida see ja kommitida Git-i.<\/li>\n<li> Pull-approach'i rakendamine seob teid t\u00f6\u00f6riistadega, mis t\u00f6\u00f6tavad pull'idega. See piirab teie v\u00f5imet kohandada deployment'i protsessi klastris. N\u00e4iteks Kustomize'i kasutamine muutub keeruliseks, kuna seda tuleb k\u00e4ivitada enne, kui l\u00f5plikud mallid Git'i j\u00f5uavad. Ma ei v\u00e4ida, et eraldi t\u00f6\u00f6riistade kasutamine ei ole v\u00f5imalik, kuid nende integreerimine deploy\u00adment'i protsessi on keerulisem.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Push-p\u00f5hine l\u00e4henemine<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: Pulli ja Pushi meetodite v\u00f5rdlus\" src=\"\/wp-content\/uploads\/533fc0bd107c3338d323e908ae9e75ab.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPush-l\u00e4henemise korral k\u00e4ivitab v\u00e4line s\u00fcsteem (peamiselt CD-pipeurad) klastrisse juurutusi Git-repo kohustusest v\u00f5i eelneva CI-pipeuri edukast t\u00e4itmisest. Selles l\u00e4henemises on s\u00fcsteemil juurdep\u00e4\u00e4s klastrile.<\/p>\n<p><b>Plussid<\/b>:<\/p>\n<ol>\n<li> Turvalisus m\u00e4\u00e4ratakse Git-repositoiumi ja koostamispipeuri poolt.<\/li>\n<li> Helm-chartide juurutamine on kergem, kuna on olemas Helm-pluginite tugi.<\/li>\n<li> Salajaste haldamine on lihtsam, kuna salajasi saab rakendada pipeurades ja samuti salvestada Git'is kr\u00fcpteeritud kujul (vastavalt kasutaja eelistustele).<\/li>\n<li> Ei ole spetsiifilist t\u00f6\u00f6riista, kuna saab kasutada igasuguseid.<\/li>\n<li> Konteinerite versioonide uuendusi v\u00f5ib algatada koostamispipeur.<\/li>\n<\/ol>\n<p>\n<b>Miinused<\/b>:<\/p>\n<ol>\n<li> Juurdep\u00e4\u00e4suklahvi andmed asuvad koostamiss\u00fcsteemi sees.<\/li>\n<li> Containerite deployment'ide uuendamine on endiselt lihtsam pull-protsessi k\u00e4igus.<\/li>\n<li> Tugev s\u00f5ltuvus CD-s\u00fcsteemist, kuna vajalikud pipeurid v\u00f5ivad olla algselt kirjutatud Gitlabi Runner'itele ja seej\u00e4rel otsustab meeskond \u00fcle minna Azure DevOps'ile v\u00f5i Jenkins'ile... ning tuleb teostada suure hulga koostamispipeuride migratsioon.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Kokkuv\u00f5te: Push v\u00f5i Pull?<\/h2>\n<p>\nNagu tavaliselt on igal l\u00e4henemisel oma eelised ja puudused. M\u00f5ned \u00fclesanded on lihtsamad \u00fchega teostada ja keerulisemad teisega. Alguses tegin juurutusi k\u00e4sitsi, kuid p\u00e4rast mitmete Weave Fluxi artiklite leidmist otsustasin rakendada GitOps-protsesse k\u00f5igi projektide jaoks. P\u00f5hijoonistega osutus see lihtsaks, kuid hiljem hakkasin kohtama raskusi Helm-chart'idega t\u00f6\u00f6tamisel. Sel ajal pakkus Weave Flux vaid algelise versiooni Helm Chart Operatorist, kuid isegi n\u00fc\u00fcd on m\u00f5ned \u00fclesanded keerulisemad k\u00e4sitsi loodud saladuste loomise ja nende rakendamise t\u00f5ttu. V\u00f5ite \u00f6elda, et pull-l\u00e4henemine on palju turvalisem, kuna klastri mandaadid ei ole v\u00e4ljastpoolt kergesti ligip\u00e4\u00e4setavad, mis suurendab turvalisust nii palju, et see tasub lisatingimusi.<\/p>\n<p>P\u00e4rast natuke m\u00f5tlemist j\u00f5udsin \u00fcllatavale j\u00e4reldusele, et see pole nii. Maximaalset kaitset vajavate komponentide hulka kuuluvad saladuste hoidlad ja CI\/CD s\u00fcsteemid, Git-repositorid. Teave nende sees on \u00e4\u00e4rmiselt haavatav ja vajab maksimaalset kaitset. Lisaks, kui keegi p\u00e4\u00e4seb teie Git-repositori, ja suudab sinna koodi push'ida, siis saab ta juurutada k\u00f5ike, mida soovib (\u00fcksk\u00f5ik, kas see on pull v\u00f5i push meetod), ja siseneda klastris\u00fcsteemidesse. Seega on k\u00f5ige olulisemad komponendid, mida tuleb kaitsta, Git-repositor ja CI\/CD s\u00fcsteemid, mitte klastriga seotud mandaadid. Kui teil on selliste s\u00fcsteemide jaoks n\u00f5uetekohaselt seadistatud poliitikad ja turvameetmed ning klastriga seotud mandaadid tuletatakse t\u00f6\u00f6tubadesse ainult saladustena, v\u00f5idakse pull-l\u00e4henemise t\u00e4iendav turvalisus osutuda v\u00e4hem v\u00e4\u00e4rtuslikuks, kui algselt arvati.<\/p>\n<p>Seega, kui pull-l\u00e4henemine on t\u00f6\u00f6mahukam ja ei paku turvalisuse eeliseid, ei oleks siis loogiline kasutada ainult push-l\u00e4henemist? Kuid keegi v\u00f5ib v\u00e4ita, et push-l\u00e4henemine on liiga seotud CD-s\u00fcsteemiga ja v\u00f5ib-olla ei ole parem seda teha, et tulevikus oleks lihtsam migreerida.<\/p>\n<p>Minu arvates (nagu alati) tuleks kasutada seda, mis konkreetsele olukorrale k\u00f5ige paremini sobib, v\u00f5i neid kombineerida. Isiklikult kasutan m\u00f5lemat l\u00e4henemist: Weave Fluxi pull-p\u00f5histe deployment'ide jaoks, mis peamiselt sisaldavad meie enda teenuseid, ja push-l\u00e4henemist Helmiga ja pistikprogrammidega, mis lihtsustavad Helm-chartide rakendamist klastrisse ja v\u00f5imaldavad probleemideta luua salajasi andmeid. Arvan, et kunagi ei tule \u00fchtegi lahendust, mis sobiks k\u00f5ikidele juhtudele, kuna n\u00fcansse on alati v\u00e4ga palju ja need s\u00f5ltuvad konkreetsest kasutusvariandist. Sellegipoolest soovitan tungivalt GitOps'i \u2014 see lihtsustab elu ja suurendab turvalisust.<\/p>\n<p>Loodan, et minu kogemused selles k\u00fcsimuses aitavad m\u00e4\u00e4rata, milline meetod sobib teie deployment'idele k\u00f5ige paremini, ja ma oleksin hea meelega huvitatud teie arvamusest.<\/p>\n<h2>P.S. T\u00f5lkija m\u00e4rkus<\/h2>\n<p>\nPull-mudeli miinustena on punkt, et on keeruline Gitisse panna renderdatud manifestid, kuid puudub miinus selles osas, et CD-pipeline pull-mudelis eksisteerib eraldi v\u00e4ljalaskest ning muutub seel\u00e4bi tegelikult kategoriseeritavaks pipeline'iks. <i>J\u00e4tkuv rakendamine<\/i>. Seet\u00f5ttu on veelgi rohkem pingutusi vajalik, et koguda nende deployment'ide staatus ja kuidagi anda juurdep\u00e4\u00e4s logidele\/staatusele, eelistatult CD s\u00fcsteemiga seotud.<\/p>\n<p>Selles m\u00f5ttes v\u00f5imaldab push-mudel anda mingisuguseid garantiiid v\u00e4ljapoole, kuna pipeline'i eluiga saab seada v\u00f5rdseks v\u00e4ljaku eluigaga.<\/p>\n<p>Oleme proovinud m\u00f5lemat mudelit ning j\u00f5udnud samadele j\u00e4reldustele, mis autor artiklis:<\/p>\n<ol>\n<li> Pull-mudel sobib meile s\u00fcsteemikomponentide uuendamise korraldamiseks suures koguses klastrites (vt. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">artiklit addon-operatorist<\/a><\/noindex>).<\/li>\n<li> GitLab CI p\u00f5hinev push-mudel sobib h\u00e4sti rakenduste k\u00e4itamiseks Helm-chartide abil. Samuti j\u00e4lgitakse deployment'ide k\u00e4ivitamist pipeline'ides t\u00f6\u00f6riista abil. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex>. Muide, selle projekti kontekstis kuulsime pidevat \"GitOps\"-i, kui arutasime DevOps-inseneride aktuaalseid probleeme oma kioskis KubeCon Europe'19.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P.P.S. t\u00f5lkijalt<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Kubernetesi n\u00e4pun\u00e4ited ja nipid: Helm 2 haldamine klastris t\u00f6\u00f6tavate ressursside jaoks<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/434160\/\">Tutvustame kubedogi raamatukogu Kubernetesi ressursside j\u00e4lgimiseks<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Kubernetesi laiendamine ja t\u00e4iendamine (\u00fclevaade ja video ettekandest)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436910\/\">N\u00f5uanded kohandatud t\u00f6\u00f6protsesside loomiseks GitLab CI-s<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p class=\"for_users_only_msg\">Ainult registreeritud kasutajad saavad k\u00fcsitluses osaleda. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Logige sisse<\/a><\/noindex>, palun.<\/p>\n<h2 class=\"default-block__polling-title\">Kas kasutate GitOps-i?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jah, pull l\u00e4henemine<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jah, push<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jah, pull + push<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Jah, midagi muud<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ei<\/p>\n<\/li>\n<\/ul>\n<p>    H\u00e4\u00e4letas 30 kasutajat. 10 kasutajat hoidusid.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/456754\/\">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.: \u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 Kubernetes \u044f\u0432\u043d\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0440\u0435\u043d\u0434 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c GitOps, \u0432 \u0447\u0451\u043c \u043c\u044b \u043b\u0438\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u043f\u043e\u0441\u0435\u0442\u0438\u0432 KubeCon Europe 2019. \u042d\u0442\u043e\u0442 \u0442\u0435\u0440\u043c\u0438\u043d \u0431\u044b\u043b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0433\u043b\u0430\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Weaveworks \u2014 Alexis Richardson \u2014 \u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 Git, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438 \u0441\u0430\u043c\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435) \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. \u0412 [&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-35594","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.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47GitOps: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Pull \u0438 Push | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push\" \/>\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:05:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:05:15+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\udd47GitOps: Pull ja Push meetodite v\u00f5rdlemine | ProHoster","description":"M\u00e4rk.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47GitOps: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Pull \u0438 Push | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","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:05:15+00:00","article:modified_time":"2019-10-31T19:05:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35594","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-21 23:54:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:05:10","updated":"2026-01-21 23:54:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/35594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=35594"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/35594\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=35594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=35594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=35594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}