17.3. Didacticiel: Concepts OpenShift


17.3.1. La source à l’image (S2I)

La source à image (S2I) est une boîte à outils et un flux de travail pour créer des images de conteneurs reproductibles à partir du code source. Le S2I produit des images prêtes à l’emploi en insérant du code source dans une image de conteneur et en laissant le conteneur préparer le code source. En créant des images de constructeur auto-assemblant, vous pouvez versionner et contrôler vos environnements de construction exactement comme vous utilisez des images conteneur pour la version de vos environnements d’exécution.

17.3.1.1. Comment ça marche

Dans un langage dynamique tel que Ruby, les environnements de temps de construction et de temps d’exécution sont généralement les mêmes. En supposant que Ruby, Bundler, Rake, Apache, GCC et tous les autres paquets nécessaires pour configurer et exécuter une application Ruby sont déjà installés, une image de constructeur effectue les étapes suivantes:

  1. L’image du constructeur démarre un conteneur avec la source de l’application injectée dans un répertoire connu.
  2. Le processus de conteneur transforme ce code source en configuration exécutable appropriée. Il installe par exemple des dépendances avec Bundler et déplace le code source dans un répertoire où Apache a été préconfiguré pour rechercher le fichier de configuration Ruby.
  3. Il engage ensuite le nouveau conteneur et définit le point d’entrée de l’image pour être un script qui va démarrer Apache pour héberger l’application Ruby.

Dans le cas des langages compilés tels que C, C++, Go ou Java, les dépendances nécessaires à la compilation peuvent être supérieures à la taille des artefacts d’exécution. Afin de garder les images d’exécution petites, S2I active un processus de construction en plusieurs étapes, où un artefact binaire tel qu’un fichier exécutable est créé dans la première image du constructeur, extrait et injecté dans une deuxième image d’exécution qui place simplement le programme exécutable à l’emplacement correct.

À titre d’exemple, créer un pipeline de construction reproductible pour Tomcat et Maven:

  1. Créez une image constructeur contenant OpenJDK et Tomcat qui s’attend à ce qu’un fichier WAR soit injecté.
  2. Créez une deuxième image qui couche au-dessus de la première image Maven et toute autre dépendance standard, et s’attend à ce qu’un projet Maven soit injecté.
  3. Démarrez S2I à l’aide de la source de l’application Java et de l’image Maven pour créer la WAR de l’application souhaitée.
  4. Démarrez S2I une deuxième fois en utilisant le fichier WAR de l’étape précédente et l’image Tomcat initiale pour créer l’image d’exécution.

En plaçant la logique de construction à l’intérieur des images et en combinant les images en plusieurs étapes, l’environnement d’exécution est proche de l’environnement de construction sans nécessiter le déploiement d’outils de construction à la production.

17.3.1.2. Avantages S2I

La reproductibilité
Permettre aux environnements de construction d’être rigoureusement versionnés en les encapsulant dans une image conteneur et en définissant une interface simple de code source injecté pour les appelants. Les constructions reproductibles sont une exigence clé pour permettre des mises à jour de sécurité et une intégration continue dans l’infrastructure conteneurisée, et les images du constructeur aident à assurer la répétabilité et la possibilité d’échanger des temps d’exécution.
Flexibilité
Chaque système de construction existant qui peut fonctionner sur Linux peut fonctionner à l’intérieur d’un conteneur, et chaque constructeur individuel peut également faire partie d’un pipeline plus grand. Les scripts qui traitent le code source de l’application peuvent être injectés dans l’image du constructeur, permettant aux auteurs d’adapter les images existantes pour permettre la gestion de la source.
La vitesse
Au lieu de construire plusieurs couches dans un seul Dockerfile, S2I encourage les auteurs à représenter une application dans une seule couche d’image. Cela permet d’économiser du temps pendant la création et le déploiement et permet un meilleur contrôle sur la sortie de l’image finale.
La sécurité
Dockerfiles sont exécutés sans la plupart des contrôles opérationnels normaux des conteneurs. Ils s’exécutent généralement comme racine et ont accès au réseau de conteneurs. Le S2I peut contrôler les autorisations et privilèges disponibles pour l’image du constructeur depuis le lancement de la construction dans un seul conteneur. De concert avec des plateformes comme OpenShift, S2I permet aux administrateurs de contrôler les privilèges dont disposent les développeurs au moment de la construction.

17.3.2. Itinéraires

L’itinéraire OpenShift expose un service à un nom d’hôte afin que les clients externes puissent l’atteindre par leur nom. Lorsqu’un objet Route est créé sur OpenShift, il est récupéré par l’équilibreur de charge HAProxy intégré pour exposer le service demandé et le rendre disponible en externe avec la configuration donnée.

À l’instar de l’objet de Kubernetes Ingress, Red Hat a créé le concept de route pour combler un besoin et a ensuite contribué aux principes de conception derrière elle à la communauté, ce qui a fortement influencé le design de l’Ingress. L’itinéraire comporte des caractéristiques supplémentaires, comme on peut le voir dans le tableau suivant:

Expand
CaractéristiqueEntrée sur OpenShiftItinéraire sur OpenShift

Kubernetes objet standard

A) X

 

Accès externe aux services

A) X

A) X

Des sessions persistantes (collantes)

A) X

A) X

Les stratégies d’équilibrage de la charge (par exemple, le vol à rondes)

A) X

A) X

Limite de vitesse et d’étroitesse

A) X

A) X

Liste blanche IP

A) X

A) X

Terminaison de bord TLS pour une sécurité améliorée

A) X

A) X

Le recryptage TLS pour une sécurité améliorée

 

A) X

Le passhtrough TLS pour une sécurité améliorée

 

A) X

Backends pondérés multiples (trafic partagé)

 

A) X

Des noms d’hôte basés sur des modèles générés

 

A) X

Domaines wildcard

 

A) X

Note

La résolution DNS pour un nom d’hôte est gérée séparément du routage. Il se peut que votre administrateur ait configuré un domaine cloud qui se résoudra toujours correctement sur le routeur ou modifie indépendamment vos enregistrements DNS nom d’hôte indépendants pour le résoudre au routeur.

L’itinéraire individuel peut remplacer certaines valeurs par défaut en fournissant des configurations spécifiques dans ses annotations.

17.3.3. Flux d’images

Le flux d’images stocke une cartographie des balises en images, des métadonnées qui sont appliquées lorsque les images sont étiquetées dans un flux, et une référence facultative à un référentiel d’images Docker sur un registre.

17.3.3.1. Avantages du flux d’images

En utilisant un flux d’images, il est plus facile de modifier une balise pour une image de conteneur. Dans le cas contraire, pour changer manuellement une balise, vous devez télécharger l’image, la modifier localement, puis tout repousser. La promotion des applications en modifiant manuellement une balise, puis la mise à jour de l’objet de déploiement implique de nombreuses étapes.

Avec les flux d’images, vous téléchargez une fois une image conteneur, puis vous gérez ses balises virtuelles en interne dans OpenShift. Dans un projet, vous pouvez utiliser la balise de développement et ne changer qu’une référence à elle en interne, tandis que dans la production, vous pouvez utiliser une balise de production et la gérer en interne. Il n’est pas nécessaire de traiter le registre.

Il est également possible d’utiliser des flux d’images en conjonction avec les configurations de déploiement pour définir un déclencheur qui démarrera un déploiement dès qu’une nouvelle image apparaît ou qu’une balise change de référence.

17.3.4. Constructions

La construction est le processus de transformation des paramètres d’entrée en un objet résultant. Le plus souvent, le processus est utilisé pour transformer les paramètres d’entrée ou le code source en une image exécutable. L’objet BuildConfig est la définition de l’ensemble du processus de construction.

La plate-forme de conteneurs OpenShift exploite Kubernetes en créant des conteneurs au format Docker à partir de la création d’images et en les poussant vers un registre d’images de conteneur.

Construire des objets partagent des caractéristiques communes:

  • Entrées pour une construction
  • Exigences pour compléter un processus de construction
  • Journalisation du processus de construction
  • La publication de ressources issues de constructions réussies
  • La publication du statut final de la construction

Les builds profitent des restrictions de ressources, spécifiant des limites sur les ressources telles que l’utilisation du CPU, l’utilisation de la mémoire et le temps d’exécution de la construction ou du pod.

Ressources supplémentaires

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat