{"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\/it\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","title":{"rendered":"GitOps: confronto tra i metodi Pull e Push","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota del traduttore.<\/b>: Nel mondo di Kubernetes, sta guadagnando popolarit\u00e0 una tendenza chiamata GitOps, di cui abbiamo avuto esperienza personale, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/454184\/\">partecipando<\/a><\/noindex> a KubeCon Europe 2019. Questo termine \u00e8 stato coniato relativamente di recente <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-operations-by-pull-request\">dal fondatore di Weaveworks \u2014 Alexis Richardson \u2014 e si riferisce all'uso degli strumenti familiari per gli sviluppatori (principalmente Git, da cui il nome) per affrontare le sfide operative. In particolare, si tratta di gestire Kubernetes memorizzando le sue configurazioni in Git e rilasciando automaticamente le modifiche nel cluster. Matthias Jg parla di due approcci a questo rilascio in questo articolo.<\/a><\/noindex> il fondatore di Weaveworks, Alexis Richardson, e implica l'uso di strumenti familiari per gli sviluppatori (soprattutto Git, da cui il nome stesso) per affrontare le sfide operative. In particolare, si tratta della gestione di Kubernetes attraverso la memorizzazione delle sue configurazioni in Git e il rilascio automatico delle modifiche nel cluster. Matthias Jg discute di due approcci a questo rilascio in questo articolo.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"GitOps: confronto tra i metodi Pull e Push\" src=\"\/wp-content\/uploads\/2862627cedb4347679d0c14876a24869.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLo scorso anno <i>(in realt\u00e0, formalmente \u00e8 accaduto nell'agosto 2017 \u2014 nota del traduttore.)<\/i> \u00e8 emerso un nuovo approccio al deployment delle applicazioni in Kubernetes. Si chiama GitOps e si basa sul concetto fondamentale che il tracciamento delle versioni dei deployment avviene in un ambiente sicuro di un repository Git.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>I principali vantaggi di questo approccio sono i seguenti<\/b>:<\/p>\n<ol>\n<li> <b>Versionamento dei deployment e cronologia delle modifiche<\/b>. Lo stato dell'intero cluster \u00e8 conservato in un repository Git, e i deployment vengono aggiornati solo tramite commit. Inoltre, tutte le modifiche possono essere monitorate grazie alla cronologia dei commit.<\/li>\n<li> <b>Rollback utilizzando i comandi Git familiari<\/b>. Semplice <code>git reset<\/code> consente di ripristinare le modifiche nei deployment; gli stati precedenti sono sempre disponibili.<\/li>\n<li> <b>Controllo degli accessi pronto<\/b>. Di norma, un sistema Git contiene molte informazioni riservate, quindi la maggior parte delle aziende presta particolare attenzione alla sua protezione. Di conseguenza, questa protezione si applica anche alle operazioni sui deployment.<\/li>\n<li> <b>Politiche per i deployment<\/b>. La maggior parte dei sistemi Git supporta fin dall'inizio politiche per diversi branch \u2014 ad esempio, solo i pull request possono aggiornare il master, e le modifiche devono essere verificate e approvate da un altro membro del team. Come nel caso del controllo degli accessi, le stesse politiche si applicano agli aggiornamenti dei deployment.<\/li>\n<\/ol>\n<p>\nCome potete vedere, il metodo GitOps ha molti vantaggi. Negli ultimi dodici mesi, due approcci hanno guadagnato particolare popolarit\u00e0. Uno \u00e8 basato su push, l'altro su pull. Prima di esaminarli, vediamo come si presentano i tipici deployment di Kubernetes.<\/p>\n<h2>Metodi di deployment<\/h2>\n<p>\nNegli ultimi anni, sono emersi diversi modi e strumenti per le distribuzioni in Kubernetes:<\/p>\n<ol>\n<li> <b>Basati sui modelli nativi di Kubernetes\/Kustomize<\/b>. Questo \u00e8 il modo pi\u00f9 semplice per distribuire applicazioni in Kubernetes. Lo sviluppatore crea file YAML di base e li applica. Per evitare di riscrivere continuamente gli stessi modelli, \u00e8 stato sviluppato Kustomize (che trasforma i modelli di Kubernetes in moduli). <i><b>Nota del traduttore.<\/b>: Kustomize \u00e8 stato integrato in kubectl con <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445196\/\">il rilascio di Kubernetes 1.14<\/a><\/noindex>.<\/i><\/li>\n<li> <b>Chart Helm<\/b>I chart di Helm permettono di creare set di modelli, init-container, sidecar e cos\u00ec via, che vengono utilizzati per il deployment delle applicazioni con maggiori possibilit\u00e0 di configurazione rispetto all'approccio basato su modelli. Al centro di questo metodo ci sono file YAML templated. Helm li compila con vari parametri e poi li invia a Tiller, il componente del cluster che li distribuisce nel cluster e consente aggiornamenti e rollback. \u00c8 importante notare che Helm inserisce semplicemente i valori necessari nei modelli e poi li applica allo stesso modo in cui si farebbe con l'approccio tradizionale. <i>(per ulteriori informazioni su come funziona tutto ci\u00f2 e come \u00e8 possibile utilizzarlo, leggi il nostro <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423239\/\">articolo su Helm<\/a><\/noindex> \u2014 nota di traduzione)<\/i>. Esiste una grande variet\u00e0 di Helm chart pronti che coprono un'ampia gamma di compiti.<\/li>\n<li> <b>Strumenti alternativi<\/b>. Ci sono molti strumenti alternativi. Tutti essi condividono il fatto di trasformare alcuni file template in chiari file YAML di Kubernetes e poi applicarli.<\/li>\n<\/ol>\n<p>\nNel nostro lavoro utilizziamo costantemente Helm chart per strumenti importanti (dato che molto \u00e8 gi\u00e0 pronto, il che semplifica notevolmente la vita) e file YAML di Kubernetes 'puliti' per implementare le nostre applicazioni.<\/p>\n<h2>Pull &amp; Push<\/h2>\n<p>\nIn una delle mie recenti pubblicazioni sul blog ho presentato uno strumento <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/weaveworks\/flux\">Weave Flux<\/a><\/noindex>, che consente di effettuare commit di template in un repository Git e aggiornare il deployment dopo ogni commit o push del container. La mia esperienza dimostra che questo strumento \u00e8 uno dei principali nel diffondere l'approccio pull, quindi far\u00f2 spesso riferimento ad esso. Se desideri saperne di pi\u00f9 su come utilizzarlo, ecco <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@m.k.joerg\/gitops-weave-flux-in-detail-77ce36945646\">il link all'articolo<\/a><\/noindex>.<\/p>\n<p><i><b>NB!<\/b> Tutti i vantaggi dell'uso di GitOps si applicano a entrambi gli approcci.<\/i><\/p>\n<h2>Approccio basato su Pull<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: confronto tra i metodi Pull e Push\" src=\"\/wp-content\/uploads\/4ed8e6de36bc37d0e747ff99027f8399.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlla base dell'approccio pull c'\u00e8 il fatto che tutte le modifiche vengono applicate dall'interno del cluster. All'interno del cluster c'\u00e8 un operatore che controlla regolarmente i repository Git e Docker Registry associati. Se ci sono modifiche, lo stato del cluster viene aggiornato dall'interno. Questo processo \u00e8 generalmente considerato molto sicuro, poich\u00e9 nessun cliente esterno ha accesso ai diritti di amministratore del cluster.<\/p>\n<p><b>Vantaggi:<\/b><\/p>\n<ol>\n<li> Nessun cliente esterno ha il diritto di apportare modifiche al cluster; tutti gli aggiornamenti vengono applicati dall'interno.<\/li>\n<li> Al alcuni strumenti consentono anche di sincronizzare gli aggiornamenti degli Helm chart e collegarli al cluster.<\/li>\n<li> Il Docker Registry pu\u00f2 essere scansionato per nuove versioni. Se appare una nuova immagine, il repository Git e il deployment vengono aggiornati alla nuova versione.<\/li>\n<li> Gli strumenti di pull possono essere distribuiti in diversi spazi dei nomi con diversi repository Git e diritti di accesso. Questo consente di applicare un modello multi-tenant. Ad esempio, il team A pu\u00f2 utilizzare lo spazio dei nomi A, il team B lo spazio dei nomi B, mentre il team responsabile dell'infrastruttura pu\u00f2 utilizzare uno spazio globale.<\/li>\n<li> In generale, gli strumenti sono piuttosto leggeri.<\/li>\n<li> In combinazione con strumenti come l'operatore <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami-labs\/sealed-secrets\">Bitnami Sealed Secrets<\/a><\/noindex>, i segreti possono essere memorizzati in forma crittografata nel repository Git ed estratti all'interno del cluster.<\/li>\n<li> Non c'\u00e8 connessione con i pipeline CD, poich\u00e9 i deployment avvengono all'interno del cluster.<\/li>\n<\/ol>\n<p>\n<b>Svantaggi<\/b>:<\/p>\n<ol>\n<li> Gestire i segreti dei deployment dai chart Helm \u00e8 pi\u00f9 complesso rispetto a quelli normali, poich\u00e9 prima devono essere generati sotto forma di sealed secrets, poi decifrati da un operatore interno e solo dopo diventano disponibili per lo strumento pull. Successivamente, \u00e8 possibile lanciare un rilascio in Helm con i valori gi\u00e0 presenti nei segreti distribuiti. Il modo pi\u00f9 semplice \u00e8 creare un segreto con tutti i valori Helm utilizzati per il deployment, decifrarlo e commettelo in Git.<\/li>\n<li> Utilizzando un approccio pull, ti trovi legato a strumenti che operano con i pull. Questo limita la possibilit\u00e0 di personalizzare il processo di distribuzione nei deployment del cluster. Ad esempio, lavorare con Kustomize \u00e8 complicato perch\u00e9 deve essere eseguito prima che i modelli finali vengano inviati su Git. Non dico che non si possano usare strumenti separati, ma \u00e8 pi\u00f9 difficile integrarli nel processo di distribuzione.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Approccio basato su Push<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: confronto tra i metodi Pull e Push\" src=\"\/wp-content\/uploads\/533fc0bd107c3338d323e908ae9e75ab.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel modello push, un sistema esterno (principalmente pipeline CD) avvia i deployment nel cluster dopo il commit nel repository Git o dopo il successo dell'esecuzione della pipeline CI precedente. In questo approccio, il sistema ha accesso al cluster.<\/p>\n<p><b>Pro<\/b>:<\/p>\n<ol>\n<li> La sicurezza \u00e8 determinata dal repository Git e dalla pipeline di build.<\/li>\n<li> Distribuire i chart Helm \u00e8 pi\u00f9 semplice, con supporto per i plugin Helm.<\/li>\n<li> Gestire i segreti \u00e8 pi\u00f9 facile, poich\u00e9 possono essere applicati nelle pipeline e conservati in Git in forma crittografata (a seconda delle preferenze dell'utente).<\/li>\n<li> Assenza di vincoli su strumenti specifici, poich\u00e9 \u00e8 possibile utilizzare qualsiasi tipo.<\/li>\n<li> Gli aggiornamenti delle versioni dei container possono essere avviati dalla pipeline di build.<\/li>\n<\/ol>\n<p>\n<b>Svantaggi<\/b>:<\/p>\n<ol>\n<li> I dati per accedere al cluster si trovano all'interno del sistema di build.<\/li>\n<li> Aggiornare i container dei deployment \u00e8 ancora pi\u00f9 semplice con un processo pull.<\/li>\n<li> Dipendenza elevata dal sistema CD, poich\u00e9 le pipeline necessarie sono probabilmente scritte inizialmente per Gitlab Runners, e poi il team decide di passare a Azure DevOps o Jenkins... e sar\u00e0 necessario migrare un gran numero di pipeline di build.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Risultati: Push o Pull?<\/h2>\n<p>\nCome spesso accade, ogni approccio ha i suoi pro e contro. Alcuni compiti sono pi\u00f9 facili da realizzare con un metodo e pi\u00f9 complessi con un altro. Inizialmente, eseguivo le distribuzioni manualmente, ma dopo aver scoperto alcuni articoli su Weave Flux, ho deciso di implementare processi GitOps per tutti i progetti. Per i modelli di base, \u00e8 stato facile, ma dopo ho iniziato a riscontrare difficolt\u00e0 nell'utilizzo dei chart di Helm. All'epoca, Weave Flux offriva solo una versione embrionale dell'Helm Chart Operator, ma anche adesso alcune operazioni sono pi\u00f9 complesse a causa della necessit\u00e0 di creare manualmente i segreti e applicarli. Si pu\u00f2 dire che l'approccio pull \u00e8 molto pi\u00f9 sicuro, poich\u00e9 le credenziali del cluster non sono accessibili dall'esterno, il che aumenta la sicurezza al punto da giustificare gli sforzi aggiuntivi.<\/p>\n<p>Dopo aver riflettuto un po', sono arrivato a una conclusione inaspettata: non \u00e8 cos\u00ec. Se parliamo di componenti che necessitano di massima protezione, in questa lista ci sarebbero gli archivi di segreti e i sistemi CI\/CD, nonch\u00e9 i repository Git. Le informazioni al loro interno sono estremamente vulnerabili e richiedono protezione. Inoltre, se qualcuno riesce a penetrare nel tuo repository Git e a effettuare push di codice, potr\u00e0 implementare tutto ci\u00f2 che desidera (indipendentemente dal metodo scelto, sia esso pull o push), infiltrandosi nei sistemi del cluster. Pertanto, i componenti pi\u00f9 critici che richiedono protezione sono il repository Git e i sistemi CI\/CD, non le credenziali del cluster. Se hai ben impostate le politiche e le misure di sicurezza per tali sistemi e le credenziali del cluster vengono estratte nei pipeline solo come segreti, la sicurezza aggiuntiva del metodo pull potrebbe rivelarsi meno preziosa di quanto inizialmente previsto.<\/p>\n<p>Quindi, se l'approccio pull \u00e8 pi\u00f9 laborioso e non offre vantaggi in termini di sicurezza, non sarebbe logico utilizzare solo l'approccio push? Tuttavia, qualcuno potrebbe sostenere che con l'approccio push si \u00e8 troppo legati al sistema CD e potrebbe essere meglio evitarlo per facilitare future migrazioni.<\/p>\n<p>A mio avviso (come sempre), bisogna utilizzare ci\u00f2 che \u00e8 pi\u00f9 adatto al caso specifico o combinarlo. Personalmente, utilizzo entrambi gli approcci: Weave Flux per i deployment basati su pull, che riguardano principalmente i nostri servizi, e un approccio push con Helm e plugin, che semplifica l'applicazione dei chart Helm al cluster e consente di generare segreti senza problemi. Penso che non ci sar\u00e0 mai una soluzione unica adatta a tutti, perch\u00e9 ci sono sempre molte sfumature e dipendono dallo specifico caso d'uso. Detto questo, consiglio vivamente GitOps: rende la vita molto pi\u00f9 facile e aumenta la sicurezza.<\/p>\n<p>Spero che la mia esperienza in merito possa aiutarti a decidere quale metodo si adatti meglio al tuo tipo di deployment, e sarei felice di conoscere la tua opinione.<\/p>\n<h2>P.S. Nota del traduttore<\/h2>\n<p>\nTra i difetti del modello pull c'\u00e8 il fatto che \u00e8 difficile inserire in Git i manifesti renderizzati, ma non c'\u00e8 il difetto che il pipeline CD nel modello pull viva separatamente dal rilascio, diventando sostanzialmente un pipeline di categoria. <i>Continuous Apply<\/i>. Pertanto, saranno necessari ancora pi\u00f9 sforzi per raccogliere lo stato di tutti i deployment e fornire l'accesso ai log\/statistiche, preferibilmente con un legame con il sistema CD.<\/p>\n<p>In questo senso, il modello push consente di garantire almeno alcune certezze sui release, poich\u00e9 la durata del pipeline pu\u00f2 essere impostata uguale alla durata del release.<\/p>\n<p>Abbiamo provato entrambi i modelli e siamo giunti alle stesse conclusioni dell'autore dell'articolo:<\/p>\n<ol>\n<li> Il modello pull \u00e8 adatto per l'organizzazione dell'aggiornamento dei componenti di sistema su un gran numero di cluster (vedi <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">l'articolo su addon-operator<\/a><\/noindex>).<\/li>\n<li> Il modello Push basato su GitLab CI \u00e8 perfetto per il rilascio di applicazioni utilizzando Helm chart. In questo caso, il rilascio dei deployment all'interno dei pipeline viene monitorato tramite uno strumento. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex>A proposito, nel contesto di questo nostro progetto abbiamo frequentemente sentito parlare di \"GitOps\" quando discutevamo delle problematiche attuali degli ingegneri DevOps al nostro stand a KubeCon Europe '19.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P.P.S. dal traduttore<\/h2>\n<p>\nLeggete anche nel nostro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Consigli e trucchi per Kubernetes: tradurre le risorse funzionanti nel cluster sotto Helm 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/434160\/\">Presentiamo la libreria kubedog per monitorare le risorse di Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Ampliare e completare Kubernetes (panoramica e video della presentazione)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436910\/\">Suggerimenti per creare flussi di lavoro personalizzati in GitLab CI<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p class=\"for_users_only_msg\">Solo gli utenti registrati possono partecipare al sondaggio. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Accedi<\/a><\/noindex>, per favore.<\/p>\n<h2 class=\"default-block__polling-title\">Utilizzate GitOps?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ec, approccio pull<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ec, push<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ec, pull + push<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ec, qualcosa di diverso<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    No<\/p>\n<\/li>\n<\/ul>\n<p>    30 utenti hanno votato. 10 utenti si sono astenuti.<br \/>\n<br \/>Fonte: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/it\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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: confronto tra metodi Pull e Push | ProHoster","description":"Nota del traduttore: nella comunit\u00e0 Kubernetes sta guadagnando popolarit\u00e0 il trend denominato GitOps, di cui abbiamo preso visione personalmente visitando KubeCon Europe 2019. Questo termine \u00e8 stato relativamente recentemente coniato dal fondatore di Weaveworks, Alexis Richardson, e si riferisce all'uso di strumenti familiari agli sviluppatori (principalmente Git, da cui il nome) per affrontare compiti di gestione. In","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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. \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=35594"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35594\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=35594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=35594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=35594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}