Image

Image
Ashutosh Tamhankar
Cloud Engineer

Ein Beispiel für den Einsatz von GitOps zur Bereitstellung einer modernen Anwendungs­entwicklungs­plattform

In der heutigen schnelllebigen Welt der Softwareentwicklung setzen Unternehmen zunehmend auf Cloud-native Technologien, um wettbewerbsfähig zu bleiben und schnell innovativ zu werden. Eine wichtige Voraussetzung für diese Transformation ist eine flexible Infrastruktur, die es den Entwicklungsteams ermöglicht, sich auf die Erstellung von Anwendungen zu konzentrieren, anstatt komplexe Umgebungen zu verwalten. Um diese Flexibilität zu erreichen und gleichzeitig die Skalierbarkeit und betriebliche Effizienz aufrechtzuerhalten, ist jedoch ein Wechsel zu deklarativen, automatisierten Verwaltungspraktiken erforderlich.

In diesem Artikel wird untersucht, wie GitOps-Prinzipien in Kombination mit Tools wie OpenShift GitOps (ArgoCD) eine moderne Plattform für die Anwendungsentwicklung bieten können, die das Infrastrukturmanagement vereinfacht, die Autonomie der Entwickler stärkt und Innovationen beschleunigt. Von der deklarativen Cluster-Konfiguration bis zum Self-Service-Tenant-Onboarding erfahren Sie, wie diese Praktiken die Anwendungsbereitstellung rationalisieren und den Unternehmenserfolg unterstützen.

Flexible Infrastruktur: der Schlüssel zur Optimierung des Erfolgs der Anwendungsentwicklung

„Wir sehen, dass erfolgreiche Teams eher die Vorteile einer flexiblen Infrastruktur nutzen als weniger erfolgreiche Teams“, heisst es im State of DevOps Report 2024. Damit Unternehmen jedoch erfolgreich sein können, muss ein völlig neues Paradigma bei der Entwicklung, Erstellung, Bereitstellung und Ausführung von Anwendungen eingeführt werden. Um diese Flexibilität direkt in ihren Rechenzentren zu ermöglichen, haben sie beschlossen, ihren Anwendungsentwicklungsteams eine moderne Anwendungsentwicklungsplattform anzubieten. Die Verwaltung einer solchen Umgebung in grossem Massstab und auf lange Sicht kann jedoch eine Herausforderung darstellen, wenn sie manuell geändert und nicht dokumentiert wird. Darüber hinaus besteht einer der Grundsätze einer flexiblen Infrastruktur darin, ihren Entwicklern einen virtuellen Raum zur Verfügung zu stellen, in dem sie mit der Erstellung und Bereitstellung ihrer Microservices beginnen können.

Declarative infrastructure management with OpenShift GitOps (ArgoCD)

GitOps hat sich in unserer Branche weitgehend durchgesetzt. Vielleicht möchtest du also deine Umgebung deklarativ verwalten. OpenShift GitOps nutzt das Open-Source-Projekt ArgoCD zur Implementierung von GitOps.
Git Ops Schaugrafik
Du kannst zum Beispiel als Code angeben, dass du den OpenShift-Cluster so konfigurieren möchtest, dass er ein externes Geheimnis verwendet, das einen geheimen Schlüssel speichert.

Das bedeutet, dass der gewünschte Zustand der Ressource „ExternalSecret“, die in einem Git-Repository deklariert ist, auf den Cluster angewendet wird und regelmässig synchronisiert werden kann, um den gewünschten Zustand im Cluster zu erhalten.
HYCU External Secrets

Die obige yaml-Konfiguration ruft den Wert für den geheimen Schlüssel ab, der als awsSecretAccessKey im AWS Secrets Manager gespeichert ist.

Nun hast du den gewünschten Zustand im Git-Repository dokumentiert, der jederzeit zurückgesetzt werden kann, da keine Änderungen an der Infrastruktur zwingend über die CLI für den OpenShift-Cluster vorgenommen werden müssen.

Beim Aufbau einer Plattform für Ihre Anwendungsteams wirst du mit zwei Fragen konfrontiert:

- Wie kann der OpenShift-Cluster deklarativ konfiguriert werden?
- Wie können neue Softwareentwicklungsteams in den Cluster eingebunden werden?

Gemäss dem GitOps-Prinzip wird alles als Code verwaltet. Daher sollten die Berechtigungen für das Git-Repository beibehalten werden, um Änderungen durch Personen ausserhalb des Plattformteams zu verhindern. Alle Änderungen, die von Entwicklern für das Onboarding auf der Plattform angefordert werden, sollten durch das Öffnen einer Pull-Anfrage erfolgen.

Hier eine Illustration, wie wir die GitOps-Prinzipien bei der Konfiguration unseres OpenShift-Labors bei Amanox eingesetzt haben.

UseCase HYCU

Cluster Konfiguration:

Die Bausteine für die deklarative Clusterkonfiguration sind die folgenden:

Helm-Charts: Diese sind wie ein Paketmanager für Kubernetes-Anwendungen, die als ein Satz von Kubernetes-Ressourcen beschrieben werden.

Kustomize: Es verwaltet verschiedene Varianten Ihrer Anwendungskonfiguration, ohne die ursprünglichen YAML-Dateien zu verändern.

ArgoCD-Instanzen: Dies ist eine Anwendung, die kontinuierliche Bereitstellungen auf dem Cluster verwaltet. Um eine Eskalation der Privilegien zu vermeiden, wurden zwei ArgoCD-Instanzen eingerichtet. Eine dieser Instanzen wird für die Konfiguration des Clusters verwendet.

Das „App of Apps“-Pattern: Eine übergeordnete Anwendung setzt mehrere untergeordnete Anwendungen ein.

ArgoCD-Applications: Dies sind Kubernetes-Ressourcen, die die Quelle (Git-Repository) und das Ziel (Zielcluster) für die automatische Bereitstellung Ihrer Anwendungen definieren.

ArgoCD ApplicationSets: Dies sind ArgoCD-Ressourcen für die automatische Generierung von ArgoCD-Anwendungen auf der Grundlage von Vorlagen und Quellen wie Git-Repositories, Clusterlisten usw.
Die Helm-charts werden als Formen (Quadrate, Dreiecke, etc.) dargestellt, die bestimmte Teile des Clusters mit bestimmten Parametern konfigurieren. Diese Parameter können je nach der Umgebung, in der sie installiert werden müssen, angepasst oder gepatcht werden. Dies geschieht durch die Verwendung von Overlays (kustomize), um bestimmte Basiskonfigurationen auf diese Zielumgebungen zu übertragen.

Dabei kann es sich beispielsweise um verschiedene Cluster-Umgebungen handeln, die eine Test-, eine Entwicklungs- oder eine Produktivumgebung darstellen, wenn diese vollständig isoliert werden sollen. Unten sehen Sie eine vereinfachte Darstellung dieses Konzepts, die drei verschiedene Umgebungen zeigt, die auf der Grundlage der Basiskonfigurationen unterschiedlich konfiguriert sind (farblich gekennzeichnet). Die Basiskonfigurationen enthalten wiederum verschiedene Kubernetes-Ressourcen, die mit Helm- oder ArgoCD-Anwendungen konfiguriert werden. Stell dir die Overlays wie Pizzabeläge vor. Ihre Basiskonfiguration ist wie ein Pizzaboden und verschiedene Beläge definieren die endgültige Art Ihrer Pizza. Eine Margherita wird andere Beläge haben als eine Napolitana. In ähnlicher Weise unterscheiden sich auch die Parameter, die in den Zielumgebungen gepatcht werden müssen. Daher kannst du den Code für die Konfiguration verschiedener Umgebungen wiederverwenden.

Overlays HYCU
Die Clusterkonfiguration wird durch ein ArgoCD App of Apps-Muster ausgelöst, das die einzige ArgoCD-Anwendung ist, die manuell eingesetzt wird. Sie ist wie ein Funke, den man braucht, um ein Feuer zu entfachen. In ähnlicher Weise werden automatisch untergeordnete ArgoCD-Anwendungen erstellt, die durch das Overlay mit Kustomize erweitert werden und die verschiedenen Varianten der „Basis“-ArgoCD-Anwendungen darstellen. Damit dieses Setup funktioniert, musst du einen OpenShift-Cluster mit den Operatoren OpenShift GitOps und ExternalSecrets betreiben.

Onboarding von Tenants durch Selbstbedienung:

Zu den Aufgaben der Clusterkonfiguration gehört auch die Schaffung von Namensräumen im Cluster für Anwendungsteams, die wir Tenant Onboarding nennen. Stell dir diese Bereiche wie Kabinen in einem Co-Working Space vor, in denen du arbeiten und andere Dienste wie die Speisekammer oder den Aufenthaltsraum nutzen kannst, die von anderen Mitarbeitern mitbenutzt werden. In ähnlicher Weise erhalten die Tenants ihren eigenen Namensraum und nutzen die Worker Nodes oder die Tektin/ArgoCD-Instanz, die für die Erstellung und Bereitstellung ihrer Anwendungen verwendet werden, gemeinsam mit anderen Tenants. Dies wiederum ermöglicht Selbstbedienungsfunktionen für Ihre Entwicklungsteams. Der Arbeitsablauf könnte wie folgt aussehen:

Das Anwendungsteam erstellt eine Pull-Anfrage, um sich selbst einzubinden, indem es Informationen (Parameter) zur Verfügung stellt, die es betreffen, wie die AD-Gruppe, zu der sein Team gehört, die Anzahl und Namen der verschiedenen benötigten Umgebungen, das Repo für den Quellcode seiner Anwendung und Kubernetes-Anwendungsmanifeste, die seine CI/CD-Pipeline definieren.

Nach dem Hinzufügen einer Tenant-Parameterdatei zum Git-Repo, die wie folgt aussehen könnte:

HYCU Terminal
Wir verwenden ApplicationSets für die Erstellung von Vorlagen für ArgoCD-Anwendungen, die auf den Parametern basieren, die vom Mandanten im Cluster-Konfigurations-Repository bereitgestellt werden. Neue Namespaces werden gemäss der Anforderung des Benutzers (Tenants) erstellt, die er nach erfolgreicher Erstellung seiner ArgoCD-Anwendungen sehen sollte.
HYCU Terminal
Sobald dies eingerichtet ist, können die neuen Tenants ihre CI/CD-Pipelines konfigurieren oder sich über die OpenShift-Konsole in ihren Namespaces anmelden.
HYCU

Schlussfolgerung - Rationalisierung der Anwendungsentwicklung

Das Plattformteam kann ganz einfach mit der Pflege der Clusterkonfiguration beginnen, ein Failover zu einem warmen Standby-Cluster durchführen und es seinen Anwendungsentwicklungsteams ermöglichen, OpenShift schnell für die Entwicklung neuer Software zu nutzen. Erfahre mehr über die Erfolgsgeschichte eines Kunden, der OpenShift zur Modernisierung seiner DotNet-basierten Anwendungen eingesetzt hat: Success Story Galliker.

Danksagung

Dieser Blog profitiert von den Rückmeldungen von Leo Schoechli (Cloud Engineer), Samuel Rothenbühler (CTO), Andreas Wenger (Presales Engineer) und Raphael Wirtz (Cloud Engineer).

Tipp: Coffeebreak with Amanox

Image
Donnerstag, 13. März 2025 / 27. März 2025, 10:00 - 10:30 Uhr

Coffeebreak with Amanox

Lust auf eine virtuelle Kaffeepause? Erfahre mehr zum Thema während unseres Webinars zu unserem Hands-on-Workshop zur Entwicklung von Anwendungsplattformen mit OpenShift. Jetzt anmelden!
Jetzt anmelden
HYCU Teaser

Vereinfache deinen Datacenter Fussabdruck im hybriden Cloudzeitalter

Wir alle befinden uns in einer Welt, die sich rasch auf exponentielle technologische Fortschritte zubewegt. Für Unternehmen ist es von entscheidender Bedeutung, ihre IT-Plattformen nicht nur anzupassen, sondern sie auch zukunftssicher zu machen.
zum Artikel
HYCU Teaser

HYCU Data Protection bietet resilientes Backup-Management im hybriden Cloudzeitalter

Ist dir in den letzten Monaten auch schon mal der Gedanke gekommen, dass die technologische Entwicklung in atemberaubendem Tempo voranschreitet!?! Im Blog merkst du schnell, damit bist du nicht alleine.
zum Artikel
HYCU Story Teaser

Digitale Transformation mit HYCU und Nutanix

Die digitale Transformation ist längst keine Option mehr, sondern eine Notwendigkeit. Wer sich nicht anpasst, bleibt zurück. Doch was, wenn du nicht nur Schritt halten, sondern aktiv Einfluss nehmen willst? Das erfährst du in diesem Blogbeitrag.
zum Artikel
Image

Vollautomatisierte MLOps-Pipeline - Teil 2

In unserem letzten Beitrag haben wir uns mit dem Training eines Prognosemodells mit SageMaker beschäftigt. In diesem Beitrag erfährst du, wie du die Leistung des Modells überwachen und die Nachschulung automatisieren kannst, um konsistente und zuverlässige Vorhersagen zu gewährleisten.
zum Artikel