Skip to content

bcho77/flask-app-CD

Repository files navigation

🚀 CI/CD & GitOps Pipeline mit Flask, Jenkins, Kubernetes und ArgoCD

📌 Projektbeschreibung

In diesem Projekt habe ich eine vollständige CI/CD- und GitOps-Pipeline für eine selbst entwickelte Flask-Anwendung aufgebaut.

Ziel war es, eine moderne, automatisierte Deployment-Architektur umzusetzen, die den Best Practices aus der DevOps-Welt entspricht.


🏗️ Architekturübersicht

Die Architektur basiert auf einer klaren Trennung von Verantwortlichkeiten:

  • Application Repository → enthält den Anwendungscode (CI)
  • CI Repository
  • Deployment Repository (GitOps) → enthält Kubernetes- und Helm-Konfiguration (CD)
  • CD Repository
  • CI/CD pipeline structure CI/CD pipeline

Diese Trennung entspricht dem GitOps-Prinzip, bei dem Git als Single Source of Truth dient.


⚙️ Verwendete Technologien

  • Python / Flask → Entwicklung der Webanwendung
  • Docker → Containerisierung der Anwendung
  • Jenkins → Continuous Integration (CI)
  • GitHub Webhooks → automatisches Triggern der Pipeline
  • Kubernetes (Minikube) → Container-Orchestrierung
  • Helm → Paketmanagement für Kubernetes
  • ArgoCD → Continuous Deployment (GitOps)

🔄 CI/CD Pipeline Ablauf

1. Code Push

Ein Entwickler pusht Änderungen in das Application Repository.

2. Webhook Trigger

Ein Webhook löst automatisch die Jenkins-Pipeline aus.

3. Continuous Integration (Jenkins)

Die Pipeline führt folgende Schritte aus:

  • Code klonen
  • Anwendung bauen und testen
  • Docker-Image erstellen
  • Image in ein Container-Repository pushen

4. GitOps Update

Nach erfolgreichem Build:

  • wird der neue Image-Tag automatisch im Deployment Repository aktualisiert

5. Continuous Deployment (ArgoCD)

  • ArgoCD überwacht das Deployment-Repository
  • erkennt Änderungen automatisch
  • synchronisiert den gewünschten Zustand mit dem Kubernetes-Cluster

☸️ Deployment

  • Deployment erfolgt auf einem lokalen Kubernetes-Cluster (Minikube)
  • Helm Charts werden verwendet, um Deployments zu standardisieren und zu versionieren

🔁 Gesamt-Workflow

Git Push
   ↓
GitHub Webhook
   ↓
Jenkins Pipeline (CI)
   ↓
Docker Image Build & Push
   ↓
Update Deployment Repository
   ↓
ArgoCD (GitOps)
   ↓
Kubernetes Deployment(Minikube)

🎯 Ergebnis

Durch diese Architektur wurde der gesamte Deployment-Prozess:

  • ✅ vollständig automatisiert
  • ✅ reproduzierbar
  • ✅ skalierbar
  • ✅ Git-basiert (GitOps)

Änderungen können schnell und zuverlässig in die Produktionsumgebung ausgerollt werden.

  • ArgoCD result Argocd Dashbord

  • Anwendung Result Flask-Anwendung

📚 Erkenntnisse & Learnings

Dieses Projekt hat mir geholfen, praktische Erfahrung zu sammeln in:

  • CI/CD Pipeline Design
  • GitOps-Prinzipien
  • Kubernetes & Container-Orchestrierung
  • Helm Chart Management
  • Automatisierung von Deployments
  • Aufbau moderner Cloud-Native Architekturen

🚀 Fazit

Dieses Projekt stellt eine realitätsnahe DevOps-Umgebung dar und bildet eine solide Grundlage für produktive Systeme in modernen Softwareprojekten.

About

A minimal Flask application used as a foundation to learn and experiment with modern DevOps tools and Kubernetes-based deployments.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors