{"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\/de\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","title":{"rendered":"GitOps: Vergleich von Pull- und Push-Methoden","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Hinweis.<\/b>: In der Kubernetes-Community gewinnt der Trend namens GitOps zunehmend an Beliebtheit, was wir pers\u00f6nlich festgestellt haben, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/454184\/\">als wir<\/a><\/noindex> die KubeCon Europe 2019 besucht haben. Dieser Begriff wurde relativ neu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-operations-by-pull-request\">geschaffen<\/a><\/noindex> von Alexis Richardson, dem Gesch\u00e4ftsf\u00fchrer von Weaveworks, und bezieht sich auf die Nutzung von g\u00e4ngigen Entwicklerwerkzeugen (vor allem Git, was auch den Namen erkl\u00e4rt) zur L\u00f6sung von Betriebsproblemen. Insbesondere geht es um den Betrieb von Kubernetes durch die Speicherung seiner Konfigurationen in Git und die automatische Bereitstellung von \u00c4nderungen im Cluster. \u00dcber zwei Ans\u00e4tze zur Umsetzung berichtet Matthias Jg in diesem Artikel.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"GitOps: Vergleich von Pull- und Push-Methoden\" src=\"\/wp-content\/uploads\/2862627cedb4347679d0c14876a24869.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm vergangenen Jahr <i>(tats\u00e4chlich fand dies formell im August 2017 statt \u2013 Anmerkung des \u00dcbersetzers)<\/i> Ein neuer Ansatz zur Bereitstellung von Anwendungen in Kubernetes hat sich entwickelt. Er wird GitOps genannt und basiert auf der grundlegenden Vorstellung, dass die Versionierung von Deployments in einer sicheren Umgebung eines Git-Repositoriums erfolgt.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Die Hauptvorteile dieses Ansatzes sind folgende<\/b>:<\/p>\n<ol>\n<li> <b>Versionierung von Deployments und \u00c4nderungsverlauf<\/b>. Der Zustand des gesamten Clusters wird in einem Git-Repositorium gespeichert, und Deployments werden nur durch Commits aktualisiert. Au\u00dferdem k\u00f6nnen alle \u00c4nderungen \u00fcber die Commit-Historie nachverfolgt werden.<\/li>\n<li> <b>Rollbacks mit den gewohnten Git-Befehlen<\/b>. Einfach <code>git reset<\/code> erm\u00f6glicht das Zur\u00fccksetzen von \u00c4nderungen an Deployments; fr\u00fchere Zust\u00e4nde sind immer verf\u00fcgbar.<\/li>\n<li> <b>Fertige Zugriffskontrolle<\/b>. Da ein typisches Git-System viele vertrauliche Daten enth\u00e4lt, legen die meisten Unternehmen gro\u00dfen Wert auf dessen Sicherheit. Entsprechend gilt dieser Schutz auch f\u00fcr die Operationen mit Deployments.<\/li>\n<li> <b>Richtlinien f\u00fcr Deployments<\/b>. Die meisten Git-Systeme unterst\u00fctzen von Anfang an Richtlinien f\u00fcr verschiedene Branches \u2013 zum Beispiel k\u00f6nnen nur Pull Requests den Master aktualisieren, und \u00c4nderungen m\u00fcssen von einem anderen Teammitglied \u00fcberpr\u00fcft und genehmigt werden. Wie beim Zugangskontrollsystem gelten dieselben Richtlinien auch f\u00fcr die Aktualisierungen von Deployments.<\/li>\n<\/ol>\n<p>\nWie Sie sehen, bietet die GitOps-Methode viele Vorteile. Im vergangenen Jahr haben sich zwei Ans\u00e4tze besonders hervorgetan. Der eine basiert auf Push, der andere auf Pull. Bevor wir diese n\u00e4her betrachten, lassen Sie uns zun\u00e4chst anschauen, wie typische Deployments in Kubernetes aussehen.<\/p>\n<h2>Bereitstellungsmethoden<\/h2>\n<p>\nIn den letzten Jahren haben sich verschiedene Methoden und Werkzeuge f\u00fcr Deployments in Kubernetes etabliert:<\/p>\n<ol>\n<li> <b>Basierend auf nativen Vorlagen von Kubernetes\/Kustomize<\/b>. Dies ist der einfachste Weg, um Anwendungen in Kubernetes zu deployen. Der Entwickler erstellt grundlegende YAML-Dateien und wendet sie an. Um das st\u00e4ndige Neu schreiben der gleichen Vorlagen zu vermeiden, wurde Kustomize entwickelt (es verwandelt Kubernetes-Vorlagen in Module). <i><b>Hinweis.<\/b>: Kustomize wurde mit der <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445196\/\">Kubernetes-Version 1.14<\/a><\/noindex>.<\/i><\/li>\n<li> <b>Helm Charts<\/b>Helm-Charts erm\u00f6glichen die Erstellung von Vorlagensets, Init-Containern, Sidecars usw., die f\u00fcr das Deployment von Anwendungen mit flexibleren Anpassungsm\u00f6glichkeiten genutzt werden k\u00f6nnen als im vorlagenbasierten Ansatz. Der Kern dieser Methode sind vorlagengest\u00fctzte YAML-Dateien. Helm f\u00fcllt diese mit verschiedenen Parametern aus und sendet sie dann an Tiller \u2013 die Clusterkomponente, die sie im Cluster implementiert und Aktualisierungen sowie Rollbacks erm\u00f6glicht. Wichtig ist, dass Helm im Grunde genommen lediglich die ben\u00f6tigten Werte in die Vorlagen einf\u00fcgt und diese dann auf die gleiche Weise anwendet wie im traditionellen Ansatz. <i>(mehr dar\u00fcber, wie das alles funktioniert und wie man es verwenden kann, lesen Sie in unserem <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423239\/\">Artikel \u00fcber Helm<\/a><\/noindex> \u2014 Anmerkung des \u00dcbersetzers).<\/i>. Es gibt eine Vielzahl von fertigen Helm-Charts, die ein breites Spektrum an Aufgaben abdecken.<\/li>\n<li> <b>Alternative Werkzeuge<\/b>. Es gibt zahlreiche alternative Werkzeuge. Alle haben gemeinsam, dass sie bestimmte Vorlage-Dateien in verst\u00e4ndliche Kubernetes-YAML-Dateien umwandeln und diese dann anwenden.<\/li>\n<\/ol>\n<p>\nIn unserer Arbeit verwenden wir st\u00e4ndig Helm-Charts f\u00fcr wichtige Werkzeuge (da sie viele Vorbereitungen bereits getroffen haben, was das Leben erheblich vereinfacht) und \"reine\" Kubernetes-YAML-Dateien, um unsere eigenen Anwendungen bereitzustellen.<\/p>\n<h2>Pull &amp; Push<\/h2>\n<p>\nIn einem meiner letzten Blogbeitr\u00e4ge habe ich ein Werkzeug vorgestellt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/weaveworks\/flux\">Weave Flux<\/a><\/noindex>, was es Ihnen erm\u00f6glicht, Vorlagen in ein Git-Repository zu committen und das Deployment nach jedem Commit oder Push des Containers zu aktualisieren. Meine Erfahrung zeigt, dass dieses Werkzeug zu den wichtigsten f\u00fcr die F\u00f6rderung des Pull-Ansatzes geh\u00f6rt, daher werde ich oft darauf verweisen. Wenn Sie mehr dar\u00fcber erfahren m\u00f6chten, wie es verwendet wird, hier ist <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@m.k.joerg\/gitops-weave-flux-in-detail-77ce36945646\">Link zum Artikel<\/a><\/noindex>.<\/p>\n<p><i><b>NB!<\/b> Alle Vorteile der Nutzung von GitOps bleiben f\u00fcr beide Ans\u00e4tze erhalten.<\/i><\/p>\n<h2>Pull-basierter Ansatz<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: Vergleich von Pull- und Push-Methoden\" src=\"\/wp-content\/uploads\/4ed8e6de36bc37d0e747ff99027f8399.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Pull-Ansatz basiert auf der Tatsache, dass alle \u00c4nderungen intern im Cluster angewendet werden. Im Cluster gibt es einen Operator, der regelm\u00e4\u00dfig die verbundenen Git-Repositorys und das Docker-Registry \u00fcberpr\u00fcft. Wenn \u00c4nderungen festgestellt werden, wird der Zustand des Clusters intern aktualisiert. Dieser Prozess gilt im Allgemeinen als sehr sicher, da kein externer Client Administratorrechte f\u00fcr das Cluster hat.<\/p>\n<p><b>Vorteile:<\/b><\/p>\n<ol>\n<li> Kein externer Client hat das Recht, \u00c4nderungen am Cluster vorzunehmen; alle Updates werden intern angewendet.<\/li>\n<li> Einige Werkzeuge erm\u00f6glichen zudem die Synchronisierung von Helm-Charts und deren Anbindung an das Cluster.<\/li>\n<li> Das Docker-Registry kann auf neue Versionen gescannt werden. Wenn ein neues Image verf\u00fcgbar ist, werden das Git-Repository und das Deployment auf die neue Version aktualisiert.<\/li>\n<li> Pull-Tools k\u00f6nnen in verschiedenen Namespaces mit unterschiedlichen Git-Repositories und Zugriffsrechten verteilt werden. Dadurch l\u00e4sst sich ein multitenant-Modell umsetzen. Zum Beispiel kann Team A den Namespace A nutzen, Team B den Namespace B und das Infrastrukturteam kann den globalen Namespace verwenden.<\/li>\n<li> In der Regel sind die Tools sehr leichtgewichtig.<\/li>\n<li> In Kombination mit Tools wie dem Operator <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami-labs\/sealed-secrets\">Bitnami Sealed Secrets<\/a><\/noindex>, k\u00f6nnen Geheimnisse verschl\u00fcsselt im Git-Repository gespeichert und innerhalb des Clusters abgerufen werden.<\/li>\n<li> Es besteht keine Verbindung zu CD-Pipelines, da die Bereitstellungen innerhalb des Clusters erfolgen.<\/li>\n<\/ol>\n<p>\n<b>Nachteile<\/b>:<\/p>\n<ol>\n<li> Die Verwaltung von Deployment-Geheimnissen aus Helm-Charts ist komplizierter als mit herk\u00f6mmlichen, da sie zuerst in Form von, sagen wir, sealed secrets generiert, dann von einem internen Operator entschl\u00fcsselt werden m\u00fcssen, bevor sie f\u00fcr das Pull-Werkzeug verf\u00fcgbar sind. Anschlie\u00dfend kann ein Release in Helm mit den bereits bereitgestellten Geheimnissen gestartet werden. Der einfachste Weg besteht darin, ein Geheimnis mit allen Helm-Werten, die f\u00fcr das Deployment verwendet werden, zu erstellen, es zu entschl\u00fcsseln und in Git zu committen.<\/li>\n<li> Mit dem Pull-Ansatz sind Sie an Tools gebunden, die mit Pulls arbeiten. Dies schr\u00e4nkt die Anpassungsm\u00f6glichkeiten f\u00fcr den Deployment-Prozess im Cluster ein. Beispielsweise wird die Arbeit mit Kustomize kompliziert, da es vor dem Hinzuf\u00fcgen der endg\u00fcltigen Vorlagen zu Git ausgef\u00fchrt werden muss. Ich sage nicht, dass man keine separaten Tools verwenden kann, aber deren Integration in den Deployment-Prozess gestaltet sich schwieriger.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Push-basierten Ansatz<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: Vergleich von Pull- und Push-Methoden\" src=\"\/wp-content\/uploads\/533fc0bd107c3338d323e908ae9e75ab.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm Push-Ansatz initiiert ein externes System (vorwiegend CD-Pipelines) die Bereitstellungen im Cluster nach einem Commit im Git-Repository oder nach erfolgreichem Abschluss der vorherigen CI-Pipeline. In diesem Ansatz hat das System Zugriff auf das Cluster.<\/p>\n<p><b>Vorteile<\/b>:<\/p>\n<ol>\n<li> Die Sicherheit wird durch das Git-Repository und die Build-Pipeline bestimmt.<\/li>\n<li> Helm-Charts lassen sich einfacher bereitstellen, und es gibt Unterst\u00fctzung f\u00fcr Helm-Plugins.<\/li>\n<li> Die Verwaltung von Geheimnissen ist einfacher, da Geheimnisse in Pipelines angewendet und je nach Benutzerpr\u00e4ferenz verschl\u00fcsselt im Git gespeichert werden k\u00f6nnen.<\/li>\n<li> Es gibt keine Bindung an ein spezifisches Tool, da verschiedene Typen verwendet werden k\u00f6nnen.<\/li>\n<li> Container-Versionen k\u00f6nnen \u00fcber die Build-Pipeline aktualisiert werden.<\/li>\n<\/ol>\n<p>\n<b>Nachteile<\/b>:<\/p>\n<ol>\n<li> Zugangsdaten zum Cluster befinden sich innerhalb des Build-Systems.<\/li>\n<li> Die Aktualisierung von Containern in Deployments l\u00e4sst sich nach wie vor einfacher mit einem Pull-Prozess durchf\u00fchren.<\/li>\n<li> Es besteht eine starke Abh\u00e4ngigkeit von der CD-System, da die ben\u00f6tigten Pipelines m\u00f6glicherweise urspr\u00fcnglich f\u00fcr Gitlab Runners geschrieben wurden und das Team dann entscheidet, zu Azure DevOps oder Jenkins zu wechseln\u2026 was eine Migration einer gro\u00dfen Anzahl von Build-Pipelines erforderlich macht.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Fazit: Push oder Pull?<\/h2>\n<p>\nWie so oft hat jede Herangehensweise ihre Vor- und Nachteile. Einige Aufgaben lassen sich leichter mit einer Methode umsetzen, w\u00e4hrend andere eine andere Vorgehensweise erfordern. Zun\u00e4chst habe ich Deployments manuell durchgef\u00fchrt, aber nachdem ich auf einige Artikel \u00fcber Weave Flux gesto\u00dfen bin, entschied ich mich, GitOps-Prozesse f\u00fcr alle Projekte einzuf\u00fchren. F\u00fcr die grundlegenden Templates war das einfach, doch dann stie\u00df ich auf Herausforderungen im Umgang mit Helm-Charts. Zu dieser Zeit bot Weave Flux nur eine sehr rudiment\u00e4re Version des Helm Chart Operators an, aber selbst jetzt sind einige Aufgaben komplizierter, da man Geheimnisse manuell erstellen und anwenden muss. Man k\u00f6nnte sagen, dass der Pull-Ansatz viel sicherer ist, da die Cluster-Zugangsdaten au\u00dferhalb des Clusters nicht zug\u00e4nglich sind, was die Sicherheit so sehr erh\u00f6ht, dass sich der zus\u00e4tzliche Aufwand lohnt.<\/p>\n<p>Nach einigem Nachdenken bin ich zu einer unerwarteten Erkenntnis gelangt: Das ist nicht der Fall. Wenn es um Komponenten geht, die maximalen Schutz ben\u00f6tigen, geh\u00f6ren dazu geheimnisvolle Speicher und CI\/CD-Systeme sowie Git-Repositories. Die Informationen darin sind recht anf\u00e4llig und bed\u00fcrfen gr\u00f6\u00dftm\u00f6glichen Schutzes. Dar\u00fcber hinaus, wenn jemand in Ihr Git-Repository eindringt und dort Code pushen kann, kann er alles bereitstellen, was er m\u00f6chte (unabh\u00e4ngig davon, ob es sich um einen Pull- oder Push-Ansatz handelt) und in die Systeme des Clusters eindringen. Somit sind die beiden wichtigsten Komponenten, die Schutz ben\u00f6tigen, das Git-Repository und die CI\/CD-Systeme und nicht die Anmeldedaten des Clusters. Wenn Sie gut konfigurierte Richtlinien und Sicherheitsma\u00dfnahmen f\u00fcr solche Systeme haben und die Anmeldedaten des Clusters nur als Geheimnisse in die Pipelines extrahiert werden, k\u00f6nnte die zus\u00e4tzliche Sicherheit des Pull-Ansatzes nicht so wertvoll sein, wie zun\u00e4chst angenommen.<\/p>\n<p>Wenn der Pull-Ansatz also arbeitsintensiver ist und keinen Sicherheitsgewinn bringt, w\u00e4re es dann nicht logisch, nur den Push-Ansatz zu verwenden? Aber jemand k\u00f6nnte argumentieren, dass man im Push-Ansatz zu sehr an ein CD-System gebunden ist und es m\u00f6glicherweise besser ist, dies nicht zu tun, um zuk\u00fcnftige Migrationen zu erleichtern.<\/p>\n<p>Meiner Meinung nach (wie immer) sollte man das verwenden, was am besten zum jeweiligen Fall passt oder kombinieren. Ich pers\u00f6nlich nutze beide Ans\u00e4tze: Weave Flux f\u00fcr Deployments, die auf Pull basieren, die haupts\u00e4chlich unsere eigenen Dienste einschlie\u00dfen, und den Push-Ansatz mit Helm und Plugins, der die Anwendung von Helm-Charts im Cluster vereinfacht und die Erstellung von Secrets problemlos erm\u00f6glicht. Ich denke, es wird nie eine einheitliche L\u00f6sung geben, die f\u00fcr alle F\u00e4lle geeignet ist, da es immer viele Nuancen gibt, die vom spezifischen Anwendungsfall abh\u00e4ngen. Dennoch empfehle ich GitOps nachdr\u00fccklich \u2013 es erleichtert das Leben erheblich und erh\u00f6ht die Sicherheit.<\/p>\n<p>Ich hoffe, dass meine Erfahrungen zu diesem Thema Ihnen helfen, zu entscheiden, welche Methode am besten f\u00fcr Ihre Art von Deployments geeignet ist, und ich w\u00fcrde mich freuen, Ihre Meinung zu h\u00f6ren.<\/p>\n<h2>P.S. Hinweis des \u00dcbersetzers<\/h2>\n<p>\nEin Nachteil des Pull-Modells ist, dass es schwierig ist, gerenderte Manifeste in Git abzulegen. Ein Vorteil ist jedoch, dass die CD-Pipeline im Pull-Modell unabh\u00e4ngig vom Rollout existiert und im Grunde zu einer Pipeline der Kategorie wird. <i>Continuous Apply<\/i>. Daher wird es noch mehr Aufwand erfordern, um den Status aller Deployments zu sammeln und irgendwie Zugang zu Logs\/Status zu gew\u00e4hren, idealerweise mit Bezug auf das CD-System.<\/p>\n<p>In diesem Sinne erm\u00f6glicht das Push-Modell, zumindest einige Garantien f\u00fcr das Rollout zu geben, da die Lebensdauer des Pipelines dem Rollout-Zeitraum gleichgesetzt werden kann.<\/p>\n<p>Wir haben beide Modelle getestet und sind zu denselben Schlussfolgerungen gekommen wie der Autor des Artikels:<\/p>\n<ol>\n<li> Das Pull-Modell eignet sich f\u00fcr die Aktualisierung von Systemkomponenten auf einer gro\u00dfen Anzahl von Clustern (siehe <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">Artikel \u00fcber den Addon-Operator<\/a><\/noindex>).<\/li>\n<li> Das Push-Modell basierend auf GitLab CI eignet sich hervorragend f\u00fcr das Deployen von Anwendungen mit Helm-Charts. Dabei wird das Deployment im Rahmen der Pipelines mit einem Tool verfolgt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex>\u00dcbrigens haben wir im Kontext dieses Projekts st\u00e4ndig von \"GitOps\" geh\u00f6rt, als wir die dr\u00e4ngenden Probleme von DevOps-Ingenieuren an unserem Stand auf der KubeCon Europe '19 diskutierten.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P.P.S. vom \u00dcbersetzer<\/h2>\n<p>\nLesen Sie auch in unserem Blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Kubernetes Tipps &amp; Tricks: Migration von Ressourcen im Cluster unter Helm 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/434160\/\">Wir stellen die Bibliothek kubedog zur \u00dcberwachung von Kubernetes-Ressourcen vor<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Erweiterung und Erg\u00e4nzung von Kubernetes (\u00dcberblick und Video-Pr\u00e4sentation)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436910\/\">Tipps zur Erstellung von benutzerdefinierten Workflows in GitLab CI<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p class=\"for_users_only_msg\">Nur registrierte Benutzer k\u00f6nnen an der Umfrage teilnehmen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Bitte melden Sie sich an.<\/a><\/noindex>Sind Sie an Contour interessiert?<\/p>\n<h2 class=\"default-block__polling-title\">Nutzen Sie GitOps?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ja, Pull-Ansatz<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ja, Push-Ansatz<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ja, Pull + Push-Ansatz<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ja, etwas anderes<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Nein<\/p>\n<\/li>\n<\/ul>\n<p>    30 Nutzer haben abgestimmt. 10 Nutzer haben sich enthalten.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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: Vergleich der Pull- und Push-Methoden | ProHoster","description":"Anm. d. \u00dcbers.: In der Kubernetes-Community gewinnt der Trend namens GitOps zunehmend an Beliebtheit, was wir pers\u00f6nlich auf der KubeCon Europe 2019 best\u00e4tigen konnten. Der Begriff wurde relativ k\u00fcrzlich von Alexis Richardson, dem Gesch\u00e4ftsf\u00fchrer von Weaveworks, gepr\u00e4gt und bezeichnet die Anwendung g\u00e4ngiger Entwicklerwerkzeuge (vor allem Git, was auch den Namen erkl\u00e4rt) zur L\u00f6sung betrieblichen Aufgaben. In","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/35594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=35594"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35594\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=35594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=35594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=35594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}