Skip to content

Repository files navigation

🚀 Space Gateway - Exploration Spatiale Interactive

Space Gateway est une application web full-stack moderne qui permet aux utilisateurs d'explorer l'univers de manière interactive et enrichissante. Elle fournit en temps réel des données sur les planètes du système solaire, les missions spatiales, les événements astronomiques, les actualités liées à l'exploration spatiale, ainsi qu'une galerie d'images haute résolution.

📋 Table des Matières

  1. 🌟 Fonctionnalités Principales
  2. 🏗️ Architecture & Technologies
  3. 📁 Structure du Projet
  4. 🛠️ Technologies & Outils
  5. 🔧 Installation & Configuration
  6. 🚀 Déploiement de l'Application
  7. 📡 Accès aux Services Exposés
  8. 🔁 CI/CD avec Jenkins
  9. 📊 Monitoring avec Prometheus & Grafana
  10. 📦 Architecture des Conteneurs
  11. 🔄 Commandes de Maintenance
  12. 🌐 APIs Externes Intégrées
  13. 🚀 Utilisation
  14. 📝 Notes Importantes

🌟 Fonctionnalités Principales

Découvrez les capacités exceptionnelles de Space Gateway pour l'exploration spatiale interactive.

  • Données en temps réel des planètes du système solaire
  • Missions spatiales actuelles et passées
  • Événements astronomiques et calendrier spatial
  • Actualités spatiales via l'intégration d'APIs externes
  • Galerie d'images haute résolution de l'espace
  • Interface utilisateur moderne avec React et Chakra UI

🏗️ Architecture & Technologies

Une architecture moderne basée sur les meilleures pratiques DevOps et les technologies cloud-native.

Stack Technique

  • Frontend: React + Chakra UI
  • Backend: Spring Boot (Java)
  • Base de données: Intégration APIs externes (NASA, Spaceflight News)
  • Conteneurisation: Docker
  • Orchestration: Kubernetes (Minikube)
  • CI/CD: Jenkins
  • Monitoring: Prometheus + Grafana

Approche DevOps

Ce projet implémente une chaîne complète d'intégration et de déploiement continus (CI/CD) avec une infrastructure moderne basée sur Kubernetes. L'objectif est de garantir la scalabilité, la résilience et un monitoring en temps réel, simulant un environnement de production automatisé.

📁 Structure du Projet

Organisation claire et modulaire du code source avec séparation des responsabilités.

development-platform-astro-duo/
├── backend/                          → API Spring Boot
├── frontend/                         → Interface React + Chakra UI  
├── k8s/                             → Fichiers Kubernetes
│   ├── grafana/
│   │   └── grafana-deployment.yaml   → Configuration Grafana
│   ├── prometheus/
│   │   ├── prometheus-config.yaml    → Configuration Prometheus
│   │   ├── prometheus-deployment.yaml → Déploiement Prometheus
│   │   └── prometheus-rbac.yaml      → Permissions RBAC
│   ├── backend-deployment.yaml       → Déploiement backend
│   ├── frontend-deployment.yaml      → Déploiement frontend
│   ├── jenkins-rbac.yaml            → Permissions Jenkins
│   └── jenkins.yaml                 → Déploiement Jenkins
├── Prometheus/
│   └── prometheus.yml               → Configuration monitoring
└── Jenkinsfile                      → Pipeline CI/CD

🛠️ Technologies & Outils

Ensemble d'outils DevOps modernes pour un environnement de développement robuste.

Outil Utilisation
WSL + Ubuntu Environnement Linux local dans Windows
Minikube Cluster Kubernetes local
Docker Conteneurisation des applications
DockerHub Registre distant d'images Docker
Kubernetes Déploiement et orchestration
Jenkins Automatisation CI/CD
Prometheus Monitoring des métriques
Grafana Visualisation graphique

🔧 Installation & Configuration

Guide étape par étape pour configurer l'environnement de développement complet.

1. Prérequis

  • Docker Desktop (avec WSL2 activé)
  • Ubuntu via WSL
  • Git installé
  • Compte DockerHub et accès
  • Node.js/React (pour tests locaux si nécessaire)

2. Installation des Outils (Ubuntu/WSL)

# Docker
sudo apt install docker.io

# Kubectl
sudo snap install kubectl --classic

# Helm (optionnel)
sudo snap install helm --classic

3. Installation de Minikube

# Télécharger et installer Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# Démarrer Minikube avec Docker
minikube start --driver=docker

# (Optionnel) Configurer Docker pour Minikube
eval $(minikube docker-env)

4. Lancer Minikube

minikube start --driver=docker

🚀 Déploiement de l'Application

Processus de conteneurisation et déploiement dans l'environnement Kubernetes.

1. Construction des Images Docker

# Build et push backend
docker build -t <votre-utilisateur>/backend:latest ./backend
docker push <votre-utilisateur>/backend:latest

# Build et push frontend  
docker build -t <votre-utilisateur>/frontend:latest ./frontend
docker push <votre-utilisateur>/frontend:latest

2. Déploiement Backend et Frontend

kubectl apply -f k8s/backend-deployment.yaml
kubectl apply -f k8s/frontend-deployment.yaml

📡 Accès aux Services Exposés

Une fois tous les fichiers YAML appliqués, accédez facilement à chaque composant de l'application.

Une fois tous les fichiers YAML appliqués, vous pouvez accéder à chaque service via :

minikube service frontend-service
minikube service backend-service
minikube service jenkins -n jenkins
minikube service prometheus -n monitoring
minikube service grafana -n monitoring

🔁 CI/CD avec Jenkins

Pipeline d'intégration continue pour automatiser le build, test et déploiement.

Pipeline Automatisé (Jenkinsfile)

Le pipeline Jenkins automatise les étapes suivantes :

  1. Récupération du code depuis GitHub
  2. Build du backend avec Maven
  3. Construction des images Docker
  4. Authentification DockerHub
  5. Push des images vers DockerHub
  6. Déploiement Kubernetes automatique
  7. Actions post-déploiement

Déploiement Jenkins

# Déployer Jenkins dans Minikube
kubectl apply -f k8s/jenkins.yaml
kubectl apply -f k8s/jenkins-rbac.yaml

# Accéder à Jenkins
kubectl port-forward svc/jenkins 8080:8080
# ou
minikube service jenkins -n jenkins

📊 Monitoring avec Prometheus & Grafana

Surveillance en temps réel des performances de l'application backend avec JVM ID 4701.

Le monitoring a été configuré spécifiquement pour surveiller le backend Spring Boot avec le JVM ID 4701. Prometheus collecte les métriques JVM et applicatives, tandis que Grafana fournit une visualisation claire des performances.

Déploiement du Monitoring

# Déployer Prometheus et Grafana
kubectl apply -f k8s/prometheus/
kubectl apply -f k8s/grafana/

Configuration Grafana

  1. Datasource : Prometheus (http://prometheus-service:9090)
  2. Dashboard : Créez ou importez un dashboard pour surveiller le backend (JVM ID 4701)
  3. Métriques surveillées : CPU, mémoire, threads JVM, requêtes HTTP

📦 Architecture des Conteneurs

Répartition des services dans le cluster Kubernetes avec 5 conteneurs actifs.

Le cluster Minikube contient 5 conteneurs actifs :

Conteneurs Applicatifs (2)

  • backend : Application Spring Boot (JVM ID 4701)
  • frontend : Interface utilisateur React

Conteneurs d'Outillage (3)

  • jenkins : Pour CI/CD
  • prometheus : Pour le monitoring du backend
  • grafana : Pour la visualisation des métriques

🔄 Commandes de Maintenance

Commandes essentielles pour la gestion et la maintenance de l'application.

Redémarrage des Déploiements

# Redémarrer le backend
kubectl rollout restart deployment backend-deployment

# Redémarrer le frontend
kubectl rollout restart deployment frontend-deployment

Vérification du Statut

# Voir tous les pods
kubectl get pods

# Voir tous les services
kubectl get services

# Voir les déploiements
kubectl get deployments

🌐 APIs Externes Intégrées

Connexions avec les principales sources de données spatiales pour un contenu riche et actualisé.

  • NASA API : Données astronomiques et images
  • Spaceflight News API : Actualités spatiales
  • Autres APIs spatiales : Missions et événements

🚀 Utilisation

Guide rapide pour démarrer et utiliser l'application Space Gateway.

  1. Démarrez Minikube et déployez l'application
  2. Accédez au frontend via minikube service frontend-service
  3. Explorez les données spatiales en temps réel
  4. Surveillez l'application via Grafana (backend JVM ID 4701)
  5. Gérez les déploiements via Jenkins

📝 Notes Importantes

Points clés à retenir pour le bon fonctionnement du projet.

  • Environnement : WSL + Ubuntu dans Windows
  • Images Docker : Hébergées sur DockerHub
  • Accès services : Via minikube service <nom-service>
  • Monitoring : Prometheus + Grafana pour backend uniquement (JVM ID 4701)
  • CI/CD : Pipeline Jenkins automatisé

About

Partie DevOps du projet SpaceGateway.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages