
Die meisten von uns stellen sich, wenn sie einen weiteren neuen Begriff in der IT-Blogosphäre oder auf einer Konferenz bemerken, irgendwann die Frage: „Was ist das? Ein weiteres Modewort, ein „Buzzword“, oder wirklich etwas, das intensivere Aufmerksamkeit und Studium verdient und neue Horizonte verspricht?“ Genau so ging es mir mit dem Begriff GitOps vor einiger Zeit. Ausgestattet mit einer Vielzahl bereits bestehender Artikel sowie dem Wissen von Kollegen aus der Firma , versuchte ich zu verstehen, welches Tier das ist und wie seine Anwendung in der Praxis aussehen kann.
Übrigens zeigt auch eine kürzlich von uns durchgeführte Umfrage die Neuheit des Begriffs: Mehr als die Hälfte der Befragten hat noch nicht mit seinen Prinzipien gearbeitet. GitOps Das Problem der Infrastrukturverwaltung ist also nicht neu. Viele Cloud-Anbieter sind seit gut einem Jahrzehnt für die breite Öffentlichkeit zugänglich und sollten eigentlich die Arbeit der für die Infrastruktur verantwortlichen Teams einfach und unkompliziert gemacht haben. Im Vergleich zum Anwendungsentwicklungsprozess (in dem der Automatisierungsgrad ständig neue Höhen erreicht) beinhalten Infrastrukturprojekte jedoch immer noch häufig viele manuell durchgeführte Aufgaben und erfordern spezielles Wissen und Fachkräfte, insbesondere im Hinblick auf die modernen Anforderungen an Ausfallsicherheit, Flexibilität, Skalierbarkeit und Elastizität.
Cloud-Dienste haben diese Anforderungen sehr erfolgreich erfüllt, und genau sie gaben einen erheblichen Impuls für die Entwicklung des Ansatzes
IaC . Das ist verständlich. Denn nur sie ermöglichten die vollständige Konfiguration eines virtuellen Rechenzentrums: Keine physischen Server, keine Racks, keine Netzwerkkomponenten, die gesamte Infrastruktur kann durch Skripte und Konfigurationsdateien beschrieben werden.Was ist also der Unterschied?
Der gesamte Code wird in einem Git-Repository gespeichert. GitOps ab . Das ist verständlich. Denn nur sie ermöglichten die vollständige Konfiguration eines virtuellen Rechenzentrums: Keine physischen Server, keine Racks, keine Netzwerkkomponenten, die gesamte Infrastruktur kann durch Skripte und Konfigurationsdateien beschrieben werden.? Именно с этого вопроса я и начал свое расследование. Пообщавшись с коллегами, у меня получилось выработать следующее сравнение:
GitOps
. Das ist verständlich. Denn nur sie ermöglichten die vollständige Konfiguration eines virtuellen Rechenzentrums: Keine physischen Server, keine Racks, keine Netzwerkkomponenten, die gesamte Infrastruktur kann durch Skripte und Konfigurationsdateien beschrieben werden.
Die Versionskontrolle des Codes ist nicht zwingend.
Deklarative Beschreibung des Codes / Idempotenz
Sowohl deklarative als auch imperative Beschreibungen sind zulässig.
Änderungen treten mit den Mechanismen Merge Request / Pull Request in Kraft.
Genehmigung, Zustimmung und Zusammenarbeit sind nicht zwingend.
Der Prozess der Bereitstellung von Updates ist automatisiert.
Der Prozess der Bereitstellung von Updates ist nicht standardisiert (automatisch, manuell, Dateikopie, Nutzung der Kommandozeile usw.).
Mit anderen Worten
ist genau durch die Anwendung der Prinzipien entstanden. GitOps kam genau durch die Anwendung von Prinzipien zur Welt. . Das ist verständlich. Denn nur sie ermöglichten die vollständige Konfiguration eines virtuellen Rechenzentrums: Keine physischen Server, keine Racks, keine Netzwerkkomponenten, die gesamte Infrastruktur kann durch Skripte und Konfigurationsdateien beschrieben werden.. Zunächst einmal können die Infrastruktur und Konfigurationen jetzt genauso gespeichert werden wie die Anwendungen. Der Code lässt sich leicht speichern, teilen, vergleichen und Versionierungsmöglichkeiten nutzen. Versionen, Branches, Historie. Und all das an einem für das gesamte Team zugänglichen Ort. Daher war es eine logische Entwicklung, Versionskontrollsysteme zu nutzen. Insbesondere git, als das populärste.
Andererseits gibt es jetzt die Möglichkeit, die Infrastrukturemanagementprozesse zu automatisieren. Das kann jetzt schneller, zuverlässiger und kostengünstiger geschehen. Zumal die Prinzipien von CI / CD bereits bekannt und bei Softwareentwicklern beliebt waren. Es musste nur das bereits bekannte Wissen und die Fähigkeiten in ein neues Feld übertragen und angewendet werden. Diese Praktiken gingen jedoch über die Standarddefinition von Infrastruktur als Code hinaus, und so entstand der Begriff GitOps.

Neugier GitOps, natürlich auch darin, dass es sich nicht um ein Produkt, ein Plugin oder eine Plattform handelt, die mit einem bestimmten Anbieter verbunden ist. Es ist vielmehr ein Paradigma und eine Sammlung von Prinzipien, ähnlich wie ein anderer uns bekannter Begriff: DevOps.
Im Unternehmen Wir haben zwei Definitionen dieses neuen Begriffs entwickelt: theoretisch und praktisch. Beginnen wir mit der theoretischen:
GitOps ist eine Methodologie, die fortschrittliche Prinzipien von DevOps nutzt, die für die Anwendungsentwicklung verwendet werden, wie Versionierung, Zusammenarbeit, Genehmigung, CI/CD, und diese anwendet, um Aufgaben zur Automatisierung des Infrastruktursmanagements zu lösen.
Alle Prozesse GitOps arbeiten unter Verwendung bereits vorhandener Werkzeuge. Der gesamte Infrastrukturcode wird in dem bereits bekannten git-Repository gespeichert, Änderungen durchlaufen den gleichen Genehmigungsprozess wie jeder andere Programmiercode, und der Rollout-Prozess ist automatisiert, was es ermöglicht, menschliche Fehler zu minimieren und die Zuverlässigkeit sowie Reproduzierbarkeit zu erhöhen.
Aus praktischer Sicht beschreiben wir GitOps folgendermaßen ausführen:

Infrastruktur als Code haben wir bereits als eines der Schlüsselelemente dieser Formel erörtert. Lassen Sie uns die anderen Teilnehmer vorstellen.
Merge Request (alternative Bezeichnung für Pull Request). Im Hinblick auf den MR-Prozess ist es eine Anfrage zur Implementierung von Codeänderungen und anschließendem Zusammenführen von Branches. Was die verwendeten Werkzeuge betrifft, ist es vielmehr die Möglichkeit, ein umfassendes Bild aller vorgenommenen Änderungen zu erhalten: nicht nur den Code-Diff, der aus einer Reihe von Commits zusammengestellt ist, sondern auch den Kontext, die Testergebnisse und das erwartete Endergebnis. Wenn wir über Infrastrukturcode sprechen, interessiert uns, wie sich die Infrastruktur konkret ändern wird, wie viele neue Ressourcen hinzugefügt, entfernt oder geändert werden. Ideal wäre ein bequemer und leicht lesbarer Format. Im Fall von Cloud-Anbietern wäre es nützlich zu wissen, welche finanziellen Konsequenzen diese Änderung nach sich zieht.
Aber der MR ist auch ein Mittel zur Zusammenarbeit, Interaktion und Kommunikation. Der Ort, an dem das System von Checks and Balances in Kraft tritt. Von einfachen Kommentaren bis hin zu formalen Genehmigungen und Bestätigungen.
Und die letzte Komponente: CI/CD, wie wir bereits wissen, ermöglicht die Automatisierung des Prozesses von Infrastrukturänderungen, Tests (von einfacher Syntaxprüfung bis hin zu komplexerer statischer Codeanalyse). Und auch die anschließende Erkennung von Drift: Differenzen zwischen dem aktuellen und dem gewünschten Zustand des Systems. Zum Beispiel aufgrund unautorisierter manueller Änderungen oder Systemausfällen.
Ja, der Begriff GitOps stellt uns nicht vor etwas völlig Neuem, er erfindet das Rad nicht neu, sondern wendet lediglich das bereits angesammelte Wissen in einem neuen Bereich an. Aber gerade darin liegt seine Stärke.
Und falls Sie sich fragen, wie das alles in der Praxis aussieht, lade ich Sie ein, sich unser anzusehen, in der ich Schritt für Schritt erkläre, wie man mit GitLab:
Die grundlegenden Prinzipien von GitOps implementiert
Änderungen an der Cloud-Infrastruktur vornimmt (am Beispiel von Yandex Cloud)
Die Erkennung von Drift des Systems vom gewünschten Zustand mittels aktivem Monitoring automatisiert
https://bit.ly/34tRpwZ
Quelle: habr.com
