[email protected]

Oder wie wir GitLab als Tool bei unserem DevOps Circle einsetzen. 

[email protected] vertreten schon seit Langem den DevOps Ansatz und nutzen als unterstützendes Tool GitLab. In diesem Blogpost möchten wir euch von unseren Erfahrungen mit GitLab als Tool im DevOps Circle berichten.

Wofür steht DevOps?

DevOps ist ein Ansatz in der Software-Bereitstellung, der vermehrt genutzt wird. DevOps ermöglicht es zuvor getrennten Rollen wie Entwicklung/Development, IT-Betrieb/Operation und Qualitätssicherung, sich zu koordinieren und zusammenarbeiten, um bessere, sicherere und zuverlässigere Produkte zu liefern.  Die Einführung von DevOps, den dazugehörigen Methoden und Tools hilft den Teams besser auf die Anforderungen ihrer Kunden reagieren zu können.

Unsere Top 5, die für den DevOps Ansatz sprechen

  1. Er verbessert die Time to Market.
  2. Er hilft, die Stabilität und Zuverlässigkeit von Systemen zu stärken.
  3. Er erleichtert den Entwicklungsprozess und unterstützt uns dabei, schneller etwas ausprobieren zu können.
  4. Er bietet mehr Flexibilität.
  5. Er unterstützt die Anpassung an den Markt und Wettbewerb.

                                                                                          Quelle: GitLab DevOps Lifecycle

Wie sieht der DevOps [email protected] aus?

Wir entwickeln agil und nutzen GitLab in allen Phasen des Anwendungslebenszyklus von Planung über Entwicklung und Bereitstellung bis zum Betrieb der Anwendung bzw. des Produktes zum Beispiel Kubernetes. Jede Phase hängt von den anderen ab und und durch die Nutzung von nur einem Tool für den gesamten Zyklus können wir optimal arbeiten und vermeiden Fehler und Zeitverlust, die durch „Toolumbrüche“ enstehen können. Anhand der Version des DevOps Circle von GitLab möchten wir euch unser Vorgehen in den einzelnen Phasen vorstellen. 

DevOp [email protected]

Plan | Create | Verify | Package |Release | Configure | Monitor 

Plan |  In der Planungsphase konzipieren wir die Features und Funktionen für die Anwendungen und Systeme basierend auf den Anforderungen und dem Feedback unserer Kunden.  Für die Erstellung und die Planung der Anforderungen nutzen wir GitLab als Ticket-Management-System. In GitLab pflegen wir unsere Backlogs und erstellen unser Sprintboards. Es hilft sicherzustellen, dass wir zur richtigen Zeit an den richtigen Dingen arbeiten. Wir können unsere gesetzten  Meilensteine verfolgen und unseren Fortschritt in Form von Dashboards visualisieren.

Create | Die Entwicklungsphase umfasst bei uns alle Aspekte der Programmierung – vom Schreiben übers Testen und Prüfen hin zum Integrieren des Codes. Des Weiteren das Erstellen des Codes in Buildartefakte, die in unterschiedlichen Umgebungen bereitgestellt werden können. GitLab unterstützt uns beim Entwicklungsprozess und der sicheren Verwaltung von Code und Projektdaten in einem einzigen verteilten Versionskontrollsystem. Das sklalierbare GitLab-Repository nutzen wir zur Zusammenarbeit an Projekten und Codes, so können mehrere Teammitglieder parallel an dem selben Projekt arbeiten.

Verify | GitLab unterstützt uns bei der kontinuierlichen Integration, um die Builds zu automatisieren und den Code zu integrieren und zu verifizieren. Wir nutzen es für manuelle und automatisierte Tests sowie Codequalitätsanalysen. Welche Tests in dieser Phase durchgeführt werden, hängt davon ab, was für die Anwendung relevant ist. Das Gute dabei ist diese Tests beeinträchtigen nicht die Produktionsumgebung. Die Pipelines ermöglichen gleichzeitiges Testen und parallele Ausführung, so erhalten die Teams schnell Einblick in jeden Commit.

Package | Um unsere Anwendungen zu paketieren, Container zu verwalten und Artefakte zu erstellen nutzen wir die in GitLab integrierte und vorkonfigurierte Container-Registry und das Artefakt-Repository. Was uns daran überzeugt hat, ist das perfekte Zusammenspiel der Registry mit der GitLab-Quellcodeverwaltung und den  Continuous Integration (CI)/ Continuous Delivery (CD)-Pipelines.

Release | Die Release-Phase ist ein Meilenstein in einer DevOps-Pipeline – es ist der Moment, in dem wir sagen, ein Build ist bereit für den Einsatz in der Produktionsumgebung. Bis zu diesem Stadium hat jede Codeänderung eine Reihe von manuellen und automatisierten Tests bestanden.
Für Freigabe und Automatisierung der Bereitstellung der Anwendungen nutzen wir ebenfalls GitLab. Mit der direkt in die Pipeline eingebauten Continuous Delivery (CD) automatisieren wir die Implementierungen in verschiedenen Umgebungen wie Staging und Produktion. Und endlich ist es so weit, das neue Feature ist released und steht unserem Kunden zur Nutzung bereit.

Configure | GitLab hilft uns bei der Konfiguration und Verwaltung unserer Anwendungsumgebungen. Eine starke Integration von Kubernetes reduziert den Aufwand für die Definition und Konfiguration der Infrastruktur, die zur Unterstützung der Anwendung erforderlich ist. Wir schützen den Zugriff auf wichtige Konfigurationsdetails der Infrastruktur wie Kennwörter und Anmeldeinformationen, durch die Verwendung ‚geheimer Variablen‘, um den Zugriff auf autorisierte Benutzer und Prozesse zu beschränken. Wir verwenden ein Secret-Management mit SOPS, um Zugangsdaten nicht im Klartext ablegen zu müssen.

Monitor | Die „letzte“ Phase unseres DevOps-Zyklus besteht aus der Überwachung der Umgebung und der Anwendungen. Wir nutzen für unser Monitoring Prometheus. Es ist ein System- und Dienstüberwachungssystem. Es sammelt in vorgegebenen Intervallen Metriken von konfigurierten Dimensionen und Werten ein und wertet sie aus, zeigt die Ergebnisse an und kann Warnmeldungen auslösen. Aus dem Monitoring gewinnen wir dann neue Erkenntnisse, was zu neuen Anforderungen führt und wir starten wieder bei Plan. Nicht ohne Grund spricht man von einem DevOPs Circle. Es ist ein kontinuierlicher Prozess.

Kurz zusammengefasst – unsere Gründe für GitLab

  • One-Stop-Shop für DevOps
  • Auch in Teilen nutzbar
  • Der Funktionsumfang:
    • Versionsverwaltung
    • CI/CD Pipelines
    • Image Registry
    • Kubernetes und Docker Support

Kubernetes & GitLab – für uns ein ideales Paar

Kubernetes dient zur Verwaltung von Containern, erleichtert die Updateprozesse und unterstützt den sicheren Betrieb von Webanwendungen und Datenbanken.

Gitlab ermöglicht ein flexibles Branchingmodell, um die Anwendung in verschiedenen Versionen stufenweise von Dev nach Staging und Prod zu entwickeln.

GitLab und Kubernetes als Paar vereinfachen die Erprobung von Feature Branches erheblich. Aus einem Feature Branch kann gleichzeitig eine Testanwendung in Kubernetes erstellt werden.

GitLab und Kubernetes unterstützen uns bei der agilen und iterativen Weiterentwicklung unserer Produkte.

 

Was nutzt Ihr?

Welche Erfahrungen habt Ihr gemacht?

Fragen über Fragen smile

Wir feuen uns auf euer Feedback!

Bis demnächst auf unserem Blog.