OpenShift

OpenShift est un PaaS [Platform as a Service] qui est un modèle de Cloud. Dans un tel modèle le développeur ne gère que la partie applicative, le reste c’est-à-dire la gestion des socles d’exécution des middlewares de l’OS le serveur ainsi le réseau c’est OpenShift qui s’en occupe.
Le développeur peut se concentrer sur le développement de son application, lorsqu’il demande par exemple un environnement PHP avec telle bibliothèque et telle version, OpenShift va prendre les commandes et exaucer la demande du développeur. Sans le PaaS le développeur devrait s’occuper de tout, de la VM à l’installation de l’OS…

Fonctionnement d’OpenShift :
La premier élément majeur d’OpenShift est le moteur de conteneur Docker [pour plus d’information sur Docker je vous invite à jeter un coup d’oeil sur l’article Docker], comme un conteneur est relié à l’OS, il n’a pas conscience de ce qui se passe en dehors de cet OS ainsi de la machine hôte, concrètement parlant si on a 1000 machines, on doit s’adresser à ces machines une par une pour gérer les conteneurs sur chaque machine, d’où l’intérêt d’utiliser Kubernetes [pour plus d’information sur Kubernetes je vous invite à jeter un coup d’oeil sur l’article Kubernetes], le point le plus important avec cet outil est qu’il va apporter l’orchestration des conteneurs sur l’ensemble de ces clusters de serveurs. Les fonctionnalités d’orchestration de Kubernetes vont permettre de créer des services applicatifs que ce soit front-end ou back-end et ceci sur plusieurs conteneurs mais aussi planifier l’exécution de ces conteneurs dans un cluster.

OpenShift Containers Platform [OCP], utilise Docker et Kubernetes mais aussi un ETCD, un composant pour stocker les fichiers de configuration du cluster, en d’autres termes il permet de fournir un registre commun pour les noeuds du cluster et leurs permettrent de partager les donnees de configuration.

Sauf que OpenShift c’est plus que ca, puisque RedHat a ajouté des couches techniques supplémentaires à leur offre de PaaS :

  • des ressources supplémentaires stocke avec des configurations spécifiques pour OCP.
  • des services supplementaires au niveau du réseau avec SDN [Software Design Network].
  • les environnements d’execution [Runtime].
  • des services UX [experiences utilisateurs] comme les interfaces web utilisateurs.
  • enfin et c’est le point le plus important, RedHat va intégrer un ensemble de services pour favoriser la demarche DevOps.

OCP a intégré un ensemble de services afin de favoriser le DevOps, du côté dev elle permet de déployer et gérer des applications à base de conteneurs ce qui permet d’accélérer le développement des applications, ensuite elle met a disposition des templates par exemple PHP, Jboss… Ces derniers sont des templates applicatifs versionnés et standardisés. L’utilisation de ces templates contribuent a une meilleurs stabilité du système, ce dernier point aide beaucoup les Ops.

Architecture Openshift :
OCP s’intalle sur des machines virtuelles ou physiques sur lesquelles on va installer des Noeuds :
Master est la machine contrôlant les noeuds. Dans ces noeuds les conteneurs Docker tournent au sein d’un POD, qui est un environnement d’exécution d’un ou plusieurs conteneurs Docker qui partagent les mêmes ressources, la même adresse IP qui n’est rien d’autre que celle du POD.
Le Master quant à lui fait tourner les services d’orchestration et de gestions de clusters comme par exemple l’authentification des utilisateurs et le traitement des requêtes API d’admin. Toutes les demandes passent par le Master qui s’occupe de leurs transfert auprès du bon composant.

Le Master reçoit les commandes de la part d’une équipe DevOps et relaie ces instructions aux NODE, ce système de transfert choisit automatiquement le NODE le plus adapté pour chaque tâche, il alloue ensuite les ressources au POD désigné dans ce NODE pour qu’il effectue la tâche requise.
OCP ajoute un autre point contrairement à Kubernetes, c’est le DataStore afin de stocker les configurations et les etats des clusters.
Me Master permet aussi de plannifier l’exécution de ces conteneurs dans un cluster et de garantir leur integrité au fil du temps.

La notion de services dans OCP, techniquement il s’agit d’un répartisseur de charge (load balancer) interne permettant de router les appels des applications vers l’un de ces POD, un tel service possede sa propre @IP et un nom DNS, afin d’assurer la securité chaque tiers est hébergé dans un POD différent et la communication entre les différents tiers passe par ce service de répartition.
Enfin, OCP comprend une couche de routage qui permet de rendre les applications accessibles depuis l’extérieur et router les requêtes, supposons qu’on a une application externe qui veut communiquer avec le serveur web dans le cluster OpenShift, cette application doit passer par une route securisée avant de passer par le service pour communiquer avec le bon POD.

References :
https://www.openshift.com/
https://www.youtube.com/watch?v=B0bziEVHyqg