Direkt zum Inhalt

Ein einfacher Leitfaden für GitOps

Erfahre mehr über GitOps, seine Bedeutung, verschiedene Ansätze und wie du es in ein KI-Projekt integrieren kannst.
Aktualisierte 21. Jan. 2025  · 10 Min. Lesezeit

Du hast wahrscheinlich schon von DevOps (Developer Operations) gehört , das die Prozesse zur Anwendungsbereitstellung automatisiert. Wenn du ein Datenexperte bist, kennst du wahrscheinlich MLOps (Machine Learning Operations), das den Einsatz von Modellen vereinfacht. Aber was ist mit GitOps?

In diesem Blog werden wir uns mit GitOps beschäftigen, warum es wichtig ist, welche verschiedenen GitOps-Modelle es gibt und schließlich, wie man GitOps in ein großes Sprachmodellprojekt integriert. 

Ein einfacher Leitfaden für GitOps Beitragsbild

Bild vom Autor

Du kannst auch die Theorie hinter DevOps- und MLOps-Konzepten lernen, indem du zwei unserer besten Kurzkurse besuchst, DevOps-Konzepte und MLOps-Konzepte.

Was ist GitOps?

GitOps ist ein operatives Framework, das die DevOps-Prinzipien auf die Automatisierung der Infrastruktur ausweitet. Er betont die wichtigsten Erkenntnisse aus DevOps, wie Versionskontrolle, Zusammenarbeit und Compliance, CI/CDund Beobachtbarkeit, und wendet sie auf die Bereitstellung und Verwaltung von Infrastrukturen an, insbesondere in modernen Cloud-Umgebungen.

Im Kern automatisiert GitOps das Infrastrukturmanagement, indem es Konfigurationen als Code behandelt, oft auch als Infrastructure as Code (IaC) bezeichnet. Genauso wie die Entwicklungsteams den Quellcode verwenden, um konsistente Binärdateien zu erstellen, verwenden die Betriebsteams Konfigurationsdateien, die in Git-Repositories gespeichert sind, um sicherzustellen, dass jedes Mal die gleiche Infrastrukturumgebung bereitgestellt wird. Dieser Ansatz garantiert Konsistenz, Zuverlässigkeit und Wiederholbarkeit.

Die wichtigsten Komponenten eines GitOps Workflows:

  1. Git-Repository: Speichert sowohl den Quellcode der Anwendung als auch die Konfigurationsdateien der Infrastruktur.
  2. Continuous Delivery (CD) Pipeline: Automatisiert die Erstellung, das Testen und die Bereitstellung von Anwendungs- und Infrastrukturänderungen.
  3. Werkzeug zur Anwendungsentwicklung: Stellt sicher, dass die Anwendungen auf der Grundlage der Konfigurationen im Git-Repository korrekt und effizient bereitgestellt werden.
  4. Überwachungssystem: Lernpfad: Verfolgt die Leistung und den Zustand der Anwendung, um die Zuverlässigkeit des Systems zu gewährleisten.

Warum GitOps nutzen?

Die Verwaltung der Infrastruktur erfolgte traditionell manuell, aber die moderne Cloud erfordert Automatisierung, um die Geschwindigkeit und den Umfang von Cloud-nativen Anwendungen zu bewältigen. Mit GitOps wird die Infrastruktur elastisch und zuverlässig, sodass die Teams Änderungen schnell und konsistent umsetzen können. Sie beseitigt manuelle Fehler, verbessert die Effizienz und stellt sicher, dass Infrastruktur und Anwendungen immer synchron sind und die schnellen Anforderungen moderner Entwicklungsabläufe erfüllen.

Die wichtigsten Vorteile von GitOps:

  1. Versionskontrolle: Alle Änderungen an der Infrastruktur und den Anwendungen werden in Git versionskontrolliert, was ein einfaches Rollback und umfassende Prüfprotokolle ermöglicht.
  2. Verbesserte Zusammenarbeit: Teams können mithilfe vertrauter Git-Workflows wie Pull Requests effektiver zusammenarbeiten.
  3. Erhöhte Zuverlässigkeit: Deklarative Konfigurationen stellen sicher, dass der gewünschte Systemzustand im Falle eines Ausfalls automatisch wiederhergestellt werden kann.
  4. Automatisierung: Es minimiert den Bedarf an manuellen Eingriffen und verringert so das Risiko menschlicher Fehler.
  5. Sicherheit: Die Commit-Historie von Git ist eine unveränderliche Aufzeichnung, die die Sicherheit und Nachvollziehbarkeit erhöht.

Pull-basiertes vs. Push-basiertes GitOps-Modell

Beim GitOps-Ansatz gibt es zwei primäre Modelle für die Bereitstellung und Verwaltung von Infrastruktur- und Anwendungskonfigurationen: Pull-basiert und Push-basiert. Diese Modelle unterscheiden sich darin, wie sie mit Konfigurationsänderungen umgehen und sie auf die Zielumgebung anwenden.

Pull-basiertes Modell (typisches GitOps)

Der Pull-basierte Ansatz beruht auf der Speicherung des gewünschten Zustands des Systems in einem Git-Repository. Ein GitOps-Operator wie Flux oder Argo CD überwacht das Repository kontinuierlich auf Änderungen. Wenn Updates entdeckt werden, zieht der Operator automatisch die aktualisierte Konfiguration und wendet sie auf die Zielumgebung an. 

Das Pull-basierte Modell bietet außerdem eine Drifterkennung und Selbstheilung, da der Cluster kontinuierlich den gewünschten Zustand aus Git "zieht". So wird sichergestellt, dass unbeabsichtigte Änderungen oder Konfigurationsabweichungen in der Umgebung automatisch korrigiert werden, um Konsistenz und Stabilität zu gewährleisten.

Push-basiertes Modell (mit CI/CD-Tools)

Der Push-basierte Ansatz setzt auf Tools wie GitHub Actions oder andere CI/CD-Dienste, um Aktualisierungen in den Cluster zu pushen, sobald Änderungen übertragen werden. Im Gegensatz zum Pull-basierten Modell fehlt beim Push-basierten Ansatz der kontinuierliche Abgleich, d.h. es gibt keine eingebaute Drift-Erkennung oder ein automatisches Rollback. Das macht sie weniger widerstandsfähig gegenüber ungewollten Veränderungen in der Umwelt. Das Push-basierte Modell ist jedoch oft einfacher zu implementieren und bietet eine genauere Kontrolle über die Einsätze.

Integration von GitOps in das LLM-Projekt 

Wir werden uns auf einen Push-basierten GitOps-Ansatz konzentrieren, der GitHub-Aktionenkonzentrieren, da er einfacher einzurichten ist und nur minimale Vorkenntnisse erfordert. Auch wenn ein Push-basiertes System nicht alle Vorteile eines Pull-basierten Ansatzes bietet, so bietet es doch wichtige GitOps-Funktionen wie versionskontrollierte Konfigurationen, automatisierte Bereitstellungen und vereinfachte Rollbacks.

In diesem Abschnitt werden wir die GitOps-Prinzipien auf das Projekt aus dem Tutorial How to Deploy LLM Applications Using Docker anwenden : Eine Schritt-für-Schritt-Anleitung. Dieses Projekt enthält den Code für eine Gradio-Anwendung, Dockerfile und requirements.txt. Er zeigt, wie man eine KI-Anwendung mit Docker in der Cloud bereitstellt.

Wie man LLM-Anwendungen mit Docker einsetzt: Eine Schritt-für-Schritt-Anleitung

Quelle: Wie man LLM-Anwendungen mit Docker einsetzt: Eine Schritt-für-Schritt-Anleitung

Mach dir eine MLOps-Mentalität zu eigen, um deine Machine Learning-Modelle effektiv zu trainieren, zu dokumentieren, zu pflegen und zu skalieren, indem du dich für diesen Kurs anmeldest, Entwicklung von Machine Learning-Modellen für die Produktion mit einer MLOps-Mentalität.

Projektstruktur

Dieses GitOps-Projekt wurde entwickelt, um Large Language Model (LLM)-Anwendungen mit Docker, Kubernetes und GitHub Actions bereitzustellen. Das Projekt organisiert alle LLM-Projektdateien im Ordner app, erstellt einen Ordner infra für Kubernetes-Konfigurationen und nutzt .github/workflows/ für die CI/CD-Automatisierung mit GitHub Actions.

  • Docker stellt sicher, dass die App in allen Umgebungen konsistent läuft, indem es sie mit allen Abhängigkeiten verpackt.
  • Kubernetes automatisiert die Bereitstellung, Skalierung und Verwaltung der App.
  • GitHub Actions automatisiert das Testen, Erstellen und Bereitstellen der App.

Nimm die Einführung in Kubernetes und lerne die Grundlagen von Kubernetes und die Bereitstellung und Orchestrierung von Containern mithilfe von Manifesten und kubectl-Anweisungen.

Diese Struktur gewährleistet automatisierte, skalierbare und umgebungsspezifische Implementierungen für deine LLM-Anwendung, die modernen GitOps-Prinzipien folgen.

Deploying-LLM-Applications-with-Docker/
├── app/
│   ├── requirements.txt      <-- Python dependencies for your LLM app
│   ├── main.py               <-- Your LLM application code
│   └── Dockerfile            <-- Docker instructions for building the app
├── infra/
│   ├── dev/                  <-- Dev environment configs (YAML or Helm)
│   ├── staging/              <-- Staging environment configs
│   └── production/           <-- Production environment configs
└── .github/
    └── workflows/
        ├── ci.yaml           <-- GitHub Actions workflow for continuous integration
        └── cd.yaml           <-- GitHub Actions workflow for continuous deployment

Hier ist eine einfache Aufschlüsselung:

  • app/: Enthält den Anwendungscode (main.py), Abhängigkeiten (requirements.txt) und ein Dockerfile, um die App in einem Container zu bauen.
  • infra/: Enthält Kubernetes-Konfigurationen für verschiedene Umgebungen:
    • dev/, staging/ und production/ Ordnern für umgebungsspezifische Einstellungen.
  • .github/workflows/: Automatisiert CI/CD mit GitHub Actions:
    • ci.yaml: Baut die App und das Docker-Image.
    • cd.yaml: Stellt die App bereit, indem er Docker-Images pusht und Kubernetes-Konfigurationen anwendet.

Lerne den Unterschied zwischen Kubernetes und Docker, indem du den Kubernetes vs. Docker Tutorial.

GitHub Actions Workflow Übersicht

Genau das passiert im GitHub Actions Workflow:

Developer commits code + config to GitHub
               |
               v
      GitHub Actions CI (ci.yaml)
       - Builds Docker image
       - (Optional) pushes Docker image
               |
               v
     GitHub Actions CD (cd.yaml)
       - Deploys updated app/config
       - kubectl apply or helm upgrade
               |
               v
      Kubernetes Cluster Updated
  1. Entwickler verpflichtet sich zu Änderungen: Code- und Konfigurationsaktualisierungen werden auf GitHub veröffentlicht.
  2. CI Pipeline (ci.yaml):
    • Erzeugt das Docker-Image.
    • Pusht das Image optional in die Container-Registry.
    • Führe Tests durch, um die Anwendung zu validieren.
  3. CD Pipeline (cd.yaml):
    • Setzt die aktualisierte App oder Konfiguration ein.
    • Führt kubectl apply oder helm upgrade aus, um Kubernetes-Manifeste zu aktualisieren.
  4. Kubernetes Cluster aktualisiert: Der Cluster führt die neue Version der Anwendung aus.

Erfahre, wie du das Training, die Bewertung, die Versionierung und die Bereitstellung von Modellen mit GitHub Actions automatisieren kannst und erstelle eine Datei, indem du A Beginner's Guide to CI/CD for Machine Learning Tutorials.

Die wichtigsten Vorteile und Nachteile eines Push-basierten GitOps-Ansatzes

Wenn du bereits Erfahrung mit GitHub Actions hast, kann die Einrichtung einer GitOps-Methode mit einem Push-basierten Ansatz ganz einfach sein. Du musst nur noch die Konfigurationsdateien für die Infrastruktur hinzufügen, CI/CD-Pipelines einrichten und schon bist du startklar. Dieser Ansatz ist zwar einfach, aber es gibt einige wichtige Kompromisse zu beachten.

Vorteile

  • Einfach: Du brauchst nur GitHub Actions, um diesen Ansatz umzusetzen - einen zusätzlichen GitOps-Operator wie Argo CD oder Flux brauchst du nicht.
  • One-Stop-Shop: GitHub Actions bietet eine einzige Plattform zum Erstellen, Testen und Bereitstellen deiner Anwendung und vereinfacht so den gesamten Prozess.

Kompromisse

  • Keine echte Pull-Basis: Im Gegensatz zu Pull-basierten GitOps-Tools wie Argo CD fehlt bei diesem Ansatz der "kontinuierliche Abgleich". Das bedeutet, dass der Zustand des Clusters nicht automatisch überwacht und mit dem gewünschten Zustand in Git abgeglichen wird.
  • Keine Drifterkennung: Wenn jemand die Ressourcen im Cluster manuell ändert, werden diese Änderungen nicht automatisch rückgängig gemacht, um sie an das Git-Repository anzupassen. Das kann dazu führen, dass die Konfiguration mit der Zeit abweicht.
  • Sicherheit: Damit GitHub-Aktionen in deinem Cluster eingesetzt werden können, musst du die Anmeldedaten des Clusters in GitHub-Geheimnissen speichern oder eine OIDC-basierte Authentifizierungsmethode verwenden. Beide Ansätze erfordern eine sorgfältige Handhabung, um Sicherheitsrisiken zu vermeiden.

Der Übergang zu einem Pull-basierten Modell

Wenn sich dein Projekt vergrößert oder deine Anforderungen anspruchsvoller werden, kann die Umstellung auf ein Pull-basiertes GitOps-Modell erhebliche Vorteile bieten. Wenn dein Team Funktionen wie Selbstheilung, kontinuierlichen Abgleich oder ein visuelles Dashboard benötigt, könnte die Einführung eines Pull-basierten Tools wie Argo CD oder Flux der nächste logische Schritt sein.

  • Selbstheilung: Stelle die Clusterzustände automatisch wieder her, wenn sie abdriften.
  • Kontinuierlicher Abgleich: Beobachte dein Git Repo rund um die Uhr auf Konfigurationsänderungen.
  • Visuelles Dashboard: Zum Überprüfen von App-Status und Protokollen.

Du kannst zu einem Pull-basierten Tool wie Argo CD oder Flux wechseln. Sie überwachen dein Repository ständig und stellen sicher, dass der Cluster immer mit dem übereinstimmt, was in Git vorhanden ist - es sind keine manuellen "Push"-Schritte nach dem ersten Commit nötig.

Fazit

Um GitOps effektiv umzusetzen, ist es am besten, klein anzufangen und die Technologien nach und nach zu übernehmen. Beginne mit einer einfachen Dockerdatei, um deine Anwendung zu containerisieren und in der Cloud bereitzustellen. Dann führst du Kubernetes ein, um Skalierbarkeit und Zuverlässigkeit durch automatisierte Bereitstellung und Verwaltung zu ermöglichen. 

Sobald du dich daran gewöhnt hast, kannst du einen Push-basierten GitOps-Ansatz mit Tools wie GitHub Actions anwenden, um sowohl die Cloud-Infrastruktur als auch die Anwendungsbereitstellung zu automatisieren. Wenn dein Projekt reift und Stabilität auf Produktionsebene benötigt, kannst du mit Tools wie Argo CD oder Flux zu einem Pull-basierten Modell übergehen, um einen kontinuierlichen Abgleich, die Erkennung von Drifts und Selbstheilungsfunktionen zu erreichen. 

Dieses schrittweise Vorgehen sorgt für eine reibungslose Lernkurve, während du das volle Potenzial von GitOps für moderne Cloud-native Anwendungen nutzt.

In diesem Blog haben wir uns mit GitOps, seiner Bedeutung, den verschiedenen GitOps-Modellen und der Integration von GitOps in ein KI-Projekt beschäftigt. Wenn du neu in der KI bist, empfehlen wir dir den Kurs KI-Grundlagen Lernpfad, der die Grundlagen der KI behandelt, Modelle wie GPT-4o vorstellt und die Geheimnisse der generativen KI lüftet, um sich in der sich entwickelnden KI-Landschaft zurechtzufinden.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Als zertifizierter Data Scientist ist es meine Leidenschaft, modernste Technologien zu nutzen, um innovative Machine Learning-Anwendungen zu entwickeln. Mit meinem fundierten Hintergrund in den Bereichen Spracherkennung, Datenanalyse und Reporting, MLOps, KI und NLP habe ich meine Fähigkeiten bei der Entwicklung intelligenter Systeme verfeinert, die wirklich etwas bewirken können. Neben meinem technischen Fachwissen bin ich auch ein geschickter Kommunikator mit dem Talent, komplexe Konzepte in eine klare und prägnante Sprache zu fassen. Das hat dazu geführt, dass ich ein gefragter Blogger zum Thema Datenwissenschaft geworden bin und meine Erkenntnisse und Erfahrungen mit einer wachsenden Gemeinschaft von Datenexperten teile. Zurzeit konzentriere ich mich auf die Erstellung und Bearbeitung von Inhalten und arbeite mit großen Sprachmodellen, um aussagekräftige und ansprechende Inhalte zu entwickeln, die sowohl Unternehmen als auch Privatpersonen helfen, das Beste aus ihren Daten zu machen.

Themen

Top DataCamp Kurse

Zertifizierung verfügbar

Kurs

MLOps-Konzepte

2 hr
22.3K
Entdecke, wie MLOps maschinelle Lernmodelle von lokalen Notebooks zu funktionierenden Modellen in der Produktion bringen kann, die einen echten Geschäftswert schaffen.
Siehe DetailsRight Arrow
Kurs starten
Zertifizierung verfügbar

Kurs

DevOps-Konzepte

4 hr
6.8K
In dieser Einführung in DevOps beherrschst du die DevOps-Grundlagen und lernst die wichtigsten Konzepte, Tools und Techniken zur Verbesserung der Produktivität kennen.
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen