Einführung in Argo CD: Ihr bester GitOps-Freund für die Bereitstellung von Anwendungen in Kubernetes
Diane Picchiottino DW0gfo  UU8 Unsplash

Einführung

GitOps ist ein Framework, das den Prozess der Bereitstellung von Infrastruktur automatisiert, insbesondere moderner Cloud-Infrastruktur. Betriebsteams, die GitOps verwenden, nutzen Konfigurationsdateien, die wie Code gespeichert sind (Infrastruktur als Code), ähnlich wie Teams Anwendungsquellcode verwenden. Diese Konfigurationsdateien erzeugen jedes Mal, wenn sie bereitgestellt werden, die gleiche Infrastrukturumgebung, genauso wie Anwendungsquellcode jedes Mal die gleichen Anwendungsbinärdateien erzeugt, wenn er kompiliert wird.

Obwohl ein Großteil des Softwareentwicklungslebenszyklus automatisiert wurde, blieb die Infrastruktur ein größtenteils manueller Prozess, der spezialisierte Teams erfordert. Angesichts der Anforderungen an die heutige Infrastruktur ist es immer wichtiger geworden, die Infrastrukturautomatisierung umzusetzen. Moderne Infrastrukturen müssen elastisch sein, um Cloud-Ressourcen für kontinuierliche Bereitstellungen effektiv zu verwalten.

GitOps in a nutshell - Source: VM Ware https://blogs.vmware.com/cloud/files//2021/02/GitOps-in-a-nutshell.png

Image Source: VM Ware

Die Herausforderungen, auf die GitOps reagieren muss, sind:

  • Verbesserung der Zusammenarbeit im Team
  • Reduzierung des Aufwands für Infrastrukturänderungen (Zeit, manuelle Änderungen)
  • Verbesserung der Sicherheit
  • Gewährleistung einer zuverlässigen Infrastruktur
  • Beibehaltung der Anwendungskonsistenz

Was ist Argo CD?

Argo CD ist ein deklaratives GitOps Continuous Delivery (CD) Tool, das die Orchestrierungsfunktionen von Kubernetes erweitert.

Below is an example of the Argo CD architecture:

Argo CD architecture

Da es sich bei Argo CD um ein GitOps-basiertes Werkzeug handelt, ist das Git-Repository der einzige Single Point of Truth. 

Argo CD vergleicht den gewünschten Zustand, der die Anwendungsdateien im Repository repräsentiert, mit dem Live-Zustand, der die tatsächliche Anwendung im Kubernetes-Cluster darstellt.

Git als Single Source of Truth

Da das GitOps-Framework die Infrastrukturbereitstellung reguliert, ist das Git-Repository in unserer Bereitstellung von zentraler Bedeutung und wird als einzige Schnittstelle für Argo CD betrachtet. Argo CD orchestriert die Bereitstellungen im Kubernetes-Cluster, wobei jede Bereitstellung, die Zuverlässigkeit der Infrastruktur und die Integrität der Anwendung nachverfolgt wird.

Git as Single Source of Truth

Bessere Team-Zusammenarbeit

Manuelle Änderungen am Infrastrukturcluster sind nicht zulässig, wenn Argo CD die Kontrolle hat. Dies zwingt die Teams, die Zusammenarbeit und Kommunikation vor der Einführung einer Änderung zu verbessern, was letztlich zu einer besseren Codequalität und zuverlässigeren Infrastruktur führt.

Team Collaboration

K8s Zugriffskontrolle mit Argo CD

Der Zugriff auf den Kubernetes-Cluster kann nur über Argo CD gesteuert werden. Direkte Infrastrukturänderungen werden verweigert; stattdessen übernimmt Argo CD die erforderlichen Änderungen.

Dieser Ansatz gewährleistet, dass alle Änderungen an der Infrastruktur auf eine kontrollierte und sichere Weise durchgeführt werden. Indem die Verantwortung für die Anwendung von Änderungen an Argo CD delegiert wird, können die Teams sicherstellen, dass Änderungen auf konsistente und zuverlässige Weise durchgeführt werden, was letztendlich zu einer besseren Codequalität und Zuverlässigkeit der Infrastruktur führt.

K8s Access Control with Argo CD

Diffing and drift detection

Wenn jemand manuell die Anwendung in einem Kubernetes-Cluster ändert, wird Argo CD dies erkennen, da der gewünschte Zustand (aus der Git-Quelle) und der Live-Zustand (Kubernetes-Cluster) unterschiedlich sein werden.

Argo CD verfügt über eine Funktion namens selfHeal, die diese Art von Situation verhindert. Wenn es eine Abweichung in der Konfiguration feststellt, ersetzt es den neuesten Zustand, der an die Commit-ID im Git-Repository gebunden ist.

E7f53c04 7c04 49c8 9808 Cdabb58055a4
8e76209b 64e6 4ccf B0ad 159115ae32d2

In a nutshell

  • Argo CD ist ein deklaratives Tool für die kontinuierliche Bereitstellung von Kubernetes-Anwendungen
  • Es bietet eine Kontrollebene, die GitOps für Infrastrukturbereitstellungen in Kubernetes erweitert:
  • Live-Zustand vs. gewünschter Zielzustand
  • Skalierbarkeit, Multi-Mandantenfähigkeit, Sicherheit, Erweiterbarkeit
  • Automatisierung der Anwendungssynchronisation
  • Drift-Erkennung und Differenzierung
  • Echtzeit-Anwendungsstatus
  • Auditierung und Nachverfolgung
  • Helm-Chart-Orchestrierung
  • Kustomize-kompatibel

Schlussfolgerungen

Argo CD ist Ihr bester Freund für GitOps, da es einen deklarativen GitOps-Ansatz für die kontinuierliche Bereitstellung von Kubernetes-Anwendungen bietet. Mit Argo CD können Sie die Anwendungssynchronisation automatisieren, Drift erkennen und auf den Echtzeit-Anwendungsstatus zugreifen. Darüber hinaus bietet Argo CD Auditierung und Helm-Chart-Orchestrierung, was es zu einer Komplettlösung für Ihre Kubernetes-Bereitstellungsbedürfnisse macht.

[Wie geht es weiter?

Wir bei Hivemind Technologies haben umfangreiche Erfahrung in der Migration von monolithischen Anwendungen in Kubernetes-Cloud-Dienste wie AWS und Azure sowie in der Umgestaltung der Prozesse für die Bereitstellung Ihrer Dienste im Hinblick auf Skalierbarkeit, Flexibilität und Zuverlässigkeit.

Wir können Argo CD in Kubernetes integrieren und die Continuous Integration und Continuous Delivery (CI/CD) der Anwendungsbereitstellung, den Betriebszustand durch die Observability- und Tracing-Plattform und den Rechenressourcen-Footprint des Clusters verwalten, um Kosten zu senken und die Leistung zu verbessern.