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.
- 🌟 Fonctionnalités Principales
- 🏗️ Architecture & Technologies
- 📁 Structure du Projet
- 🛠️ Technologies & Outils
- 🔧 Installation & Configuration
- 🚀 Déploiement de l'Application
- 📡 Accès aux Services Exposés
- 🔁 CI/CD avec Jenkins
- 📊 Monitoring avec Prometheus & Grafana
- 📦 Architecture des Conteneurs
- 🔄 Commandes de Maintenance
- 🌐 APIs Externes Intégrées
- 🚀 Utilisation
- 📝 Notes Importantes
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
Une architecture moderne basée sur les meilleures pratiques DevOps et les technologies cloud-native.
- 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
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é.
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
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 |
Guide étape par étape pour configurer l'environnement de développement complet.
- Docker Desktop (avec WSL2 activé)
- Ubuntu via WSL
- Git installé
- Compte DockerHub et accès
- Node.js/React (pour tests locaux si nécessaire)
# Docker
sudo apt install docker.io
# Kubectl
sudo snap install kubectl --classic
# Helm (optionnel)
sudo snap install helm --classic# 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)minikube start --driver=dockerProcessus de conteneurisation et déploiement dans l'environnement Kubernetes.
# 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:latestkubectl apply -f k8s/backend-deployment.yaml
kubectl apply -f k8s/frontend-deployment.yamlUne 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 monitoringPipeline d'intégration continue pour automatiser le build, test et déploiement.
Le pipeline Jenkins automatise les étapes suivantes :
- Récupération du code depuis GitHub
- Build du backend avec Maven
- Construction des images Docker
- Authentification DockerHub
- Push des images vers DockerHub
- Déploiement Kubernetes automatique
- Actions post-déploiement
# 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 jenkinsSurveillance 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éployer Prometheus et Grafana
kubectl apply -f k8s/prometheus/
kubectl apply -f k8s/grafana/- Datasource : Prometheus (
http://prometheus-service:9090) - Dashboard : Créez ou importez un dashboard pour surveiller le backend (JVM ID 4701)
- Métriques surveillées : CPU, mémoire, threads JVM, requêtes HTTP
Répartition des services dans le cluster Kubernetes avec 5 conteneurs actifs.
Le cluster Minikube contient 5 conteneurs actifs :
- backend : Application Spring Boot (JVM ID 4701)
- frontend : Interface utilisateur React
- jenkins : Pour CI/CD
- prometheus : Pour le monitoring du backend
- grafana : Pour la visualisation des métriques
Commandes essentielles pour la gestion et la maintenance de l'application.
# Redémarrer le backend
kubectl rollout restart deployment backend-deployment
# Redémarrer le frontend
kubectl rollout restart deployment frontend-deployment# Voir tous les pods
kubectl get pods
# Voir tous les services
kubectl get services
# Voir les déploiements
kubectl get deploymentsConnexions 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
Guide rapide pour démarrer et utiliser l'application Space Gateway.
- Démarrez Minikube et déployez l'application
- Accédez au frontend via
minikube service frontend-service - Explorez les données spatiales en temps réel
- Surveillez l'application via Grafana (backend JVM ID 4701)
- Gérez les déploiements via Jenkins
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é