- Estelle TAMALET
- Auriane PUSEL
- Ruben ROUVIÈRE
Lien vers le dépôt GitHub : https://github.com/aurianecodebien/CityApi/
- Docker
- Docker Compose
- Python 3.11
- Poetry
Deux services sont définis :
- db : s'appuie sur l'image
postgres:latest - app : notre API Python
Framework : Flask + SQLAlchemy
Gestion des variables via python-dotenv
| Méthode | URI | Rôle |
|---|---|---|
GET |
/city |
Liste les villes |
POST |
/city |
Ajoute une ville (via JSON) |
GET |
/_health |
Retourne 204 si la DB répond |
GET |
/metrics |
Expose les métriques Prometheus |
- Vérifie l'ajout d'une ville en base
- Vérifie la route
/city(GET)
- Vérifie la route
/_health
cd test
pytest- S'exécute à chaque
push
- Lance automatiquement
pytest
- Build de l'image
city-api
- Ajout d'un scan trivy sur chaque image buildée
- Sur
tagau formatvX.X.X, push d'une image taggéecity-api:X.X.X
- Push de l'image
city-api:latestsur DockerHub
Ajout dans docker-compose.yml :
- Service prometheus avec scrape de
app:2022/metrics - Service grafana avec dashboard préconfiguré
- Installation de K3s localement
- Déploiement via Helm Chart
- Exposition des routes avec un Ingress
- Configuration des
values.yaml
/metricsexposé viaprometheus_flask_exporter
Problème :
Le linter GitHub Actions (super-linter) échouait sur les fichiers Helm car ceux-ci utilisent la syntaxe Jinja2 ({{ }}), qui n'est pas comprise par défaut par les linters YAML.
Solution :
Nous avons exclu les fichiers Helm du linting automatique en adaptant la configuration afin d’éviter l’analyse par Super-Linter, tout en maintenant un bon formatage dans le reste du projet.
- API REST conforme au format JSON attendu
- Base PostgreSQL pilotée via Docker
- Pipelines CI/CD complètes avec lint, tests, build, push et sécurité
- Monitoring et déploiement K3s finalisé