OpenShift : qu’est-ce que c’est ?

OpenShift constitue une plateforme d’application basée sur Kubernetes. Ce logiciel est utilisé pour construire des environnements d’application et de développement décentralisés et capables de mettre à l’échelle. En se basant sur OpenShift, des solutions propriétaires de Platform as a Service (PaaS), Software as a Service (SaaS) et Containers as a Service (CaaS) peuvent être implémentées.

Ce logiciel permet une gestion complète du cycle de vie de l’application, y compris le développement, le déploiement, le pilotage et la maintenance. Plus de 2 000 entreprises à travers le monde s’appuient sur OpenShift pour héberger leurs applications dans des environnements Cloud hybrides. Nous allons vous expliquer comment OpenShift fonctionne et ce qui rend ce logiciel si spécial.

Quelles versions d’OpenShift sont disponibles actuellement ?

OpenShift ne se résume pas à un produit unique. L’entreprise Red Hat a plutôt fait le choix d’éditer plusieurs versions sous forme de logiciels open source sous la licence Apache. La version « incontournable » est la « Red Hat OpenShift Container Platform » (OCP). Cette dernière est installée sous la forme d’un cluster Kubernetes sur l’infrastructure Cloud hybride d’une entreprise. Un cluster OpenShift unique peut donc couvrir de multiples environnements de Cloud publics et privés.

À part la OpenShift Container Platform (OCP), il existe la version communautaire « OKD », qui portait autrefois le nom de « OpenShift Origin ». OKD constitue une distribution Kubernetes personnalisée qui s’appuie sur Kubernetes pour la gestion des clusters et sur des conteneurs compatibles avec Open Container Initiative (OCI). Elle comprend également des capacités de gestion du cycle de vie des applications et des outils DevOps. Il est intéressant de noter qu’OKD constitue la fondation « en amont » du développement des autres versions d’OpenShift, de même que le projet open source Chromium se situe à la base du développement du navigateur Chrome.

Outre OCP et OKD, qui constituent des solutions « à domicile », lesquelles sont hébergées dans leur propre infrastructure, il existe également un large éventail de solutions « gérées ». Ces dernières sont exécutées sur divers Cloud publics issus de fournisseurs importants, de même que sur l’infrastructure Cloud de Red Hat. Nous nous concentrons principalement sur la version OCP 4.8, laquelle constitue la version en vigueur au moment de la parution de cet article. Jetons un œil rapide aux différentes versions d’OpenShift :

Produits OpenShift Description Plateforme
Red Hat OpenShift Container Platform (OCP) Solution d’entreprise « à domicile », à utiliser dans votre propre infrastructure Cloud hybride Red Hat Enterprise Linux CoreOS (RHCOS)
OKD Produit communautaire « à domicile », fondation d’OCP Red Hat Enterprise Linux (RHEL) ou CentOS
OpenShift Online Solution SaaS gérée Red Hat Cloud
OpenShift Dedicated Solution PaaS gérée ; Red Hat prend en main l’administration complète du système Amazon AWS ou Google Cloud

Comment OpenShift fonctionne-t-il ?

OpenShift correspond à une suite de plateformes d’applications basée sur Kubernetes. Ce logiciel comprend une poignée de composants de base, ainsi qu’un large éventail de fonctionnalités additionnelles. Il est possible d’héberger OpenShift dans des environnements très divers, parmi lesquels les machines « bare metal », les Clouds publics et privés, et les Edge Devices.

Conseil

Nous vous exposons les points communs et les différences entre OpenShift et Kubernetes dans un article distinct.

De quels composants OpenShift est-il constitué ?

OpenShift se fonde sur une stack technique, qui constitue une pile de technologies interconnectées. Au niveau le plus bas, une distribution Linux spécifique est utilisée en tant que système d’exploitation. Le « Red Hat Enterprise Linux CoreOS » (RHCOS) auquel on a recours ici est installé sur du matériel physique ou virtualisé.

Note

Dans les versions précédentes d’OpenShift, on utilisait « Red Hat Enterprise Linux » (RHEL) en lieu et place de RHCOS.

S’appuyant sur le système d’exploitation RHCOS, Kubernetes est utilisé en tant que conteneur et orchestrateur de cluster. Kubernetes gère le déploiement, l’extensibilité et la gestion des applications conteneurisées. On a recours à des opérateurs Kubernetes pour constituer la couche supérieure de la stack technique. Ces dernières sont des applications « Kubernetes natives » prédéveloppées et facile à installer. Outre les opérateurs, un registre de conteneurs est utilisé lors de la configuration et de l’exécution d’un cluster OpenShift.

Quel type de Kubernetes est inclus dans OpenShift ?

OpenShift s’appuie sur une distribution Kubernetes spécifique, laquelle utilise CRI-O en lieu et place de Docker ou de containerd à titre d’exécution de conteneur. Rompre avec Docker comme technologie sous-jacente présente des avantages en termes de sécurité et de compatibilité avec d’autres formats de conteneurs.

Qu’est-ce qu’un opérateur dans OpenShift ?

Un opérateur Kubernetes est responsable de la santé d’une application entière. Les opérateurs couvrent l’ensemble du cycle de vie d’une application Kubernetes, de l’installation à la maintenance en passant par le pilotage. Pour reprendre les mots de la notice OpenShift :

Citation

 « Un Opérateur constitue une méthode d’empaquetage, de déploiement et de gestion d’une application native de Kubernetes. Une application native de Kubernetes constitue une application qui est à la fois déployée sur Kubernetes et gérée à l’aide des APIs Kubernetes et de l’outillage kubectl. » - Source : https://Cloud.redhat.com/learn/topics/operators

Il existe un vaste éventail d’opérateurs sur la plateforme OperatorHub. À titre d’exemple, une grande diversité de systèmes de bases de données peuvent être intégrés sans heurt dans le cluster OpenShift quasiment sans aucun effort. Par ailleurs, on a recours à des opérateurs d’infrastructure pour gérer le cluster.

Il s’avère que les opérateurs sont essentiels au fonctionnement d’OpenShift. Un opérateur Kubernetes constitue une spécialisation du contrôleur Kubernetes au niveau de l’application. Un contrôleur Kubernetes supervise en permanence l’état d’une ressource et ajuste divers paramètres comme nécessaire pour maintenir un état défini.

Qu’est-ce qu’un registre dans OpenShift ?

Un registre de conteneur contient des images de conteneurs qui sont créées en continu au fil du développement d’un logiciel. Les images sont versionnées, soumises à des vérifications de sécurité, et stockées dans le registre. Il est intéressant de noter qu’au sein d’OpenShift, le registre lui-même est implémenté en tant qu’opérateur.

« Quay » constitue un registre développé par Red Hat avec une attention particulière portée à la sécurité. Les images requises lors de l’installation du cluster OpenShift sont obtenues à partir de Quay. Ce faisant, Quay peut gérer d’autres artefacts de développement en plus des images conteneurs. Pour reprendre à nouveau les mots de la notice Red Hat :

Citation

 « Quay constitue un registre de conteneur pour stocker des conteneurs, des charts Helm, et d’autres contenus relatifs aux conteneurs. » - Source : https://www.redhat.com/sysadmin/introduction-quay

Suivant le modèle de produits de différents niveaux défini par OpenShift OCP et OKD, de multiples versions de Quay ont été développées :

Registre Explication Plateforme
Red Hat Quay S’exécute sur sa propre infrastructure de développement, qui comprend des Cloud privés ; intégré au sein d’OpenShift par un opérateur Environnement Cloud personnel qui comprend un Cloud privé
Red Hat Quay.io Géré par Red Hat avec une assistance au niveau de l’entreprise Cloud

Comment OpenShift est-il structuré ?

OpenShift est développé tout en haut de Kubernetes en tant que cluster de conteneurs. Au niveau du cluster, OpenShift comprend deux sous-niveaux :

  1. Control Plane (« Plan régulateur »)

Le control plane est composé de ce qu’on appelle des « control plane machines ». Ces dernières sont également connues sous le nom de « Master Machines » et gèrent le cluster de l’OpenShift Container Plateform.

  1. Worker Machines

Les worker machines, aussi connues sous le nom de « compute machines » (« machines de calcul »), mènent à bien le travail effectif du cluster OpenShift. Les Master machines assignent des tâches aux worker machines et supervisent leur exécution.

Quels services sont exécutés sur les working machines ?

Une working machine exécute les services suivants et fait donc partie du cluster OpenShift :

  • CRI-O, en tant qu’environnement d’exécution de conteneur,
  • Kubelet, en tant que service qui accepte et procède les requêtes de lancer et d’interrompre des charges de travail,
  • Un serveur proxy, qui prend en charge la communication entre les work machines.

La spécialisation supplémentaires des working machines résulte de l’état des conteneurs en cours d’exécution et du software qu’ils contiennent.

De quels composants le control plane est-il constitué ?

Jetons un œil plus précis à la structure du control plane présentée ci-dessous. Nous établissons une distinction entre les composants de l’implémentation Kubernetes et les composants spécifiques à OpenShift :

Composant Kubernetes Explication
Serveur d’API de Kubernetes Le serveur d’API de Kubernetes vérifie et configure les données pour les pods, les services, et les replication controller (« contrôleurs de réplication »). En outre, l’API tient lieu d’interface centrale pour les données d’état de cluster au niveau global.
etcd Le service etcd contient l’état maître persistant. Les autres composants analysent etcd pour repérer les changements et ajustent leur état comme demandé.
Kubernetes Controller Manager Le Kubernetes Controller Manager analyse etcd pour repérer les changements apportés aux objets tels que les réplications, les espaces de noms et les contrôleurs de comptes de service et a recours à l’API pour obtenir l’état désiré. Il existe un cluster regroupant plusieurs de ces processus, parmi lesquels l’un d’entre eux agit en qualité de chef.
Kubernetes Scheduler Le Kubernetes scheduler détecte les pods nouvellement créés qui ne se sont pas encore vu assigner de nœuds et choisit le meilleur nœud pour héberger le pod.
   

Les composants du control plane spécifiques à OpenShift sont implémentés en tant qu’opérateurs :

Composant OpenShift Explication Géré par
Serveur d’API OpenShift Le Serveur d’API OpenShift vérifie et configure les ressources OpenShift telles que les projets, les itinéraires et les modèles. L’Opérateur du Serveur d’API OpenShift
Gestionnaire de Contrôleurs OpenShift Le Gestionnaire de Contrôleurs OpenShift analyse etcd pour repérer les changements apportés à des objets OpenShift, tels que des projets, des itinéraires et des objets contrôleurs de modèles et a recours à l’API pour atteindre l’état désiré. L’Opérateur du Gestionnaire de Contrôleurs OpenShift
Serveur d’API OAuth OpenShift Le Serveur d’API OAuth OpenShift valide et configure les données pour authentification sur la Plateforme de Conteneurs OpenShift. On retrouve parmi ces dernières les jetons d’utilisateurs, de groupes, et d’OAuth. Opérateur d’Authentification de Cluster
Serveur OAuth OpenShift Les requêtes utilisateurs issues du Serveur OAuth d’OpenShift, à authentifier contre l’API. Opérateur d’Authentification de Cluster

Pour quels scénarios d’applications a-t-on recours à OpenShift ?

La plateforme de conteneurs OpenShift est d’abord utilisée pour construire des environnements d’application et de développement. Ceci rend possible l’implémentation de solutions PaaS, SaaS et CaaS propres à l’entreprise. Compte tenu de la puissance et de la complexité de ce logiciel, OpenShift est d’abord utilisé pour des projets au long cours dirigés par d’importantes organisations.

Parmi les utilisateurs d’OpenShift, on retrouve des gouvernements et des instituts de recherche à l’échelle nationale, de même que des entreprises présentes à l’international telles que des banques et des compagnies d’assurance. Les groupes d’utilisateurs susmentionnés bénéficient tous de déploiements de Cloud hybrides. Le déploiement par-delà les limites du Cloud privé et public permet à des parties de l’infrastructure d’être hébergées en respectant les directives de conformité locales.

Parmi les autres aspects importants qui constituent des atouts pour OpenShift, on peut noter son haut niveau de sécurité. Prévenir les cyber intrusions et les fuites de données représente un enjeu capital pour les entreprises internationales de grande taille. Les brèches de sécurité peuvent nuire durablement à l’image de l’entreprise et entraîner des dommages financiers non négligeables.

Les fonctionnalités que comprend OpenShift permettent d’accélérer l’élaboration des applications. Ceci permet de réduire les périodes de développement sur le terrain ; les équipes informatiques en interne peuvent confortablement gérer leurs ressources par elles-mêmes et pousser plus avant le développement sans interruption.

Si une entreprise a recours à l’une des offres OpenShift gérées, cela la dispense du besoin d’administrer ses serveurs et systèmes d’exploitation. Au lieu de se préoccuper des mises à jour et des sauvegardes, l’entreprise peut se concentrer sur l’essentiel : innover et créer de la valeur pour le consommateur.

Il est évident qu’OpenShift n’a pas été conçu pour les petites entreprises et les développeurs individuels. Pour répondre aux besoins de ces derniers, il est préférable d’opter pour l’une des alternatives à OpenShift ou des alternatives à Kubernetes.

Quels sont les paramètres disponibles dans OpenShift ?

Parmi les principaux avantages d’un OpenShift, par rapport à un « simple » Kubernetes, il convient de souligner ses paramètres d’utilisation clé-en-main. Ces derniers dépassent de loin la gestion de clusters de Kubernetes. Entre autres, OpenShift offre des fonctionnalités pour :

  • L’application réseau à définition logicielle (SDN)
  • Le routage
  • L’authentification
  • La supervision et la gestion des logs

Pour gérer la plateforme, OpenShift inclut une interface Web puissante en plus des outils de ligne de commande obligatoires. Les flux de développement et de DevOps s’en trouvent accélérés, au moyen des « Red Hat OpenShift Pipelines ». On a recours à la structure Tekton pour l’« Intégration continue » / « Développement Continu » (CI/CD). Outre les applications conteneurisées, des approches modernes « sans serveurs », basées sur « Kubernetes Sans Serveur » (Knative), peuvent être utilisées.

Un autre point auquel OpenShift est attentif est le fait de fournir des architectures de microservices distribuées. Également connu sous le nom de « Red Hat Service Mesh », ce modèle d’application est basé sur le projet open source « Istio ». Pour faire face à la complexité inhérente aux architectures de microservices, OpenShift donne accès à un certain nombre d’autres outils : « Prometheus » est utilisé pour gérer la supervision et les notifications, tandis que « Jaeger » permet d’assurer le suivi des transactions. Enfin, on aura recours à « Kiali » pour visualiser le service mesh.

Quels sont les avantages et les inconvénients d’OpenShift ?

L’un des principaux avantages associés à l’utilisation d’OpenShift est le fait de pouvoir exécuter ce logiciel dans un environnement Cloud hybride. Ici, un cluster OpenShift unique couvre les limites de multiples Cloud publics et privés. Les clusters OpenShift qui ont recours à Red Hat Enterprise Linux CoreOS (RHCOS) comme leur seul système d’exploitation bénéficient des processus automatisés lorsqu’ils se mettent à jour et à niveau.

La technologie Red Hat et les outils de gestion intégrés, ainsi que les processus développés au sein de la plateforme conduisent à une expérience utilisateur plus élevée. Le modèle de développement open source ainsi que les fonctionnalités DevOps intégrées permettent des processus de développements accélérés. Le recours plus fréquent aux opérateurs en tant que format d’application universel contribue à la standardisation et simplifie les customisations qui étaient complexes jusqu’alors.

Le recours à CRI-O en tant qu’exécution de conteneur en lieu et place de Docker conduit à une sécurité accrue de la plateforme. L’interface Web ergonomique est considérée comme plus puissante et plus claire que le tableau de bord Kubernetes comparable. OpenShift excelle également sur le plan de la ligne de commande, du fait notamment de la commande oc, laquelle rend la plateforme plus facile à utiliser.

Bien sûr, les paramètres spécifiques susmentionnés d’OpenShift entraînent également des inconvénients. D’une part, les utilisateurs chevronnés de Kubernetes déplorent l’absence des puissants charts Helm, lesquels décrivent la configuration de l’infrastructure. De plus, il n’est pas possible d’utiliser tous les conteneurs Docker Hub sous OpenShift, compte tenu des paramètres de sécurité draconiens. Le fait de se concentrer sur la distribution Linux propre à Red Hat, Red Hat Enterprise Linux CoreOS (RHCOS), présente également un effet restrictif. À cet égard, Kubernetes se révèle plus flexible.

Sur quelle infrastructure OpenShift peut-il être exécuté ?

OpenShift peut être exécuté sur plus ou moins n’importe quel niveau d’infrastructure informatique, des machines « bare metal » située dans vos datas centers privés, aux machines virtuelles au sein des environnements Cloud privés ou publics, en passant par les dispositifs de périphérie de médiation. Nous établissons une distinction entre les solutions « gérées », dans lesquelles la gestion de la plateforme OpenShift est assurée par le vendeur, et les installations « auto-gérées » administrée par le client lui-même :

Quelles sont les options disponibles pour exécuter OpenShift géré à distance ?

Produit Infrastructure Géré par Support
Microsoft Azure Red Hat OpenShift Microsoft Azure Red Hat et Microsoft Red Hat et Microsoft
Red Hat OpenShift Dedicated Amazon AWS ou Google Cloud Red Hat Red Hat
Red Hat OpenShift on IBM Cloud IBM Cloud IBM Red Hat et IBM
Red Hat OpenShift Service on AWS Amazon AWS Red Hat et AWS Red Hat et AWS

Quelles sont les options disponibles pour exécuter OpenShift en autogestion ?

Produit Infrastructure Géré par Support
Red Hat OpenShift Platform Plus Private Cloud, Public Cloud, Physical Machine, Virtual Machine, Edge Client Red Hat / Fournisseur d’Infrastructure
Red Hat OpenShift Container Platform Private Cloud, Public Cloud, Physical Machine, Virtual Machine, Edge Client Red Hat / Fournisseur d’Infrastructure
Red Hat OpenShift Kubernetes Engine Private Cloud, Public Cloud, Physical Machine, Virtual Machine, Edge Client Red Hat / Fournisseur d’Infrastructure