Wie funktioniert GitOps? GitOps ist ein innovativer Ansatz, bei dem Git als zentrale Quelle für die Verwaltung von Infrastruktur und Anwendungen dient. Durch die Verwendung von Git-Prinzipien in der Operations-Seite der Softwareentwicklung wird eine transparente, versionierte und automatisierte Bereitstellung ermöglicht. Diese sorgt besonders in komplexen Kubernetes-Umgebungen für erhöhte Effizienz, Sicherheit und Reproduzierbarkeit. Tools wie ArgoCD und Flux spielen dabei eine entscheidende Rolle und unterstützen eine nahtlose Integration von CI/CD-Prozessen.
Index
Was ist GitOps
GitOps ist eine Methode, die Git-Repositories als zentrale Quelle für die Bereitstellung von Infrastruktur als Code verwendet. Der Begriff setzt sich aus „Git“ und „Ops“ (Operations) zusammen und beschreibt die Anwendung von Git-Prinzipien auf die Operations-Seite der Softwareentwicklung. Der eingereichte Code wird durch einen CI-Prozess (Continuous Integration) überprüft, während der CD-Prozess (Continuous Delivery) sicherstellt, dass alle Anforderungen bezüglich Sicherheit, Infrastruktur als Code und andere festgelegte Grenzen des Anwendungs-Frameworks eingehalten werden. Jede Codeänderung wird dokumentiert, wodurch Updates erleichtert und bei Bedarf Rollbacks ermöglicht werden.
Kernelemente / Prinzipien von GitOps
Git als Single Source of Truth
Alle Konfigurationsdaten und Infrastrukturdefinitionen werden in Git-Repositories gespeichert. Jede Änderung wird durch einen Commit und Push in das Repository vorgenommen, wodurch ein vollständiger Verlauf aller Änderungen vorliegt.
Automatisierte Bereitstellung und Verwaltung
CI/CD-Pipelines nutzen Git-Repositories, um automatisch Änderungen an Infrastruktur und Anwendungen zu überprüfen, zu testen und bereitzustellen.
Kontinuierliche Überwachung und Synchronisation
Tools wie Kubernetes und andere Management-Tools stellen sicher, dass der aktuelle Zustand der Produktionsumgebung stets mit dem in Git definierten Zustand übereinstimmt. Bei Abweichungen werden automatische Korrekturen (Self-Healing) vorgenommen.
Transparenz und Nachvollziehbarkeit
Jede Änderung ist nachvollziehbar und auditierbar, was die Sicherheits- und Compliance-Anforderungen unterstützt.
Erhöhte Effizienz und Kollaboration
Durch die Nutzung der gleichen Workflows und Tools wie in der Softwareentwicklung können die Teams von Entwicklern und Operation effizienter zusammenarbeiten.
Vorteile von GitOps in komplexen Kubernetes-Umgebungen
Erhöhte Zuverlässigkeit und Stabilität
Versionierung: Jede Änderung an der Infrastruktur und den Anwendungen ist versioniert. Dies ermöglicht ein einfaches Zurücksetzen auf frühere stabile Versionen, was in komplexen Umgebungen besonders hilfreich ist.
Reproduzierbarkeit: Da die gesamte Konfiguration im Git-Repository gespeichert ist, kann eine Umgebung jederzeit reproduziert werden. Dies erleichtert Tests und die Wiederherstellung bei Ausfällen.
Verbesserte Zusammenarbeit und Transparenz
Pull-Requests und Code-Reviews: Änderungen an der Infrastruktur werden durch Pull-Requests vorgeschlagen und können von Teammitgliedern überprüft und kommentiert werden. Dies fördert die Zusammenarbeit und stellt sicher, dass Änderungen gründlich geprüft werden, bevor sie in Produktion gehen.
Zentrales Repository: Git dient als zentrale Quelle der Wahrheit, was Transparenz schafft und den aktuellen Zustand der Infrastruktur für alle Teammitglieder sichtbar macht.
Warum GitOps
GitOps übernimmt die Philosophien und Ansätze der DevOps-Kultur und bietet ein strukturiertes Framework zur Umsetzung.
GitOps erweitert die vertrauten Git Workflows von Entwicklungsteams auf die Bereiche Bereitstellung, Lifecycle-Management von Anwendungen und Infrastrukturkonfiguration. Änderungen im gesamten Anwendungs-Lifecycle werden im Git-Repository verfolgt und sind auditierbar. Dies ermöglicht es Entwicklungsteams, in ihrem eigenen Tempo zu arbeiten, ohne auf Ressourcen oder Genehmigungen von Operations-Teams warten zu müssen.
Die Transparenz der Änderungen erleichtert es den Ops-Teams, Probleme schnell zu identifizieren und zu reproduzieren, was die Sicherheit erhöht. Ein aktueller Audit-Trail hilft, das Risiko unerwünschter Änderungen zu minimieren und diese zu korrigieren, bevor sie in die Produktion gelangen.
Durch die Integration von Codeänderungen von der Entwicklung bis zur Produktion gewinnen man an Agilität, um schnell auf Veränderungen reagieren zu können.
Was unterscheidet GitOps von DevOps?
GitOps gibt uns Tools an die Hand, mit dem wir DevOps-Praktiken wie Zusammenarbeit, CI/CD und Versionskontrolle auf die Infrastrukturautomatisierung und das Deployment von Anwendungen anwenden können. Die Entwicklungsteams können in den Code-Repositories arbeiten, die sie bereits kennen, während das Operations-Team die weiteren notwendigen Teile bereitstellt.
GitOps Tools
ArgoCD und Flux sind die beliebtesten Optionen für GitOps. ArgoCD und Flux haben maßgeblich zum Aufstieg von GitOps beigetragen und sind Teil der OpenGitOps-Initiative der CNCF (Cloud Native Computing Foundation). Im Jahr 2022 haben beide Tools den CNCF-Graduiertenstatus erreicht.
ArgoCD präsentiert sich als umfassende GitOps-Lösung, die mit ihren vielfältigen Funktionen ein abgerundetes GitOps-Erlebnis bietet, während Flux mit seiner breiten Palette an Integrationen und Erweiterungen durch seine Anpassungsfähigkeit und Individualisierung besticht.
Zusätzlich verfügen Argo CD und Flux über eine Befehlszeilen-Schnittstelle, ein Grafana-Metrik-Dashboard sowie API-Aufrufe.
Argo CD
Argo CD setzt sich aus den Begriffen „Argo“ und „CD“ zusammen. Das „Argo Project“ bietet Open Source Tools für Kubernetes und ist ein Projekt der CNCF. Neben Argo CD umfasst das Argo Projekt auch Argo Rollouts, Argo Events und Argo Workflows.
Argo CD bietet eine effiziente und einfache Möglichkeit, deklarative und versionierte Anwendungsbereitstellungen durchzuführen. Es überwacht und übernimmt automatisch Änderungen an den Manifesten im Git-Repository. Zudem ermöglicht es ein einfaches Rollback, sodass frühere Zustände wiederhergestellt werden können, ohne dass jedes Update im Cluster manuell rückgängig gemacht werden muss.
Ein großer Vorteil von Argo CD ist der einfache Disaster-Recovery-Prozess für Cluster. Dank seiner Natur kann der gleiche Zustand im Cluster automatisch ohne manuellen Eingriff wiederhergestellt werden, selbst bei einem Cluster-Ausfall. Außerdem bietet Argo CD eine automatische Selbstheilungsfunktion: Ist diese aktiviert, stellt Argo CD den definierten Zustand aus dem Git-Repository wieder her, sobald eine Abweichung auftritt.
Flux
Flux ist ein Tool, das Kubernetes-Cluster mit Konfigurationsquellen wie Git-Repositories synchron hält und automatische Aktualisierungen der Konfiguration vornimmt, wenn neuer Code bereitgestellt werden soll.
Es ist mit den Komponenten des GitOps Toolkit aufgebaut, das aus folgenden Elementen besteht:
- Spezialisierte Tools und Flux-Controller
- Modularen APIs
- Wiederverwendbaren Go-Paketen für GitOps, die unter der fluxcd auf GitHub verfügbar sind.
Diese Komponenten sind darauf ausgelegt, Continuous Delivery auf Kubernetes zu ermöglichen.
Flux wurde von Grund auf entwickelt, um das API-Erweiterungssystem von Kubernetes zu nutzen und sich nahtlos in Prometheus sowie andere Kernkomponenten des Kubernetes-Ökosystems zu integrieren. Es unterstützt Multi-Tenancy und kann eine beliebige Anzahl von Git-Repositories synchronisieren.
Fazit
Wir bei der Firstattribute AG bauen unsere Kubernetes-Plattform nun schon seit einigen Jahren auf. Als wir unsere K8S Reise begannen, nutzten wir ARM Templates (Azure Ressource Manager Templates), um unsere Cluster in Azure zu erstellen.
Bald stellten wir fest, dass wir viel Zeit damit verbrachten, Ressourcen manuell zu erstellen und zu pflegen. Wir entschieden uns, Ressourcen mit GitOps bereitzustellen und zu verwalten. Das Ergebnis ist, dass wir jetzt schneller vorankommen und die Compliance, Sicherheit und Auditierbarkeit unserer my-IAM platform verbessern konnten.
Bei der FirstAttribute AG unterstützt uns Flux sowie Argo CD in unserer Kundenumgebung bei einer agilen Softwareentwicklung, um sehr schnell und effizient für unsere Kundenprojekte und my-IAM platform Änderungen auf einem Testsystem oder Produktivsystem bereitzustellen. Es hilft dabei, GitOps-Techniken für schnellere und sicherere Deployments anzuwenden.
Unterstützung benötigt?
Gerne stellen wir Ihnen unsere Leistungen und Lösungen in einem persönlichen Gespräch vor und würden uns über Ihre Kontaktaufnahme sehr freuen!
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>