Plateforme DevOps qui détecte, build et déploie automatiquement des applications sur Kubernetes à partir d'un simple git push.
Telecharger & tester
voir README.md (plateforme de build/deploiement Docker/Kubernetes multi-langage, DevOps)
Whanos est un projet Epitech (Tek3, module DevOps avance) qui consiste a construire une infrastructure complete de deploiement continu capable de containeriser et deployer automatiquement n'importe quelle application poussee sur un depot Git compatible, en combinant les quatre briques DevOps etudiees precedemment : Docker pour la containerisation, Jenkins pour l'automatisation, Ansible pour la configuration, et Kubernetes pour l'orchestration.
Un depot compatible Whanos place son code applicatif dans un repertoire app a la racine et doit etre ecrit dans l'un des cinq langages supportes obligatoirement : C (detecte par un Makefile, compile en binaire compiled-app), Java (detecte par un pom.xml, build Maven produisant app.jar), JavaScript/Node.js (detecte par package.json, dependances npm), Python (detecte par requirements.txt, dependances pip), et Befunge (detecte par un fichier main.bf unique). Chaque langage possede une image Docker de base officielle dediee (whanos-c, whanos-java, etc.), qui doit elle-meme n'utiliser que des images officielles Docker Hub et le shell Bash pour ses instructions de build.
Deux types d'images doivent etre produits par langage : des images standalone pour les applications ne necessitant aucune configuration d'execution particuliere, et des images de base reutilisables via une instruction FROM dans un Dockerfile personnalise pour les applications ayant des besoins specifiques — ces images de base doivent pouvoir se construire de maniere totalement autonome, sans aucun code applicatif disponible au moment du build.
L'instance Jenkins pilote l'ensemble du pipeline : elle doit supporter les depots Git prives (pas seulement GitHub ou GitLab), interdire les inscriptions publiques, et posseder un dossier Whanos base images regroupant un job de build par langage plus un job global, ainsi qu'un job link-project a la racine capable d'enregistrer un nouveau projet en creant automatiquement, dans un dossier Projects, un job de surveillance qui poll le depot toutes les minutes, containerise l'application selon les specifications, puis la deploie sur Kubernetes si un fichier whanos.yml valide est present.
Ce fichier whanos.yml, optionnel, decrit le deploiement Kubernetes via une propriete deployment configurant le nombre de replicas, les besoins en ressources (syntaxe Kubernetes standard) et les ports a exposer publiquement sur un cluster d'au moins deux noeuds. L'ensemble de l'infrastructure doit etre deploye en ligne et accessible a l'evaluateur au moment de la soutenance, de preference via Ansible avec des playbooks idempotents, la structure de livraison imposant une organisation stricte en repertoires images/<langage>/Dockerfile.base et Dockerfile.standalone, et docs/ pour la documentation.
Projet suivant
