VT2018 fabric8

=Fabric8=


 * Auteur: Théo Echevet
 * Enseignants : Georges-Pierre Bonneau et Dider Donsez
 * Date: 12/11/2018

=Résumé= Fabric8 est une plateforme open source de microservices basée sur Kubernetes, Docker et Jenkins. Cette plateforme permet de facilement créer des services, les build, les tester et les déployer en intégration continue.

Ainsi, elle fournit une console développeur accessible depuis un browser, un onglet de management permettant de voir les métriques des applications, et des outils d’intégration continue / livraison continue.

Mots-clés : Fabric8, microservices, Kubernetes, Jenkins, Intégration continue

=Abstract= Fabric8 is an open source microservices platform based on Kubernetes, Docker and Jenkins. This platform help to create services, build, test and deploy them in continuous integration easily.

In order to do so, Fabric8 provides a developer console accessible by a browser, a tab of management which permis to check different metrics of your applications, and continuous delivery / integration tools.

Keywords : Fabric8, Microservices, Kubernetes, Jenkins, Continuous integration

=Synthèse=

Introduction
Les architectures microservices étant de plus en plus utilisées dans le monde de l’informatique, il est intéressant d’utiliser des plateformes permettant de faciliter la création, mais aussi le déploiement de ceux-ci.

Fabric8, une plateforme microservices, réponds à ses différents besoins à l’aide de différentes technologies, comme Kubernetes, Docker et Jenkins.

Jenkins
Jenkins est un logiciel open source d’intégration continue. Celui-ci permet donc d’accélérer le développement. On l’utilise généralement pour automatiser différents types de tâches liés au build, aux tests ou bien la livraison / déploiement de logiciels à l’aide de pipelines.

Kubernetes
Kubernetes est un système open source développée à l’origine par Google, offert à la Cloud Native Computing Foundation. Ce système permet d'automatiser le déploiement, la scalabilité et le management d’applications dans des dockers. Kubernetes permet donc d’apporter l’orchestration sur différents containers en s’occupant de l’infrastructure.

A l’aide de ce système, on peut donc créer des services sur plusieurs containers, planifier leur exécution dans un cluster ou encore garantir leur intégrité.

Fabric8
Fabric8 va nous donc nous permettre de créer des microservices qui vont intégrer automatiquement ces technologies. En effet, après avoir installé la plateforme, il est possible d’accéder à la console développeur de Fabric8 depuis un browser.

Cette console permet d’accéder à tous les services fournis par la plateforme. Par exemple, lorsqu’on décide de créer une application, la console va nous afficher tous les types de projets possibles afin de faire le meilleur choix pour notre future application



On peut alors choisir une pipeline. Cette pipeline correspond au support de l'implémentation et de l'intégration de la livraison continue. Ainsi, tous les changements de l'application passeront par les différentes opérations de cette pipeline, avant que cette version soit livrée. La pipeline la plus complète se nomme CanaryReleaseStageAndApprovePro et consiste à des opérations jusqu'à la mise en production.



De plus, toujours depuis la console, on peut accéder à une vue d'ensemble des services. Cette vue d'ensemble permet d'afficher un diagramme représentant les interactions des différents services et des contrôleurs répliqués.



Conclusion
Fabric8 avait l'air d'être une plateforme microservices prometteuse. Cependant, il vaudrait mieux s'intéresser à d'autres plateformes, comme Micro ou encore Istio.

En effet, il n'existe qu'une petite communauté autour de ce projet, et l'installation peut très mal se passer (15h de tentative d'installation sur différents environnements). De plus, la branche master du git du projet n'indique qu'un ReadMe indiquant que le repository a été archivé et reset. Enfin, les issues récentes sur la page gitHub n'ont aucune réponse de la part du support. Il se pourrait donc que soit le projet Fabric8 est arrêté, soit la version actuelle ne fonctionne pas.

=Références= Jenkins, définitions

Site officiel de Jenkins

Site officiel de Kubernetes

Informations supplémentaires sur Kubernetes

Site officiel de Fabric8

Documentation de Fabric8