Principes d'architecture
Exemple d'un déploiement
Chaque application Web déployée par un service est constituée d'une pile de conteneurs (1 à n) nécessaires au traitement applicatif. Par exemple, l'application WEB GRR, Gestion et Réservation de Ressources, est constitué de 3 conteneurs :
- nginx : serveur HTTP qui traite les requêtes des navigateurs des utilisateurs
- PHP: serveur applicatif construisant les pages calculées dynamiquement en fonctions de la requête utilisateur
- MySql: serveur de base de données stockant les informations nécessaire au fonctionnement des réservations de ressources
Les images dockers
On utilise l'intégration continue de Gitlab. Les images sont fabriquées par Gitlab par des jobs puis stockées dans la registry gitlab, grâce aux consignes contenu dans le fichier .gitlab_ci.yml.
Le déploiement des services
On utilise le déploiement continu de Gitlab. les images construites sont déployées sur l'infrastructure docker Swarm de ConteneursFacile grâce au fichier docker-compose.yml décrivant les images à utiliser et les paramètres nécessaires pour les exécution dans un conteneurs.
Les données persistantes
Les données persistantes (fichiers uploadés, bases de données, ...) sont stockées sur des volumes attachés aux conteneurs et sauvegardées sur B3 toutes les nuits. Il est donc possible de reprendre l'activité depuis un tenant neuf à partir des images stockées sur Gitlab et des données persistantes sauvegardées sur B3.
La plateforme docker
C'est un tenant IaaS sur Eco4 qui contient un ensemble de nœuds dockers (managers ou workers). Docker Swarm permet au dispositif d'être résilient en cas de panne d'un ou plusieurs des noeuds. Les VM sont crées sur plusieurs zone de disponibilité pour garantir cette résilience. L'ensemble de l'infrastructure peut se recontruire à l'aide de script Terraform ou ansible.
La console
C'est une application WEB qui permet l'exploitation des services déployés, surveillance (log, consommation ressources, statistique d'utilisation), arrêt-relance, montée de version et retour arrière, sauvegarde/restauration des données.