Images


Red Hat OpenShift Service on AWS 4

Le Red Hat OpenShift Service sur AWS Images.

Red Hat OpenShift Documentation Team

Résumé

Ce document fournit des instructions pour créer et gérer des images et des flux d’images. Il fournit également des instructions sur l’utilisation des modèles.

Chapitre 1. Aperçu des images

Les conteneurs, les images et les flux d’images sont des concepts importants à comprendre lorsque vous commencez à créer et à gérer des logiciels conteneurisés. L’image contient un ensemble de logiciels prêts à s’exécuter, tandis qu’un conteneur est une instance en cours d’exécution d’une image de conteneur. Le flux d’images fournit un moyen de stocker différentes versions de la même image de base. Ces différentes versions sont représentées par différentes balises sur le même nom d’image.

1.2. Images

Les conteneurs dans Red Hat OpenShift Service sur AWS sont basés sur des images de conteneurs au format OCI ou Docker. L’image est un binaire qui comprend toutes les exigences pour exécuter un seul conteneur, ainsi que des métadonnées décrivant ses besoins et ses capacités.

Il s’agit d’une technologie d’emballage. Les conteneurs n’ont accès aux ressources définies dans l’image que si vous donnez au conteneur un accès supplémentaire lors de sa création. En déployant la même image dans plusieurs conteneurs sur plusieurs hôtes et en équilibrant la charge entre eux, Red Hat OpenShift Service sur AWS peut fournir une redondance et une mise à l’échelle horizontales pour un service emballé dans une image.

Il est possible d’utiliser le podman ou le docker CLI directement pour créer des images, mais Red Hat OpenShift Service sur AWS fournit également des images de constructeur qui aident à créer de nouvelles images en ajoutant votre code ou votre configuration aux images existantes.

Étant donné que les applications se développent au fil du temps, un seul nom d’image peut en fait se référer à de nombreuses versions différentes de la même image. Chaque image différente est désignée de manière unique par son hachage, un long nombre hexadécimal tel que fd44297e2ddb050ec4f…​, qui est généralement raccourci à 12 caractères, tels que fd44297e2ddb.

Il est possible de créer et de gérer des images de conteneurs.

1.3. Enregistrement d’images

Le registre d’images est un serveur de contenu qui peut stocker et servir des images conteneur. À titre d’exemple:

registry.redhat.io
Copy to Clipboard Toggle word wrap

Le registre contient une collection d’un ou plusieurs référentiels d’images, qui contiennent une ou plusieurs images marquées. Le Red Hat fournit un registre sur register.redhat.io pour les abonnés. Le service Red Hat OpenShift sur AWS peut également fournir son propre registre d’images OpenShift pour la gestion des images de conteneurs personnalisés.

1.4. Dépôt d’images

Le référentiel d’images est une collection d’images de conteneurs connexes et de balises les identifiant. À titre d’exemple, le service OpenShift Red Hat sur les images AWS Jenkins se trouve dans le référentiel:

docker.io/openshift/jenkins-2-centos7
Copy to Clipboard Toggle word wrap

1.5. Balises d’image

La balise image est une étiquette appliquée à une image conteneur dans un référentiel qui distingue une image spécifique des autres images d’un flux d’images. Généralement, le tag représente un numéro de version d’une sorte. Ici :v3.11.59-2 est le tag:

registry.access.redhat.com/openshift3/jenkins-2-rhel7:v3.11.59-2
Copy to Clipboard Toggle word wrap

Il est possible d’ajouter des balises supplémentaires à une image. À titre d’exemple, une image peut se voir attribuer les balises :v3.11.59-2 et :dernières.

Le service OpenShift Red Hat sur AWS fournit la commande oc tag, qui est similaire à la commande docker tag, mais fonctionne sur les flux d’images au lieu de directement sur les images.

1.6. ID d’image

L’ID d’image est un code SHA (Secure Hash Algorithm) qui peut être utilisé pour tirer une image. L’identifiant d’image SHA ne peut pas changer. L’identificateur SHA spécifique fait toujours référence au même contenu d’image de conteneur. À titre d’exemple:

docker.io/openshift/jenkins-2-centos7@sha256:ab312bda324
Copy to Clipboard Toggle word wrap

1.7. Conteneurs

Les unités de base de Red Hat OpenShift Service sur les applications AWS sont appelées conteneurs. Les technologies de conteneurs Linux sont des mécanismes légers pour isoler les processus en cours d’exécution, de sorte qu’ils se limitent à interagir avec seulement leurs ressources désignées. Le mot conteneur est défini comme une instance spécifique en cours d’exécution ou en pause d’une image de conteneur.

De nombreuses instances d’application peuvent s’exécuter dans des conteneurs sur un seul hôte sans visibilité sur les processus, les fichiers, le réseau, etc. En règle générale, chaque conteneur fournit un service unique, souvent appelé micro-service, tel qu’un serveur Web ou une base de données, bien que les conteneurs puissent être utilisés pour des charges de travail arbitraires.

Le noyau Linux intègre des capacités pour les technologies de conteneurs depuis des années. Le projet Docker a développé une interface de gestion pratique pour les conteneurs Linux sur un hôte. Dernièrement, l’Open Container Initiative a élaboré des normes ouvertes pour les formats de conteneurs et les durées d’exécution des conteneurs. Le service OpenShift Red Hat sur AWS et Kubernetes ajoute la possibilité d’orchestrer des conteneurs au format OCI et Docker sur des installations multi-hôte.

Bien que vous n’interagissez pas directement avec les exécutions de conteneurs lorsque vous utilisez Red Hat OpenShift Service sur AWS, comprendre leurs capacités et leur terminologie est important pour comprendre leur rôle dans Red Hat OpenShift Service sur AWS et comment vos applications fonctionnent à l’intérieur des conteneurs.

Des outils tels que podman peuvent être utilisés pour remplacer les outils de ligne de commande docker pour exécuter et gérer directement les conteneurs. En utilisant Podman, vous pouvez expérimenter des conteneurs séparément de Red Hat OpenShift Service sur AWS.

1.8. Comment utiliser des flux d’images

Le flux d’images et les balises associées fournissent une abstraction pour référencer les images de conteneurs à partir de Red Hat OpenShift Service sur AWS. Le flux d’images et ses balises vous permettent de voir quelles images sont disponibles et de vous assurer que vous utilisez l’image spécifique dont vous avez besoin même si l’image dans le référentiel change.

Les flux d’images ne contiennent pas de données d’image réelles, mais présentent une seule vue virtuelle d’images connexes, similaire à un référentiel d’images.

Lorsque de nouvelles images sont ajoutées et réagissent en effectuant une compilation ou un déploiement, vous pouvez configurer des builds et des déploiements pour regarder un flux d’images pour les notifications.

Ainsi, si un déploiement utilise une certaine image et qu’une nouvelle version de cette image est créée, un déploiement peut être automatiquement effectué pour récupérer la nouvelle version de l’image.

Cependant, si la balise de flux d’images utilisée par le déploiement ou la construction n’est pas mise à jour, alors même si l’image du conteneur dans le registre d’image du conteneur est mise à jour, la construction ou le déploiement continue en utilisant l’image précédente, probablement connue.

Les images source peuvent être stockées dans l’un des éléments suivants:

  • Le service Red Hat OpenShift sur le registre intégré d’AWS.
  • D’un registre externe, par exemple Registry.redhat.io ou quay.io.
  • D’autres flux d’images dans le Red Hat OpenShift Service sur AWS cluster.

Lorsque vous définissez un objet qui fait référence à une balise de flux d’images, comme une configuration de construction ou de déploiement, vous pointez vers une balise de flux d’images et non vers le référentiel. Lorsque vous construisez ou déployez votre application, Red Hat OpenShift Service sur AWS interroge le référentiel à l’aide de la balise de flux d’images pour localiser l’ID associé de l’image et utilise cette image exacte.

Les métadonnées du flux d’images sont stockées dans l’instance etcd avec d’autres informations de cluster.

L’utilisation de flux d’images présente plusieurs avantages importants:

  • Il est possible d’étiqueter, de faire reculer une balise et de traiter rapidement les images, sans avoir à re-push en utilisant la ligne de commande.
  • Il est possible de déclencher des builds et des déploiements lorsqu’une nouvelle image est poussée vers le registre. En outre, Red Hat OpenShift Service sur AWS a des déclencheurs génériques pour d’autres ressources, telles que les objets Kubernetes.
  • Il est possible de marquer une étiquette pour une réimportation périodique. Lorsque l’image source a changé, ce changement est capté et reflété dans le flux d’images, ce qui déclenche le flux de construction ou de déploiement, en fonction de la configuration de construction ou de déploiement.
  • Il est possible de partager des images à l’aide d’un contrôle d’accès fin et de distribuer rapidement des images à travers vos équipes.
  • En cas de modification de l’image source, la balise flux d’image pointe toujours vers une bonne version connue de l’image, en veillant à ce que votre application ne se casse pas de manière inattendue.
  • Configurez la sécurité autour de qui peut afficher et utiliser les images grâce à des autorisations sur les objets du flux d’images.
  • Les utilisateurs qui n’ont pas la permission de lire ou de répertorier des images au niveau du cluster peuvent toujours récupérer les images marquées dans un projet à l’aide de flux d’images.

Il est possible de gérer les flux d’images, d’utiliser des flux d’images avec les ressources Kubernetes et de déclencher des mises à jour sur les mises à jour des flux d’images.

1.9. Balises de flux d’images

La balise de flux d’images est un pointeur nommé vers une image dans un flux d’image. La balise de flux d’image est similaire à une balise d’image de conteneur.

1.10. Images de flux d’images

L’image de flux d’image vous permet de récupérer une image de conteneur spécifique à partir d’un flux d’image particulier où elle est marquée. L’image d’un flux d’images est un objet de ressource API qui rassemble certaines métadonnées sur un identifiant SHA d’image particulier.

1.11. Déclencheurs du flux d’images

Le déclenchement d’un flux d’image provoque une action spécifique lorsqu’une balise de flux d’image change. À titre d’exemple, l’importation peut entraîner la modification de la valeur de la balise, ce qui provoque le déclenchement d’un déclencheur lorsqu’il y a des déploiements, des builds ou d’autres ressources à l’écoute de ceux-ci.

Lors du démarrage initial, l’opérateur crée la ressource d’échantillons par défaut pour lancer la création des flux d’images et des modèles. L’opérateur d’échantillons de clusters vous permet de gérer les flux d’images et les modèles d’échantillons stockés dans l’espace de noms openshift.

En tant qu’administrateur de cluster, vous pouvez utiliser l’opérateur d’échantillons de cluster pour:

  • Employez l’opérateur avec un registre alternatif.

1.13. À propos des modèles

Le modèle est une définition d’un objet à reproduire. Il est possible d’utiliser des modèles pour construire et déployer des configurations.

1.14. Comment utiliser Ruby sur Rails

En tant que développeur, vous pouvez utiliser Ruby on Rails pour:

  • Écrivez votre application:

    • Configurez une base de données.
    • Créez une page de bienvenue.
    • Configurez votre application pour Red Hat OpenShift Service sur AWS.
    • Enregistrez votre application dans Git.
  • Déployez votre application dans Red Hat OpenShift Service sur AWS:

    • Créer le service de base de données.
    • Créez le service frontend.
    • Créez un itinéraire pour votre application.

L’opérateur d’échantillons de cluster, qui fonctionne dans l’espace de noms openshift, installe et met à jour le service Red Hat OpenShift sur les flux d’images AWS et le service OpenShift Red Hat sur les modèles AWS.

L’opérateur d’échantillons de clusters est en train d’être déprécié
  • À partir de Red Hat OpenShift Service sur AWS 4.16, l’opérateur d’échantillons de clusters est obsolète. Aucun nouveau modèle, échantillon ou flux d’images non source à image (Non-S2I) ne sera ajouté à l’opérateur d’échantillons de grappes. Cependant, les flux d’images et les modèles existants du constructeur S2I continueront de recevoir des mises à jour jusqu’à ce que l’opérateur d’échantillons de cluster soit supprimé dans une version ultérieure. Les flux d’images et les modèles S2I comprennent:

    • ♪ Ruby ♪
    • À propos de Python
    • À propos de Node.js
    • À propos de Perl
    • À PROPOS DE PHP
    • HTTPD
    • Le Nginx
    • EAP
    • Java
    • Le serveur Web
    • .NET
    • Allez-y
  • L’opérateur d’échantillons de cluster cessera de gérer et de fournir un soutien aux échantillons non S2I (flux d’images et modèles). Il est possible de contacter le propriétaire du flux d’images ou du modèle pour toutes les exigences et les futurs plans. En outre, consultez la liste des référentiels hébergeant le flux d’images ou les modèles.

2.1. Comprendre l’opérateur d’échantillons de grappes

Lors de l’installation, l’opérateur crée l’objet de configuration par défaut pour lui-même, puis crée les flux d’images et modèles d’échantillons, y compris les modèles de démarrage rapide.

Note

Afin de faciliter les importations de flux d’images à partir d’autres registres nécessitant des informations d’identification, un administrateur de cluster peut créer tous les secrets supplémentaires qui contiennent le contenu d’un fichier Docker config.json dans l’espace de noms openshift nécessaire à l’importation d’image.

La configuration de l’opérateur d’échantillons de cluster est une ressource à l’échelle du cluster, et le déploiement est contenu dans l’espace de noms openshift-cluster-samples-operator.

L’image de l’opérateur d’échantillons de cluster contient des définitions de flux d’images et de modèles pour le service Red Hat OpenShift associé sur AWS. Lorsque chaque échantillon est créé ou mis à jour, l’opérateur d’échantillons de cluster comprend une annotation indiquant la version de Red Hat OpenShift Service sur AWS. L’opérateur utilise cette annotation pour s’assurer que chaque échantillon correspond à la version de sortie. Les échantillons en dehors de son inventaire sont ignorés, tout comme les échantillons sautés. Les modifications apportées aux échantillons qui sont gérés par l’Opérateur, lorsque cette annotation de version est modifiée ou supprimée, sont automatiquement retournées.

Note

Les images Jenkins font partie de la charge utile de l’image à partir de l’installation et sont marquées directement dans les flux d’images.

La ressource de configuration de l’opérateur d’échantillons de cluster comprend un finaliseur qui nettoie ce qui suit lors de la suppression:

  • Flux d’images gérés par l’opérateur.
  • Les modèles gérés par l’opérateur.
  • L’opérateur a généré des ressources de configuration.
  • B) Ressources d’état du groupe.

Lors de la suppression de la ressource d’échantillons, l’opérateur d’échantillons de clusters recrée la ressource en utilisant la configuration par défaut.

L’opérateur d’échantillons de cluster est bootstrapped tel que géré par défaut ou si le proxy global est configuré. Dans l’état géré, l’opérateur d’échantillons de cluster gère activement ses ressources et maintient le composant actif afin de tirer des échantillons de flux d’images et d’images du registre et de s’assurer que les modèles d’échantillons requis sont installés.

Certaines circonstances entraînent le démarrage de l’opérateur d’échantillons de cluster lui-même tel qu’il a été supprimé, y compris:

  • Lorsque l’opérateur d’échantillons de clusters ne peut pas atteindre Registry.redhat.io après trois minutes au démarrage initial après une installation propre.
  • Lorsque l’opérateur d’échantillons de cluster détecte celui-ci sur un réseau IPv6.
Note

Dans le cas de Red Hat OpenShift Service sur AWS, le registre des images par défaut est register.access.redhat.com ou quay.io.

Cependant, si l’opérateur d’échantillons de cluster détecte qu’il est sur un réseau IPv6 et qu’un Red Hat OpenShift Service sur le proxy global AWS est configuré, alors la vérification IPv6 remplace toutes les vérifications. En conséquence, le Cluster Samples Operator bootstraps lui-même comme supprimé.

Important

Les installations IPv6 ne sont pas actuellement prises en charge par Registry.redhat.io. L’opérateur d’échantillons de cluster extrait la plupart des flux d’images et des images de l’échantillon de Registry.redhat.io.

Après la création ou la mise à jour d’un flux d’images d’échantillons, l’opérateur d’échantillons de cluster surveille l’avancement de l’importation d’image de chaque balise de flux d’images.

En cas d’échec d’une importation, l’opérateur d’échantillons de cluster réactive l’importation à travers l’API d’importation d’images du flux d’images, qui est la même API utilisée par la commande oc import-image, environ toutes les 15 minutes jusqu’à ce qu’elle voit l’importation réussir, ou si la configuration de l’opérateur d’échantillons de cluster est modifiée de telle sorte que le flux d’images soit ajouté à la liste des flux d’images

Ressources supplémentaires

  • Lorsque l’opérateur d’échantillons de clusters est supprimé pendant l’installation, vous pouvez utiliser l’opérateur d’échantillons de cluster avec un autre registre afin d’importer le contenu, puis définir l’opérateur d’échantillons de cluster à gérer pour obtenir les échantillons.

L’opérateur d’échantillons de clusters laisse des balises de flux d’images dépréciées dans un flux d’images parce que les utilisateurs peuvent avoir des déploiements qui utilisent les balises de flux d’images dépréciées.

Il est possible de supprimer les balises de flux d’images dépréciées en modifiant le flux d’image avec la commande oc tag.

Note

Les balises de flux d’images dépréciées que les fournisseurs d’échantillons ont retirées de leurs flux d’images ne sont pas incluses sur les installations initiales.

Conditions préalables

  • C’est toi qui as installé le CLI.

Procédure

  • Enlevez les balises de flux d’images obsolètes en éditant le flux d’image avec la commande oc tag.

    $ oc tag -d <image_stream_name:tag>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Deleted tag default/<image_stream_name:tag>.
    Copy to Clipboard Toggle word wrap

Ressources supplémentaires

  • En savoir plus sur la configuration des informations d’identification, voir Utiliser les secrets de tirage d’image.

Il est possible d’utiliser l’opérateur d’échantillons de clusters avec un registre alternatif en créant d’abord un registre miroir.

Important

Il faut avoir accès à Internet pour obtenir les images de conteneur nécessaires. Dans cette procédure, vous placez le registre miroir sur un hôte miroir qui a accès à votre réseau et à Internet.

3.1. À propos du registre miroir

Les images requises pour Red Hat OpenShift Service sur l’installation AWS et les mises à jour ultérieures des produits vers un registre miroir de conteneur tels que Red Hat Quay, JFrog Artifactory, Sonatype Nexus Repository ou Harbor. Dans le cas où vous n’avez pas accès à un registre de conteneurs à grande échelle, vous pouvez utiliser le registre miroir de Red Hat OpenShift, un registre de conteneurs à petite échelle inclus dans Red Hat OpenShift Service sur les abonnements AWS.

Il est possible d’utiliser n’importe quel registre de conteneurs qui supporte Docker v2-2, tel que Red Hat Quay, le registre miroir pour Red Hat OpenShift, Artifactory, Sonatype Nexus Repository ou Harbor. Indépendamment de votre registre choisi, la procédure pour refléter le contenu des sites hébergés par Red Hat sur Internet vers un registre d’images isolé est la même. Après avoir miroir le contenu, vous configurez chaque cluster pour récupérer ce contenu de votre registre miroir.

Important

Le registre d’images OpenShift ne peut pas être utilisé comme registre cible, car il ne prend pas en charge la poussée sans balise, ce qui est nécessaire pendant le processus de mise en miroir.

Lorsque vous choisissez un registre de conteneurs qui n’est pas le registre miroir de Red Hat OpenShift, il doit être accessible par chaque machine des clusters que vous fournissez. Lorsque le registre n’est pas accessible, l’installation, la mise à jour ou les opérations normales telles que la réinstallation de la charge de travail peuvent échouer. C’est pour cette raison que vous devez exécuter des registres miroirs de manière hautement disponible, et les registres miroirs doivent au moins correspondre à la disponibilité de production de votre Red Hat OpenShift Service sur les clusters AWS.

Lorsque vous remplissez votre registre miroir avec Red Hat OpenShift Service sur les images AWS, vous pouvez suivre deux scénarios. Lorsque vous avez un hôte qui peut accéder à Internet et à votre registre miroir, mais pas à vos nœuds de cluster, vous pouvez directement refléter le contenu de cette machine. Ce processus est appelé miroir connecté. Lorsque vous n’avez pas un tel hôte, vous devez refléter les images dans un système de fichiers et ensuite apporter cet hôte ou support amovible dans votre environnement restreint. Ce processus est appelé miroir déconnecté.

Dans le cas des registres en miroir, pour afficher la source des images tirées, vous devez consulter l’essai pour accéder à l’entrée de journal dans les journaux CRI-O. D’autres méthodes pour visualiser la source d’attraction de l’image, telles que l’utilisation de la commande images crictl sur un nœud, montrent le nom de l’image non-mirrored, même si l’image est tirée de l’emplacement en miroir.

Note

Le Red Hat ne teste pas les registres tiers avec Red Hat OpenShift Service sur AWS.

3.1.1. La préparation de l’hôte miroir

Avant de créer le registre miroir, vous devez préparer l’hôte miroir.

3.1.2. Installation de l’OpenShift CLI

Il est possible d’installer OpenShift CLI (oc) pour interagir avec ROSA à partir d’une interface de ligne de commande. Il est possible d’installer oc sous Linux, Windows ou macOS.

Important

Lorsque vous avez installé une version antérieure d’oc, vous ne pouvez pas l’utiliser pour compléter toutes les commandes dans ROSA. Installez et téléchargez la nouvelle version d’oc.

Installation du CLI OpenShift sur Linux

En utilisant la procédure suivante, vous pouvez installer le binaire OpenShift CLI (oc) sur Linux.

Procédure

  1. Accédez au service OpenShift Red Hat sur la page de téléchargement d’AWS sur le portail client Red Hat.
  2. Choisissez l’architecture dans la liste déroulante Variante de produit.
  3. Choisissez la version appropriée dans la liste déroulante Version.
  4. Cliquez sur Télécharger maintenant à côté de l’entrée OpenShift v4 Linux Clients et enregistrez le fichier.
  5. Décompressez l’archive:

    $ tar xvf <file>
    Copy to Clipboard Toggle word wrap
  6. Déposez le binaire oc dans un répertoire qui est sur votre PATH.

    Afin de vérifier votre PATH, exécutez la commande suivante:

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

La vérification

  • Après avoir installé le CLI OpenShift, il est disponible à l’aide de la commande oc:

    $ oc <command>
    Copy to Clipboard Toggle word wrap
Installation du CLI OpenShift sur Windows

En utilisant la procédure suivante, vous pouvez installer le binaire OpenShift CLI (oc) sur Windows.

Procédure

  1. Accédez au service OpenShift Red Hat sur la page de téléchargement d’AWS sur le portail client Red Hat.
  2. Choisissez la version appropriée dans la liste déroulante Version.
  3. Cliquez sur Télécharger maintenant à côté de l’entrée client Windows OpenShift v4 et enregistrez le fichier.
  4. Décompressez l’archive avec un programme ZIP.
  5. Déplacez le binaire oc vers un répertoire qui est sur votre PATH.

    Afin de vérifier votre PATH, ouvrez l’invite de commande et exécutez la commande suivante:

    C:\> path
    Copy to Clipboard Toggle word wrap

La vérification

  • Après avoir installé le CLI OpenShift, il est disponible à l’aide de la commande oc:

    C:\> oc <command>
    Copy to Clipboard Toggle word wrap
Installation de l’OpenShift CLI sur macOS

En utilisant la procédure suivante, vous pouvez installer le binaire OpenShift CLI (oc) sur macOS.

Procédure

  1. Accédez au service OpenShift Red Hat sur la page de téléchargement d’AWS sur le portail client Red Hat.
  2. Choisissez la version appropriée dans la liste déroulante Version.
  3. Cliquez sur Télécharger maintenant à côté de l’entrée OpenShift v4 macOS Clients et enregistrez le fichier.

    Note

    Dans le cas de macOS arm64, choisissez l’entrée client OpenShift v4 macOS arm64.

  4. Décompressez et décompressez l’archive.
  5. Déplacez le binaire oc vers un répertoire sur votre PATH.

    Afin de vérifier votre PATH, ouvrez un terminal et exécutez la commande suivante:

    $ echo $PATH
    Copy to Clipboard Toggle word wrap

La vérification

  • Contrôlez votre installation à l’aide d’une commande oc:

    $ oc <command>
    Copy to Clipboard Toggle word wrap

Créez un fichier d’identification de registre d’images de conteneur qui vous permet de refléter les images de Red Hat à votre miroir.

Conditions préalables

  • Configuration d’un registre miroir à utiliser.

Procédure

Complétez les étapes suivantes sur l’hôte d’installation:

  1. Cliquez ici pour télécharger le secret de Red Hat OpenShift Cluster Manager.
  2. Faites une copie de votre pull secret au format JSON en exécutant la commande suivante:

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le chemin vers le dossier pour stocker le pull secret et un nom pour le fichier JSON que vous créez.

    Exemple tirer secret

    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

  3. Générez le nom d’utilisateur et le mot de passe ou le jeton codés de base64 pour votre registre miroir en exécutant la commande suivante:

    $ echo -n '<user_name>:<password>' | base64 -w0 
    1
    Copy to Clipboard Toggle word wrap
    1
    Dans &lt;user_name&gt; et &lt;password&gt;, spécifiez le nom d’utilisateur et le mot de passe que vous avez configurés pour votre registre.

    Exemple de sortie

    BGVtbYk3ZHAtqXs=
    Copy to Clipboard Toggle word wrap

  4. Modifiez le fichier JSON et ajoutez une section qui décrit votre registre:

      "auths": {
        "<mirror_registry>": { 
    1
    
          "auth": "<credentials>", 
    2
    
          "email": "you@example.com"
        }
      },
    Copy to Clipboard Toggle word wrap
    1
    Indiquez le nom de domaine du registre, et éventuellement le port, que votre registre miroir utilise pour servir le contenu. A titre d’exemple, Registry.example.com ou Registry.example.com:8443
    2
    Indiquez le nom d’utilisateur et le mot de passe codés de base64 pour le registre miroir.

    Exemple modifié pull secret

    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "you@example.com"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

Faites correspondre le service OpenShift de Red Hat sur le référentiel d’images AWS à votre registre à utiliser lors de l’installation ou de la mise à niveau du cluster.

Conditions préalables

  • L’hôte miroir a accès à Internet.
  • Configuration d’un registre miroir à utiliser.
  • Il a téléchargé le pull secret de Red Hat OpenShift Cluster Manager et l’a modifié pour inclure l’authentification dans votre référentiel miroir.
  • Lorsque vous utilisez des certificats autosignés, vous avez spécifié un nom alternatif de sujet dans les certificats.

Procédure

Complétez les étapes suivantes sur l’hôte miroir:

  1. Consultez la page de téléchargements Red Hat OpenShift sur AWS pour déterminer la version de Red Hat OpenShift Service sur AWS que vous souhaitez installer et déterminer la balise correspondante sur la page Tags de dépôt.
  2. Définissez les variables d’environnement requises:

    1. Exporter la version de version:

      $ OCP_RELEASE=<release_version>
      Copy to Clipboard Toggle word wrap

      Dans &lt; Release_version&gt;, spécifiez la balise qui correspond à la version de Red Hat OpenShift Service sur AWS à installer, telle que 4.5.4.

    2. Exporter le nom du registre local et le port hôte:

      $ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
      Copy to Clipboard Toggle word wrap

      Dans &lt;local_registry_host_name&gt;, spécifiez le nom de domaine du registre pour votre référentiel miroir, et pour &lt;local_registry_host_port&gt;, spécifiez le port sur lequel il sert le contenu.

    3. Exporter le nom du référentiel local:

      $ LOCAL_REPOSITORY='<local_repository_name>'
      Copy to Clipboard Toggle word wrap

      Dans &lt;local_repository_name&gt;, spécifiez le nom du référentiel à créer dans votre registre, tel que ocp4/openshift4.

    4. Exporter le nom du référentiel en miroir:

      $ PRODUCT_REPO='openshift-release-dev'
      Copy to Clipboard Toggle word wrap

      Dans le cas d’une sortie de production, vous devez spécifier openshift- release-dev.

    5. Exporter le chemin vers votre registre pull secret:

      $ LOCAL_SECRET_JSON='<path_to_pull_secret>'
      Copy to Clipboard Toggle word wrap

      Dans &lt;path_to_pull_secret&gt;, spécifiez le chemin absolu vers et le nom de fichier du pull secret pour votre registre miroir que vous avez créé.

    6. Exporter le miroir de libération:

      $ RELEASE_NAME="ocp-release"
      Copy to Clipboard Toggle word wrap

      Dans le cas d’une sortie de production, vous devez spécifier la version ocp.

    7. Exportez le type d’architecture pour votre cluster:

      $ ARCHITECTURE=<cluster_architecture> 
      1
      Copy to Clipboard Toggle word wrap
      1
      Indiquez l’architecture du cluster, comme x86_64, aarch64, s390x ou ppc64le.
    8. Exporter le chemin vers le répertoire pour héberger les images en miroir:

      $ REMOVABLE_MEDIA_PATH=<path> 
      1
      Copy to Clipboard Toggle word wrap
      1
      Indiquez le chemin complet, y compris le caractère initial de la barre oblique vers l’avant (/).
  3. Affichez les images de la version dans le registre miroir:

    1. Appuyez directement sur les images de libération vers le registre local en utilisant la commande suivante:

      $ oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
           --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
           --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
           --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
      Copy to Clipboard Toggle word wrap

      Cette commande tire les informations de libération comme un digest, et sa sortie inclut les données imageContentSources dont vous avez besoin lorsque vous installez votre cluster.

    2. Enregistrez l’ensemble de la section imageContentSources à partir de la sortie de la commande précédente. Les informations sur vos miroirs sont uniques à votre référentiel miroir, et vous devez ajouter la section imageContentSources au fichier install-config.yaml pendant l’installation.

      Note

      Le nom de l’image est corrigé sur Quay.io pendant le processus de mise en miroir, et les images podman afficheront Quay.io dans le registre sur la machine virtuelle bootstrap.

  4. Créer le programme d’installation qui est basé sur le contenu que vous avez reflété, l’extraire et l’épingler à la version en exécutant la commande suivante:

    $ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
    Copy to Clipboard Toggle word wrap
    Important

    Afin de vous assurer que vous utilisez les images correctes pour la version de Red Hat OpenShift Service sur AWS que vous avez sélectionnée, vous devez extraire le programme d’installation du contenu en miroir.

    Il faut effectuer cette étape sur une machine avec une connexion Internet active.

  5. Dans le cas des clusters utilisant l’infrastructure fournie par l’installateur, exécutez la commande suivante:

    $ openshift-install
    Copy to Clipboard Toggle word wrap

La plupart des flux d’images dans l’espace de noms openshift géré par l’opérateur d’échantillons de cluster pointent vers des images situées dans le registre Red Hat sur Registry.redhat.io.

Note

Les flux d’images cli, installateur, must-gather et testent, alors qu’ils font partie de la charge utile d’installation, ne sont pas gérés par l’opérateur d’échantillons de cluster. Celles-ci ne sont pas abordées dans cette procédure.

Important

L’opérateur d’échantillons de cluster doit être configuré pour gérer dans un environnement déconnecté. Afin d’installer les flux d’images, vous disposez d’un registre en miroir.

Conditions préalables

  • Accès au cluster en tant qu’utilisateur avec le rôle dédié-admin.
  • Créez un secret d’attraction pour votre registre miroir.

Procédure

  1. Accédez aux images d’un flux d’images spécifique au miroir, par exemple:

    $ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. Images miroirs de register.redhat.io associés à tous les flux d’images dont vous avez besoin

    $ oc image mirror registry.redhat.io/rhscl/ruby-25-rhel7:latest ${MIRROR_ADDR}/rhscl/ruby-25-rhel7:latest
    Copy to Clipboard Toggle word wrap
  3. Créer l’objet de configuration d’image du cluster:

    $ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config
    Copy to Clipboard Toggle word wrap
  4. Ajoutez les CA de confiance requises pour le miroir dans l’objet de configuration d’image du cluster:

    $ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
    Copy to Clipboard Toggle word wrap
  5. Actualisez le champ d’enregistrement des échantillons dans l’objet de configuration de l’opérateur d’échantillons de cluster pour contenir la partie nom d’hôte de l’emplacement du miroir défini dans la configuration du miroir:

    $ oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator
    Copy to Clipboard Toggle word wrap
    Note

    Ceci est nécessaire parce que le processus d’importation de flux d’images n’utilise pas le miroir ou le mécanisme de recherche pour le moment.

  6. Ajoutez tous les flux d’images qui ne sont pas reflétés dans le champ skippedImagestreams de l’objet de configuration de Cluster Samples Operator. Lorsque vous ne voulez pas prendre en charge l’un des flux d’images de l’échantillon, définissez l’opérateur d’échantillons de cluster sur l’objet de configuration de l’opérateur d’échantillons de cluster.

    Note

    L’opérateur d’échantillons de cluster émet des alertes en cas d’échec des importations de flux d’images, mais l’opérateur d’échantillons de grappes réessaye périodiquement ou ne semble pas les réessayer.

    Beaucoup de modèles dans l’espace de noms openshift référencent les flux d’images. Ainsi, l’utilisation Removed pour purger les flux d’images et les modèles éliminera la possibilité de tentatives de les utiliser si elles ne sont pas fonctionnelles en raison de flux d’images manquants.

3.4.1. Assistance de l’opérateur pour la mise en miroir

Lors de l’installation, Red Hat OpenShift Service sur AWS crée une carte de configuration nommée imagestreamtag-to-image dans l’espace de noms openshift-cluster-samples-operator. La carte de configuration imagestreamtag-to-image contient une entrée, l’image populante, pour chaque balise de flux d’image.

Le format de la clé pour chaque entrée dans le champ de données de la carte de configuration est &lt;image_stream_name&gt;_&lt;image_stream_tag_name&gt;.

Lors d’une installation déconnectée de Red Hat OpenShift Service sur AWS, l’état de l’opérateur d’échantillons de cluster est réglé sur Supprimer. Lorsque vous choisissez de le changer pour Géré, il installe des échantillons.

Note

L’utilisation d’échantillons dans un environnement restreint ou interrompu peut nécessiter l’accès à des services externes à votre réseau. Certains exemples de services incluent: Github, Maven Central, npm, RubyGems, PyPi et d’autres. Il pourrait y avoir des mesures supplémentaires à prendre pour permettre aux opérateurs d’échantillons de clusters d’atteindre les services dont ils ont besoin.

Cette carte de configuration peut être utilisée comme référence pour laquelle les images doivent être reflétées pour que vos flux d’images puissent être importés.

  • Alors que l’opérateur d’échantillons de cluster est défini sur Supprimer, vous pouvez créer votre registre en miroir, ou déterminer quel registre miroir existant vous souhaitez utiliser.
  • Affichez les échantillons que vous souhaitez dans le registre en miroir en utilisant la nouvelle carte de configuration comme guide.
  • Ajoutez l’un des flux d’images que vous n’avez pas reflétés à la liste skippedImagestreams de l’objet de configuration de Cluster Samples Operator.
  • Définir l’objet de configuration de l’opérateur d’échantillons de clusters dans le registre en miroir.
  • Ensuite, définissez l’opérateur d’échantillons de cluster sur Géré pour installer les flux d’images que vous avez reflétés.

Consultez Utiliser les flux d’images de l’opérateur avec des registres alternatifs ou en miroir pour une procédure détaillée.

Chapitre 4. Création d’images

Apprenez à créer vos propres images de conteneur, basées sur des images prédéfinies qui sont prêtes à vous aider. Le processus comprend l’apprentissage des meilleures pratiques pour l’écriture d’images, la définition des métadonnées pour les images, les tests d’images et l’utilisation d’un workflow de constructeur personnalisé pour créer des images à utiliser avec Red Hat OpenShift Service sur AWS.

4.1. Apprendre les meilleures pratiques des conteneurs

Lors de la création d’images conteneur pour fonctionner sur Red Hat OpenShift Service sur AWS, il existe un certain nombre de meilleures pratiques à considérer comme un auteur d’image pour assurer une bonne expérience pour les consommateurs de ces images. Étant donné que les images sont destinées à être immuables et utilisées telles quelles, les lignes directrices suivantes permettent de garantir que vos images sont très consommables et faciles à utiliser sur Red Hat OpenShift Service sur AWS.

Les directives suivantes s’appliquent lors de la création d’une image de conteneur en général et sont indépendantes de l’utilisation ou non des images sur Red Hat OpenShift Service sur AWS.

La réutilisation des images

Dans la mesure du possible, basez votre image sur une image en amont appropriée à l’aide de l’instruction FROM. Cela garantit que votre image peut facilement récupérer des correctifs de sécurité à partir d’une image en amont lorsqu’elle est mise à jour, plutôt que de devoir mettre à jour vos dépendances directement.

De plus, utilisez des balises dans l’instruction FROM, par exemple rhel:rhel7, pour indiquer clairement aux utilisateurs la version d’une image sur laquelle votre image est basée. En utilisant une balise autre que la dernière, vous assurez que votre image n’est pas soumise à des changements qui pourraient entrer dans la dernière version d’une image en amont.

Conserver la compatibilité dans les balises

Lors du marquage de vos propres images, essayez de maintenir la compatibilité rétrograde dans une balise. Ainsi, si vous fournissez une image nommée image et qu’elle inclut actuellement la version 1.0, vous pouvez fournir une balise d’image:v1. Lorsque vous mettez à jour l’image, tant qu’elle continue d’être compatible avec l’image originale, vous pouvez continuer à marquer la nouvelle image:v1, et les consommateurs en aval de cette balise sont en mesure d’obtenir des mises à jour sans être cassés.

Lorsque vous publiez ultérieurement une mise à jour incompatible, puis passez à une nouvelle balise, par exemple image:v2. Cela permet aux consommateurs en aval de passer à la nouvelle version à volonté, mais ne sont pas brisés par inadvertance par la nouvelle image incompatible. Le consommateur en aval utilisant image:la plus longue prend le risque d’introduire des modifications incompatibles.

Évitez les processus multiples

Il ne faut pas démarrer plusieurs services, tels qu’une base de données et un SSHD, à l’intérieur d’un seul conteneur. Ce n’est pas nécessaire car les conteneurs sont légers et peuvent être facilement liés entre eux pour l’orchestration de multiples processus. Le service OpenShift Red Hat sur AWS vous permet de colocaliser et de co-gérer facilement les images associées en les regroupant en un seul pod.

Cette colocation assure que les conteneurs partagent un espace de noms réseau et un stockage pour la communication. Les mises à jour sont également moins perturbatrices car chaque image peut être mise à jour moins fréquemment et indépendamment. Les flux de gestion du signal sont également plus clairs avec un seul processus car vous n’avez pas à gérer les signaux de routage vers les processus engendrés.

Exec dans les scripts d’emballage

De nombreuses images utilisent des scripts d’emballage pour faire une certaine configuration avant de commencer un processus pour le logiciel en cours d’exécution. Lorsque votre image utilise un tel script, ce script utilise exec afin que le processus du script soit remplacé par votre logiciel. Lorsque vous n’utilisez pas exec, les signaux envoyés par votre conteneur vont dans votre script d’emballage au lieu du processus de votre logiciel. Ce n’est pas ce que vous voulez.

Lorsque vous avez un script d’emballage qui démarre un processus pour un serveur. Démarrez votre conteneur, par exemple, en utilisant podman run -i, qui exécute le script d’emballage, qui démarre à son tour votre processus. Lorsque vous souhaitez fermer votre conteneur avec CTRL+C. Lorsque votre script d’emballage utilisé exec pour démarrer le processus serveur, podman envoie SIGINT au processus serveur, et tout fonctionne comme vous l’attendez. Lorsque vous n’avez pas utilisé Exec dans votre script d’emballage, podman envoie SIGINT au processus pour le script d’emballage et votre processus continue de fonctionner comme si rien ne s’était passé.

Il est également à noter que votre processus s’exécute en tant que PID 1 lorsqu’il s’exécute dans un conteneur. Cela signifie que si votre processus principal se termine, l’ensemble du conteneur est arrêté, annulant tous les processus enfants que vous avez lancés à partir de votre processus PID 1.

Nettoyer les fichiers temporaires

Enlevez tous les fichiers temporaires que vous créez pendant le processus de construction. Cela inclut également tous les fichiers ajoutés avec la commande ADD. À titre d’exemple, exécutez la commande yum clean après avoir effectué des opérations d’installation yum.

Il est possible d’empêcher le cache yum de se retrouver dans une couche d’image en créant votre instruction RUN comme suit:

RUN yum -y install mypackage && yum -y install myotherpackage && yum clean all -y
Copy to Clipboard Toggle word wrap

A noter que si vous écrivez plutôt:

RUN yum -y install mypackage
RUN yum -y install myotherpackage && yum clean all -y
Copy to Clipboard Toggle word wrap

Ensuite, la première invocation yum laisse des fichiers supplémentaires dans cette couche, et ces fichiers ne peuvent pas être supprimés lorsque l’opération de nettoyage yum est exécutée plus tard. Les fichiers supplémentaires ne sont pas visibles dans l’image finale, mais ils sont présents dans les couches sous-jacentes.

Le processus de construction du conteneur actuel ne permet pas qu’une commande s’exécute dans une couche ultérieure pour réduire l’espace utilisé par l’image lorsque quelque chose a été supprimé dans une couche antérieure. Cependant, cela pourrait changer à l’avenir. Cela signifie que si vous exécutez une commande rm dans une couche ultérieure, bien que les fichiers soient cachés, cela ne réduit pas la taille globale de l’image à télécharger. Donc, comme avec l’exemple yum clean, il est préférable de supprimer des fichiers dans la même commande qui les a créés, lorsque cela est possible, afin qu’ils ne finissent pas par écrire sur un calque.

De plus, l’exécution de commandes multiples dans une seule instruction RUN réduit le nombre de couches de votre image, ce qui améliore le temps de téléchargement et d’extraction.

Placer les instructions dans l’ordre approprié

Le constructeur de conteneurs lit le Dockerfile et exécute les instructions de haut en bas. Chaque instruction exécutée avec succès crée un calque qui peut être réutilisé la prochaine fois que cette ou une autre image est construite. Il est très important de placer des instructions qui changent rarement en haut de votre Dockerfile. Cela garantit que les prochaines versions de la même image sont très rapides car le cache n’est pas invalidé par des changements de couche supérieure.

À titre d’exemple, si vous travaillez sur un Dockerfile contenant une commande ADD pour installer un fichier sur lequel vous itérez, et une commande RUN pour yum installer un paquet, il est préférable de mettre la commande ADD en dernier:

FROM foo
RUN yum -y install mypackage && yum clean all -y
ADD myfile /test/myfile
Copy to Clipboard Toggle word wrap

De cette façon, chaque fois que vous modifiez myfile et redémarrez podman build ou docker build, le système réutilise le calque mis en cache pour la commande yum et génère uniquement le nouveau calque pour l’opération ADD.

Au lieu de cela, vous avez écrit le Dockerfile comme suit:

FROM foo
ADD myfile /test/myfile
RUN yum -y install mypackage && yum clean all -y
Copy to Clipboard Toggle word wrap

Ensuite, chaque fois que vous avez changé myfile et reran podman build ou docker build, l’opération ADD invaliderait le cache de couche RUN, de sorte que l’opération yum doit également être redémarrée.

Marquer les ports importants

L’instruction EXPOSE met un port dans le conteneur à la disposition du système hôte et d’autres conteneurs. Bien qu’il soit possible de spécifier qu’un port doit être exposé avec une invocation podman run, l’utilisation de l’instruction EXPOSE dans un Dockerfile facilite l’utilisation de votre image pour les humains et les logiciels en déclarant explicitement les ports que votre logiciel doit exécuter:

  • Les ports exposés s’affichent sous podman ps associés aux conteneurs créés à partir de votre image.
  • Les ports exposés sont présents dans les métadonnées de votre image renvoyée par podman inspect.
  • Les ports exposés sont liés lorsque vous reliez un conteneur à un autre.
Définir les variables d’environnement

C’est une bonne pratique de définir des variables d’environnement avec l’instruction ENV. Il s’agit par exemple de définir la version de votre projet. Cela permet aux gens de trouver facilement la version sans regarder le Dockerfile. Autre exemple, la publicité d’un chemin sur le système qui pourrait être utilisé par un autre processus, tel que JAVA_HOME.

Évitez les mots de passe par défaut

Évitez de définir les mots de passe par défaut. Beaucoup de gens étendent l’image et oublient de supprimer ou de modifier le mot de passe par défaut. Cela peut entraîner des problèmes de sécurité si un utilisateur en production se voit attribuer un mot de passe bien connu. Les mots de passe sont paramétrables à l’aide d’une variable d’environnement à la place.

Lorsque vous choisissez de définir un mot de passe par défaut, assurez-vous qu’un message d’avertissement approprié est affiché lors du démarrage du conteneur. Le message doit informer l’utilisateur de la valeur du mot de passe par défaut et expliquer comment le modifier, comme quelle variable d’environnement à définir.

Évitez le sshd

Il est préférable d’éviter de courir sshd dans votre image. La commande podman exec ou docker exec permet d’accéder aux conteneurs qui s’exécutent sur l’hôte local. Alternativement, vous pouvez utiliser la commande oc exec ou la commande oc rsh pour accéder aux conteneurs qui s’exécutent sur le service OpenShift Red Hat sur le cluster AWS. L’installation et l’exécution de sshd dans votre image ouvrent des vecteurs supplémentaires pour les attaques et les exigences pour le correctif de sécurité.

Les volumes utilisés pour les données persistantes

Les images utilisent un volume pour les données persistantes. De cette façon, Red Hat OpenShift Service sur AWS monte le stockage réseau sur le nœud exécutant le conteneur, et si le conteneur se déplace vers un nouveau nœud, le stockage est réattaché à ce nœud. En utilisant le volume pour tous les besoins de stockage persistants, le contenu est conservé même si le conteneur est redémarré ou déplacé. Lorsque votre image écrit des données à des endroits arbitraires dans le conteneur, ce contenu n’a pas pu être préservé.

Les données qui doivent être conservées même après la destruction du conteneur doivent être écrites sur un volume. Les moteurs de conteneurs prennent en charge un drapeau en lecture seule pour les conteneurs, qui peut être utilisé pour appliquer strictement les bonnes pratiques en matière de ne pas écrire de données pour le stockage éphémère dans un conteneur. Concevoir votre image autour de cette capacité rend maintenant plus facile d’en profiter plus tard.

Définir explicitement les volumes dans votre Dockerfile permet aux consommateurs de l’image de comprendre facilement quels volumes ils doivent définir lors de l’exécution de votre image.

Consultez la documentation Kubernetes pour plus d’informations sur la façon dont les volumes sont utilisés dans Red Hat OpenShift Service sur AWS.

Note

En dépit des volumes persistants, chaque instance de votre image a son propre volume, et le système de fichiers n’est pas partagé entre instances. Cela signifie que le volume ne peut pas être utilisé pour partager l’état dans un cluster.

Les lignes directrices suivantes s’appliquent lors de la création d’images de conteneurs spécifiquement destinées à être utilisées sur Red Hat OpenShift Service sur AWS.

4.1.2.1. Activer les images pour la source à l’image (S2I)

Dans le cas des images destinées à exécuter le code d’application fourni par un tiers, comme une image Ruby conçue pour exécuter le code Ruby fourni par un développeur, vous pouvez activer votre image pour travailler avec l’outil de construction Source-à-Image (S2I). Le S2I est un framework qui facilite l’écriture d’images qui prennent le code source de l’application comme entrée et produisent une nouvelle image qui exécute l’application assemblée en sortie.

4.1.2.2. Assistance aux utilisateurs arbitraires

Par défaut, Red Hat OpenShift Service sur AWS exécute des conteneurs à l’aide d’un identifiant utilisateur attribué arbitrairement. Cela fournit une sécurité supplémentaire contre les processus qui s’échappent du conteneur en raison de la vulnérabilité d’un moteur de conteneur et par conséquent l’obtention d’autorisations supplémentaires sur le nœud hôte.

Afin qu’une image soit prise en charge en tant qu’utilisateur arbitraire, les répertoires et les fichiers qui sont écrits par des processus de l’image doivent être détenus par le groupe racine et être lus/en écriture par ce groupe. Les fichiers à exécuter doivent également avoir des autorisations d’exécution de groupe.

L’ajout de ce qui suit à votre Dockerfile définit le répertoire et les autorisations de fichiers pour permettre aux utilisateurs du groupe racine d’y accéder dans l’image construite:

RUN chgrp -R 0 /some/directory && \
    chmod -R g=u /some/directory
Copy to Clipboard Toggle word wrap

Étant donné que l’utilisateur du conteneur est toujours membre du groupe racine, l’utilisateur du conteneur peut lire et écrire ces fichiers.

Avertissement

Des précautions doivent être prises lors de la modification des répertoires et des autorisations de fichiers des zones sensibles d’un conteneur. En cas d’application sur des zones sensibles, telles que le fichier /etc/passwd, ces modifications peuvent permettre la modification de ces fichiers par des utilisateurs involontaires, exposant potentiellement le conteneur ou l’hôte. CRI-O prend en charge l’insertion d’identifiants d’utilisateur arbitraires dans le fichier /etc/passwd d’un conteneur. En tant que tel, changer les autorisations n’est jamais nécessaire.

De plus, le fichier /etc/passwd ne devrait pas exister dans aucune image de conteneur. Dans le cas contraire, l’exécution du conteneur CRI-O ne permettra pas d’injecter un UID aléatoire dans le fichier /etc/passwd. Dans de tels cas, le conteneur pourrait faire face à des difficultés pour résoudre l’UID actif. Le non-respect de cette exigence pourrait avoir une incidence sur la fonctionnalité de certaines applications conteneurisées.

En outre, les processus exécutés dans le conteneur ne doivent pas écouter sur des ports privilégiés, ports inférieurs à 1024, car ils ne fonctionnent pas en tant qu’utilisateur privilégié.

Dans les cas où votre image doit communiquer avec un service fourni par une autre image, comme une image frontale Web qui doit accéder à une image de base de données pour stocker et récupérer des données, votre image consomme un service Red Hat OpenShift sur AWS. Les services fournissent un point de terminaison statique pour l’accès qui ne change pas lorsque les conteneurs sont arrêtés, démarrés ou déplacés. En outre, les services fournissent un équilibrage de charge pour les demandes.

4.1.2.4. Fournir des bibliothèques communes

Dans le cas des images destinées à exécuter le code d’application fourni par un tiers, assurez-vous que votre image contient des bibliothèques couramment utilisées pour votre plate-forme. En particulier, fournissez des pilotes de base de données pour les bases de données communes utilisées avec votre plate-forme. À titre d’exemple, fournissez des pilotes JDBC pour MySQL et PostgreSQL si vous créez une image de framework Java. Cela empêche le téléchargement de dépendances courantes pendant le temps d’assemblage de l’application, accélérant la création d’images d’application. Il simplifie également le travail requis par les développeurs d’applications pour s’assurer que toutes leurs dépendances sont respectées.

4.1.2.5. Les variables d’environnement pour la configuration

Les utilisateurs de votre image sont en mesure de la configurer sans avoir à créer une image en aval en fonction de votre image. Cela signifie que la configuration d’exécution est gérée à l’aide de variables d’environnement. Dans une configuration simple, le processus d’exécution peut consommer les variables d’environnement directement. Dans le cas d’une configuration plus compliquée ou d’exécutions qui ne supportent pas cela, configurez l’exécution en définissant un fichier de configuration de modèle qui est traité au démarrage. Au cours de ce traitement, les valeurs fournies à l’aide de variables d’environnement peuvent être substituées dans le fichier de configuration ou utilisées pour prendre des décisions sur les options à définir dans le fichier de configuration.

Il est également possible et recommandé de transmettre des secrets tels que des certificats et des clés dans le conteneur en utilisant des variables d’environnement. Cela garantit que les valeurs secrètes ne finissent pas par être commises dans une image et divulguées dans un registre d’images conteneur.

Fournir des variables d’environnement permet aux consommateurs de votre image de personnaliser le comportement, tels que les paramètres de base de données, les mots de passe et le réglage des performances, sans avoir à introduire un nouveau calque au-dessus de votre image. Au lieu de cela, ils peuvent simplement définir des valeurs variables d’environnement lors de la définition d’un pod et modifier ces paramètres sans reconstruire l’image.

Dans le cas de scénarios extrêmement complexes, la configuration peut également être fournie en utilisant des volumes qui seraient montés dans le conteneur au moment de l’exécution. Cependant, si vous choisissez de le faire de cette façon, vous devez vous assurer que votre image fournit des messages d’erreur clairs au démarrage lorsque le volume ou la configuration nécessaire n’est pas présent.

Ce sujet est lié au sujet Utiliser les services pour la communication inter-images dans la mesure où la configuration comme les sources de données sont définies en termes de variables d’environnement qui fournissent des informations sur le point de terminaison du service. Cela permet à une application de consommer dynamiquement un service de datasource qui est défini dans le service Red Hat OpenShift sur l’environnement AWS sans modifier l’image de l’application.

En outre, le réglage se fait en inspectant les paramètres des groupes pour le conteneur. Cela permet à l’image de s’adapter à la mémoire, au CPU et à d’autres ressources disponibles. À titre d’exemple, les images basées sur Java règlent leur tas en fonction du paramètre de mémoire maximum de cgroup pour s’assurer qu’elles ne dépassent pas les limites et obtiennent une erreur hors mémoire.

4.1.2.6. Définir les métadonnées d’image

Définir les métadonnées d’image aide Red Hat OpenShift Service sur AWS à mieux consommer vos images conteneur, permettant à Red Hat OpenShift Service sur AWS de créer une meilleure expérience pour les développeurs utilisant votre image. À titre d’exemple, vous pouvez ajouter des métadonnées pour fournir des descriptions utiles de votre image ou proposer des suggestions sur d’autres images nécessaires.

4.1.2.7. Clustering

Il faut bien comprendre ce que signifie exécuter plusieurs instances de votre image. Dans le cas le plus simple, la fonction d’équilibrage de charge d’un service gère le routage du trafic vers toutes les instances de votre image. Cependant, de nombreux cadres doivent partager des informations pour effectuer l’élection des dirigeants ou l’état de basculement; par exemple, dans la réplication de session.

Considérez comment vos instances accomplissent cette communication lors de l’exécution dans Red Hat OpenShift Service sur AWS. Bien que les pods puissent communiquer directement les uns avec les autres, leurs adresses IP changent chaque fois que la gousse démarre, s’arrête ou est déplacée. Il est donc important que votre système de clustering soit dynamique.

4.1.2.8. L’exploitation forestière

Il est préférable d’envoyer toute la journalisation à la norme. Le service OpenShift Red Hat sur AWS recueille la norme à partir des conteneurs et l’envoie au service de journalisation centralisé où il peut être visualisé. Lorsque vous devez séparer le contenu du journal, préfixer la sortie avec un mot clé approprié, ce qui permet de filtrer les messages.

Lorsque votre image enregistre un fichier, les utilisateurs doivent utiliser des opérations manuelles pour entrer dans le conteneur en cours d’exécution et récupérer ou afficher le fichier journal.

4.1.2.9. Les sondes de vivacité et de préparation

Documentez des sondes de vivacité et de préparation qui peuvent être utilisées avec votre image. Ces sondes permettent aux utilisateurs de déployer votre image en toute confiance que le trafic n’est pas acheminé vers le conteneur jusqu’à ce qu’il soit prêt à la manipuler, et que le conteneur soit redémarré si le processus entre dans un état malsain.

4.1.2.10. Les modèles

Envisagez de fournir un modèle d’exemple avec votre image. Le modèle offre aux utilisateurs un moyen facile de déployer rapidement votre image avec une configuration de travail. Le modèle doit inclure les sondes de vivacité et de préparation que vous avez documentées avec l’image, pour l’exhaustivité.

4.2. Inclure les métadonnées dans les images

Définir les métadonnées d’image aide Red Hat OpenShift Service sur AWS à mieux consommer vos images conteneur, permettant à Red Hat OpenShift Service sur AWS de créer une meilleure expérience pour les développeurs utilisant votre image. À titre d’exemple, vous pouvez ajouter des métadonnées pour fournir des descriptions utiles de votre image ou proposer des suggestions sur d’autres images qui peuvent également être nécessaires.

Ce sujet définit uniquement les métadonnées nécessaires à l’ensemble actuel des cas d’utilisation. D’autres métadonnées ou cas d’utilisation peuvent être ajoutés à l’avenir.

4.2.1. Définition des métadonnées d’image

Dans un Dockerfile, vous pouvez utiliser l’instruction LABEL pour définir les métadonnées d’image. Les étiquettes sont similaires aux variables d’environnement en ce qu’elles sont des paires de valeurs clés attachées à une image ou à un conteneur. Les étiquettes sont différentes de la variable d’environnement en ce sens qu’elles ne sont pas visibles pour l’application en cours d’exécution et qu’elles peuvent également être utilisées pour une recherche rapide des images et des conteneurs.

Documentation Docker pour plus d’informations sur l’instruction LABEL.

Les noms d’étiquettes sont généralement espacés. L’espace de noms est défini en conséquence pour refléter le projet qui va récupérer les étiquettes et les utiliser. Dans le cas de Red Hat OpenShift Service sur AWS, l’espace de noms est défini sur io.openshift et pour Kubernetes, l’espace de noms est io.k8s.

Consultez la documentation des métadonnées personnalisées Docker pour plus de détails sur le format.

Expand
Tableau 4.1. Les métadonnées prises en charge
La variableDescription

IO.openshift.tags

Cette étiquette contient une liste de balises représentées comme une liste de valeurs de chaîne séparées par des virgules. Les balises sont le moyen de catégoriser les images du conteneur dans de larges zones de fonctionnalité. Les balises aident l’interface utilisateur et les outils de génération à suggérer des images de conteneur pertinentes pendant le processus de création d’applications.

LABEL io.openshift.tags   mongodb,mongodb24,nosql
Copy to Clipboard Toggle word wrap

IO.openshift.wants

Indique une liste de balises que les outils de génération et l’interface utilisateur utilisent pour fournir des suggestions pertinentes si vous n’avez pas déjà les images de conteneur avec des balises spécifiées. Ainsi, si l’image du conteneur veut mysql et redis et que vous n’avez pas l’image du conteneur avec la balise redis, alors UI peut vous suggérer d’ajouter cette image dans votre déploiement.

LABEL io.openshift.wants   mongodb,redis
Copy to Clipboard Toggle word wrap

IO.k8s.description

Cette étiquette peut être utilisée pour donner aux consommateurs d’images de conteneur des informations plus détaillées sur le service ou la fonctionnalité que cette image fournit. L’interface utilisateur peut ensuite utiliser cette description avec le nom de l’image du conteneur pour fournir des informations plus conviviales aux utilisateurs finaux.

LABEL io.k8s.description The MySQL 5.5 Server with master-slave replication support
Copy to Clipboard Toggle word wrap

IO.openshift.non-scalable

L’image peut utiliser cette variable pour suggérer qu’elle ne prend pas en charge la mise à l’échelle. L’UI communique ensuite cela aux consommateurs de cette image. Être non évolutif signifie que la valeur des répliques ne doit pas initialement être définie plus haut que 1.

LABEL io.openshift.non-scalable     true
Copy to Clipboard Toggle word wrap

IO.openshift.min-memory et io.openshift.min-cpu

Cette étiquette suggère combien de ressources l’image du conteneur a besoin pour fonctionner correctement. L’interface utilisateur peut avertir l’utilisateur que le déploiement de cette image conteneur peut dépasser son quota d’utilisateur. Les valeurs doivent être compatibles avec la quantité de Kubernetes.

LABEL io.openshift.min-memory 16Gi
LABEL io.openshift.min-cpu     4
Copy to Clipboard Toggle word wrap

La source à image (S2I) est un framework qui facilite l’écriture d’images qui prennent le code source de l’application comme entrée et produisent une nouvelle image qui exécute l’application assemblée en sortie.

Le principal avantage de l’utilisation de S2I pour construire des images de conteneurs reproductibles est la facilité d’utilisation pour les développeurs. En tant qu’auteur d’images de constructeur, vous devez comprendre deux concepts de base afin que vos images fournissent les meilleures performances S2I, le processus de construction et les scripts S2I.

4.3.1. Comprendre le processus de création de source à image

Le processus de construction se compose des trois éléments fondamentaux suivants, qui sont combinés dans une image finale du conteneur:

  • Les sources
  • Scripts source à image (S2I)
  • Image du constructeur

Le S2I génère un Dockerfile avec l’image du constructeur comme première instruction FROM. Le Dockerfile généré par S2I est ensuite transmis à Buildah.

4.3.2. Comment écrire des scripts source à image

Il est possible d’écrire des scripts source à image (S2I) dans n’importe quel langage de programmation, tant que les scripts sont exécutables à l’intérieur de l’image du constructeur. Le S2I prend en charge plusieurs options fournissant des scripts assemble/run/save-artefacts. L’ensemble de ces emplacements sont vérifiés sur chaque construction dans l’ordre suivant:

  1. Le script spécifié dans la configuration de build.
  2. Le script trouvé dans le répertoire source de l’application .s2i/bin.
  3. Script trouvé à l’URL de l’image par défaut avec l’étiquette io.openshift.s2i.scripts-url.

L’étiquette io.openshift.s2i.scripts-url spécifiée dans l’image et le script spécifié dans une configuration de build peuvent prendre l’une des formes suivantes:

  • image:///path_to_scripts_dir: chemin absolu à l’intérieur de l’image vers un répertoire où se trouvent les scripts S2I.
  • file:///path_to_scripts_dir: chemin relatif ou absolu vers un répertoire sur l’hôte où se trouvent les scripts S2I.
  • HTTP(s)://path_to_scripts_dir: URL vers un répertoire où se trouvent les scripts S2I.
Expand
Tableau 4.2. Scripts S2I
Le scriptDescription

assembler

Le script assemble les artefacts de l’application à partir d’une source et les place dans des répertoires appropriés à l’intérieur de l’image. Ce script est requis. Le flux de travail de ce script est:

  1. Facultatif: Restaurer des artefacts de construction. Lorsque vous souhaitez prendre en charge les constructions incrémentielles, assurez-vous de définir également des objets de sauvegarde.
  2. Placez la source de l’application à l’emplacement souhaité.
  3. Construisez les artefacts de l’application.
  4. Installez les artefacts dans des endroits appropriés pour qu’ils puissent fonctionner.

courir

Le script d’exécution exécute votre application. Ce script est requis.

des objets de sauvegarde

Le script sauvegarde-artefacts rassemble toutes les dépendances qui peuvent accélérer les processus de construction qui suivent. Ce script est facultatif. À titre d’exemple:

  • Avec Ruby, gemmes installées par Bundler.
  • Le contenu de Java, .m2.

Ces dépendances sont rassemblées dans un fichier goudron et diffusées vers la sortie standard.

l’utilisation

Le script d’utilisation vous permet d’informer l’utilisateur comment utiliser correctement votre image. Ce script est facultatif.

essai / course

Le script test/exécution vous permet de créer un processus pour vérifier si l’image fonctionne correctement. Ce script est facultatif. Le déroulement proposé de ce processus est:

  1. Construisez l’image.
  2. Exécutez l’image pour vérifier le script d’utilisation.
  3. Exécutez s2i build pour vérifier le script assembler.
  4. Facultatif: Exécuter s2i à nouveau pour vérifier les sauvegardes-artefacts et assembler les scripts sauvegarder et restaurer la fonctionnalité des artefacts.
  5. Exécutez l’image pour vérifier que l’application de test fonctionne.
Note

L’emplacement suggéré pour mettre l’application de test construite par votre script test/exécution est le répertoire test/test-app dans votre référentiel d’images.

Exemples de scripts S2I

Les exemples de scripts S2I suivants sont écrits en Bash. Chaque exemple suppose que son contenu de goudron est déballé dans le répertoire /tmp/s2i.

assembler le script:

#!/bin/bash

# restore build artifacts
if [ "$(ls /tmp/s2i/artifacts/ 2>/dev/null)" ]; then
    mv /tmp/s2i/artifacts/* $HOME/.
fi

# move the application source
mv /tmp/s2i/src $HOME/src

# build application artifacts
pushd ${HOME}
make all

# install the artifacts
make install
popd
Copy to Clipboard Toggle word wrap

exécutez le script:

#!/bin/bash

# run the application
/opt/application/run.sh
Copy to Clipboard Toggle word wrap

script de sauvegarde-artefacts:

#!/bin/bash

pushd ${HOME}
if [ -d deps ]; then
    # all deps contents to tar stream
    tar cf - deps
fi
popd
Copy to Clipboard Toggle word wrap

script d’utilisation:

#!/bin/bash

# inform the user how to use the image
cat <<EOF
This is a S2I sample builder image, to use it, install
https://github.com/openshift/source-to-image
EOF
Copy to Clipboard Toggle word wrap

4.4. À propos de tester des images source-à-image

En tant qu’auteur d’image de constructeur de source à image (S2I), vous pouvez tester votre image S2I localement et utiliser le service Red Hat OpenShift sur le système de construction AWS pour des tests automatisés et une intégration continue.

Le S2I nécessite que les scripts d’assemblage et d’exécution soient présents pour exécuter avec succès la construction S2I. Fournir le script de sauvegarde-artefacts réutilise les artefacts de construction, et fournir le script d’utilisation garantit que les informations d’utilisation sont imprimées sur console lorsque quelqu’un exécute l’image du conteneur en dehors du S2I.

Le but de tester une image S2I est de s’assurer que toutes ces commandes décrites fonctionnent correctement, même si l’image du conteneur de base a changé ou si l’outil utilisé par les commandes a été mis à jour.

4.4.1. Comprendre les exigences en matière de tests

L’emplacement standard du script de test est test/run. Ce script est invoqué par le Red Hat OpenShift Service sur le constructeur d’images AWS S2I et il pourrait s’agir d’un simple script Bash ou d’un binaire Go statique.

Le script test/exécution effectue la construction S2I, vous devez donc avoir le binaire S2I disponible dans votre $PATH. Au besoin, suivez les instructions d’installation dans le README S2I.

Le S2I combine le code source de l’application et l’image du constructeur, de sorte que pour le tester, vous avez besoin d’un exemple de source d’application pour vérifier que la source se transforme avec succès en une image de conteneur exécutable. L’exemple d’application devrait être simple, mais il devrait exercer les étapes cruciales de l’assemblage et de l’exécution des scripts.

4.4.2. Générer des scripts et des outils

L’outillage S2I est livré avec des outils de génération puissants pour accélérer le processus de création d’une nouvelle image S2I. La commande s2i create produit tous les scripts S2I nécessaires et les outils de test avec le Makefile:

$ s2i create <image_name> <destination_directory>
Copy to Clipboard Toggle word wrap

Le script de test/exécution généré doit être ajusté pour être utile, mais il fournit un bon point de départ pour commencer à développer.

Note

Le script test/exécution produit par la commande de création s2i exige que les sources d’application de l’échantillon se trouvent dans le répertoire test/test-app.

4.4.3. Essais locaux

Le moyen le plus simple d’exécuter les tests d’image S2I localement est d’utiliser le Makefile généré.

Lorsque vous n’avez pas utilisé la commande création s2i, vous pouvez copier le modèle Makefile suivant et remplacer le paramètre IMAGE_NAME par le nom de votre image.

Échantillon Makefile

IMAGE_NAME = openshift/ruby-20-centos7
CONTAINER_ENGINE := $(shell command -v podman 2> /dev/null | echo docker)

build:
	${CONTAINER_ENGINE} build -t $(IMAGE_NAME) .

.PHONY: test
test:
	${CONTAINER_ENGINE} build -t $(IMAGE_NAME)-candidate .
	IMAGE_NAME=$(IMAGE_NAME)-candidate test/run
Copy to Clipboard Toggle word wrap

4.4.4. Flux de travail de test de base

Le script de test suppose que vous avez déjà construit l’image que vous souhaitez tester. Au besoin, construisez d’abord l’image S2I. Exécutez l’une des commandes suivantes:

  • Lorsque vous utilisez Podman, exécutez la commande suivante:

    $ podman build -t <builder_image_name>
    Copy to Clipboard Toggle word wrap
  • Lorsque vous utilisez Docker, exécutez la commande suivante:

    $ docker build -t <builder_image_name>
    Copy to Clipboard Toggle word wrap

Les étapes suivantes décrivent le flux de travail par défaut pour tester les constructeurs d’images S2I:

  1. Assurez-vous que le script d’utilisation fonctionne:

    • Lorsque vous utilisez Podman, exécutez la commande suivante:

      $ podman run <builder_image_name> .
      Copy to Clipboard Toggle word wrap
    • Lorsque vous utilisez Docker, exécutez la commande suivante:

      $ docker run <builder_image_name> .
      Copy to Clipboard Toggle word wrap
  2. Construire l’image:

    $ s2i build file:///path-to-sample-app _<BUILDER_IMAGE_NAME>_ _<OUTPUT_APPLICATION_IMAGE_NAME>_
    Copy to Clipboard Toggle word wrap
  3. Facultatif: si vous prenez en charge les artefacts de sauvegarde, exécutez l’étape 2 une fois de plus pour vérifier que l’enregistrement et la restauration des artefacts fonctionne correctement.
  4. Exécutez le conteneur:

    • Lorsque vous utilisez Podman, exécutez la commande suivante:

      $ podman run <output_application_image_name>
      Copy to Clipboard Toggle word wrap
    • Lorsque vous utilisez Docker, exécutez la commande suivante:

      $ docker run <output_application_image_name>
      Copy to Clipboard Toggle word wrap
  5. Assurez-vous que le conteneur est en cours d’exécution et l’application répond.

L’exécution de ces étapes est généralement suffisante pour dire si l’image du constructeur fonctionne comme prévu.

Lorsque vous avez un Dockerfile et les autres artefacts qui composent votre nouvelle image de constructeur S2I, vous pouvez les mettre dans un référentiel git et utiliser Red Hat OpenShift Service sur AWS pour construire et pousser l’image. Définissez une construction Docker qui pointe vers votre référentiel.

Lorsque votre instance Red Hat OpenShift sur AWS est hébergée sur une adresse IP publique, la construction peut être déclenchée chaque fois que vous appuyez dans votre référentiel GitHub image du constructeur S2I.

Il est également possible d’utiliser ImageChangeTrigger pour déclencher une reconstruction de vos applications basées sur l’image du constructeur S2I que vous avez mise à jour.

Chapitre 5. Gérer les images

5.1. Gestion de la vue d’ensemble des images

Avec Red Hat OpenShift Service sur AWS, vous pouvez interagir avec les images et configurer des flux d’images, en fonction de l’endroit où se trouvent les registres des images, des exigences d’authentification autour de ces registres et de la façon dont vous voulez que vos constructions et déploiements se comportent.

5.1.1. Aperçu des images

Le flux d’images comprend n’importe quel nombre d’images de conteneur identifiées par des balises. Il présente une seule vue virtuelle d’images connexes, similaire à un référentiel d’image conteneur.

En regardant un flux d’images, les builds et les déploiements peuvent recevoir des notifications lorsque de nouvelles images sont ajoutées ou modifiées et réagissent en effectuant une compilation ou un déploiement, respectivement.

5.2. Marquage des images

Les sections suivantes fournissent un aperçu et des instructions pour utiliser les balises d’image dans le contexte des images conteneur pour travailler avec Red Hat OpenShift Service sur les flux d’images AWS et leurs balises.

5.2.1. Balises d’image

La balise image est une étiquette appliquée à une image conteneur dans un référentiel qui distingue une image spécifique des autres images d’un flux d’images. Généralement, le tag représente un numéro de version d’une sorte. Ici :v3.11.59-2 est le tag:

registry.access.redhat.com/openshift3/jenkins-2-rhel7:v3.11.59-2
Copy to Clipboard Toggle word wrap

Il est possible d’ajouter des balises supplémentaires à une image. À titre d’exemple, une image peut se voir attribuer les balises :v3.11.59-2 et :dernières.

Le service OpenShift Red Hat sur AWS fournit la commande oc tag, qui est similaire à la commande docker tag, mais fonctionne sur les flux d’images au lieu de directement sur les images.

5.2.2. Conventions de balises d’image

Les images évoluent au fil du temps et leurs balises le reflètent. Généralement, une balise d’image pointe toujours vers la dernière image construite.

Lorsqu’il y a trop d’informations intégrées dans un nom de balise, comme v2.0.1-may-2019, le tag pointe vers une seule révision d’une image et n’est jamais mis à jour. En utilisant les options d’élagage par défaut, une telle image n’est jamais supprimée.

Lorsque la balise est nommée v2.0, les révisions d’image sont plus probables. Cela se traduit par une histoire plus longue des balises et, par conséquent, l’élageur d’image est plus susceptible de supprimer des images anciennes et inutilisées.

Bien que la convention de dénomination des balises dépend de vous, voici quelques exemples dans le format &lt;image_name&gt;:&lt;image_tag&gt;:

Expand
Tableau 5.1. Conventions de dénomination des balises d’image
DescriptionExemple :

La révision

Informations sur MyImage:v2.0.1

Architecture

Informations sur MyImage:v2.0-x86_64

Image de base

Informations sur MyImage:v1.2-centos7

Dernier (potentiellement instable)

Le plus récent myImage

Dernière écurie

Informations sur MyImage:stable

Lorsque vous avez besoin de dates dans les noms de balises, inspectez périodiquement les images anciennes et non prises en charge et les supprimez. Dans le cas contraire, vous pouvez faire l’expérience d’une utilisation croissante des ressources causée par la conservation d’anciennes images.

5.2.3. Ajout de tags aux flux d’images

Le flux d’images dans Red Hat OpenShift Service sur AWS comprend zéro ou plus d’images de conteneur identifiées par des balises.

Il existe différents types de balises disponibles. Le comportement par défaut utilise une balise permanente, qui pointe vers une image spécifique dans le temps. Lorsque la balise permanente est en cours d’utilisation et que la source change, la balise ne change pas pour la destination.

La balise de suivi signifie que les métadonnées de la balise de destination sont mises à jour lors de l’importation de la balise source.

Procédure

  • Ajoutez des tags à un flux d’images à l’aide de la commande oc tag:

    $ oc tag <source> <destination>
    Copy to Clipboard Toggle word wrap

    À titre d’exemple, pour configurer la balise de flux d’image ruby statique-2.0 pour toujours se référer à l’image actuelle pour la balise ruby image stream 2.0:

    $ oc tag ruby:2.0 ruby:static-2.0
    Copy to Clipboard Toggle word wrap

    Cela crée une nouvelle balise de flux d’image nommée statique-2.0 dans le flux d’image rubis. La nouvelle balise renvoie directement à l’id de l’image que la balise de flux d’image ruby:2.0 pointée à l’heure où la balise oc a été exécutée, et l’image qu’il pointe pour ne jamais changer.

  • Afin de s’assurer que la balise de destination est mise à jour lorsque la balise source change, utilisez l’indicateur --alias=true:

    $ oc tag --alias=true <source> <destination>
    Copy to Clipboard Toggle word wrap
Note

Utilisez une balise de suivi pour créer des alias permanents, par exemple les derniers ou stables. La balise ne fonctionne correctement qu’à l’intérieur d’un seul flux d’image. Essayer de créer un alias de flux d’image croisée produit une erreur.

  • Il est également possible d’ajouter le drapeau --scheduled=true pour que la balise de destination soit rafraîchie ou réimportée périodiquement. La période est configurée globalement au niveau du système.
  • L’indicateur --reference crée une balise de flux d’images qui n’est pas importée. Le tag pointe vers l’emplacement source, de façon permanente.

    Dans le cas où vous souhaitez demander à Red Hat OpenShift Service sur AWS de toujours récupérer l’image marquée dans le registre intégré, utilisez --reference-policy=local. Le registre utilise la fonction pull-through pour servir l’image au client. Les blobs d’image sont par défaut reflétés localement par le registre. En conséquence, ils peuvent être tirés plus rapidement la prochaine fois qu’ils seront nécessaires. Le drapeau permet également de tirer des registres non sécurisés sans avoir besoin de fournir un enregistrement non sécurisé au temps d’exécution du conteneur tant que le flux d’images a une annotation non sécurisée ou que l’étiquette a une politique d’importation non sécurisée.

5.2.4. La suppression des balises des flux d’images

Il est possible de supprimer les balises d’un flux d’images.

Procédure

  • Afin de supprimer complètement une balise à partir d’un flux d’images run:

    $ oc delete istag/ruby:latest
    Copy to Clipboard Toggle word wrap

    a) ou:

    $ oc tag -d ruby:latest
    Copy to Clipboard Toggle word wrap

5.2.5. Faire référence aux images dans les flux d’images

Il est possible d’utiliser des balises pour référencer des images dans les flux d’images à l’aide des types de référence suivants.

Expand
Tableau 5.2. Les types de référence ImageStream
Le type de référenceDescription

ImageStreamTag

ImageStreamTag est utilisé pour référencer ou récupérer une image pour un flux et une balise d’image donnés.

ImageStreamImage

ImageStreamImage est utilisé pour référencer ou récupérer une image pour un flux d’image donné et un ID d’image sha.

DockerImage

DockerImage est utilisé pour référencer ou récupérer une image pour un registre externe donné. Il utilise la spécification standard de traction Docker pour son nom.

Lorsque vous affichez des définitions de flux d’images d’exemples, vous pouvez remarquer qu’elles contiennent des définitions de ImageStreamTag et des références à DockerImage, mais rien n’a trait à ImageStreamImage.

C’est parce que les objets ImageStreamImage sont automatiquement créés dans Red Hat OpenShift Service sur AWS lorsque vous importez ou marquez une image dans le flux d’images. Il ne faut jamais avoir à définir explicitement un objet ImageStreamImage dans une définition de flux d’images que vous utilisez pour créer des flux d’images.

Procédure

  • Afin de référencer une image pour un flux et une balise d’image donnés, utilisez ImageStreamTag:

    <image_stream_name>:<tag>
    Copy to Clipboard Toggle word wrap
  • Afin de faire référence à une image pour un flux d’images donné et une image sha ID, utilisez ImageStreamImage:

    <image_stream_name>@<id>
    Copy to Clipboard Toggle word wrap

    Le &lt;id&gt; est un identifiant immuable pour une image spécifique, également appelé digeste.

  • Afin de référencer ou de récupérer une image pour un registre externe donné, utilisez DockerImage:

    openshift/ruby-20-centos7:2.0
    Copy to Clipboard Toggle word wrap
    Note

    Lorsqu’aucune balise n’est spécifiée, on suppose que la dernière balise est utilisée.

    Il est également possible de faire référence à un registre tiers:

    registry.redhat.io/rhel7:latest
    Copy to Clipboard Toggle word wrap

    D’une image avec un digest:

    centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e
    Copy to Clipboard Toggle word wrap

5.3. Image pull politique

Chaque conteneur dans une gousse a une image de conteneur. Après avoir créé une image et l’avoir poussée vers un registre, vous pouvez alors y faire référence dans le pod.

5.3.1. Aperçu de la politique de tirage d’image

Lorsque Red Hat OpenShift Service sur AWS crée des conteneurs, il utilise l’image du conteneurPullPolicy pour déterminer si l’image doit être tirée avant de démarrer le conteneur. Il existe trois valeurs possibles pour imagePullPolicy:

Expand
Tableau 5.3. imagePullPolicy Valeurs
La valeurDescription

♪ toujours ♪

Tirez toujours l’image.

If NotPresent

Il suffit de tirer l’image si elle n’existe pas déjà sur le nœud.

Jamais jamais

Il ne faut jamais tirer l’image.

Lorsqu’un paramètre de conteneur imagePullPolicy n’est pas spécifié, Red Hat OpenShift Service sur AWS le définit en fonction de la balise image:

  1. Dans le cas où la balise est la dernière, Red Hat OpenShift Service sur AWS imagePullPolicy par défaut.
  2. Dans le cas contraire, Red Hat OpenShift Service sur AWS par défaut imagePullPolicy à IfNotPresent.

5.4. En utilisant des secrets de tirage d’image

Lorsque vous utilisez le registre d’images OpenShift et que vous tirez des flux d’images situés dans le même projet, alors votre compte de service pod devrait déjà avoir les autorisations correctes et aucune action supplémentaire ne devrait être requise.

Cependant, pour d’autres scénarios, tels que le référencement d’images à travers Red Hat OpenShift Service sur des projets AWS ou à partir de registres sécurisés, des étapes de configuration supplémentaires sont nécessaires.

Il est possible d’obtenir le secret de l’image de Red Hat OpenShift Cluster Manager. Ce secret de traction s’appelle pullSecret.

Ce pull secret vous permet d’authentifier avec les services fournis par les autorités incluses, Quay.io et Registry.redhat.io, qui servent les images de conteneur pour Red Hat OpenShift Service sur les composants AWS.

Lors de l’utilisation du registre d’images OpenShift, pour permettre aux pods dans le projet-a de référencer des images dans le projet-b, un compte de service dans le projet-a doit être lié au rôle système: image-puller dans le projet-b.

Note

Lorsque vous créez un compte de service pod ou un espace de noms, attendez que le compte de service soit fourni avec un secret de traction docker; si vous créez un pod avant que son compte de service ne soit entièrement fourni, le pod ne parvient pas à accéder au registre d’images OpenShift.

Procédure

  1. Afin de permettre aux pods de projet-a de référencer des images dans le projet-b, lier un compte de service dans le projet-a au système: image-puller role in project-b:

    $ oc policy add-role-to-user \
        system:image-puller system:serviceaccount:project-a:default \
        --namespace=project-b
    Copy to Clipboard Toggle word wrap

    Après avoir ajouté ce rôle, les pods dans le projet - une référence au compte de service par défaut sont capables de tirer des images du projet-b.

  2. Afin de permettre l’accès à n’importe quel compte de service dans le projet-a, utilisez le groupe:

    $ oc policy add-role-to-group \
        system:image-puller system:serviceaccounts:project-a \
        --namespace=project-b
    Copy to Clipboard Toggle word wrap

Afin de tirer un conteneur sécurisé à partir d’autres registres privés ou sécurisés, vous devez créer un secret de traction à partir des informations d’identification client de votre conteneur, tels que Docker ou Podman, et l’ajouter à votre compte de service.

Docker et Podman utilisent un fichier de configuration pour stocker les détails d’authentification pour se connecter à un registre sécurisé ou non sécurisé:

  • Docker: Par défaut, Docker utilise $HOME/.docker/config.json.
  • Le Podman: Par défaut, Podman utilise $HOME/.config/containers/auth.json.

Ces fichiers stockent vos informations d’authentification si vous vous êtes déjà connecté à un registre sécurisé ou non sécurisé.

Note

Les fichiers d’identification Docker et Podman ainsi que le secret d’attraction associé peuvent contenir plusieurs références au même registre s’ils ont des chemins uniques, par exemple quay.io et quay.<example_repository> io/. Cependant, ni Docker ni Podman ne prennent en charge plusieurs entrées pour le même chemin de registre.

Exemple de fichier config.json

{
   "auths":{
      "cloud.openshift.com":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io/repository-main":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      }
   }
}
Copy to Clipboard Toggle word wrap

Exemple tirer secret

apiVersion: v1
data:
  .dockerconfigjson: ewogICAiYXV0aHMiOnsKICAgICAgIm0iOnsKICAgICAgIsKICAgICAgICAgImF1dGgiOiJiM0JsYj0iLAogICAgICAgICAiZW1haWwiOiJ5b3VAZXhhbXBsZS5jb20iCiAgICAgIH0KICAgfQp9Cg==
kind: Secret
metadata:
  creationTimestamp: "2021-09-09T19:10:11Z"
  name: pull-secret
  namespace: default
  resourceVersion: "37676"
  uid: e2851531-01bc-48ba-878c-de96cfe31020
type: Opaque
Copy to Clipboard Toggle word wrap

5.4.2.1. Créer un secret d’attraction

Procédure

  • Créer un secret à partir d’un fichier d’authentification existant:

    • Dans le cas des clients Docker utilisant .docker/config.json, entrez la commande suivante:

      $ oc create secret generic <pull_secret_name> \
          --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
          --type=kubernetes.io/dockerconfigjson
      Copy to Clipboard Toggle word wrap
    • Dans le cas des clients Podman utilisant .config/containers/auth.json, entrez la commande suivante:

      $ oc create secret generic <pull_secret_name> \
           --from-file=<path/to/.config/containers/auth.json> \
           --type=kubernetes.io/podmanconfigjson
      Copy to Clipboard Toggle word wrap
  • Lorsque vous n’avez pas déjà un fichier d’identification Docker pour le registre sécurisé, vous pouvez créer un secret en exécutant la commande suivante:

    $ oc create secret docker-registry <pull_secret_name> \
        --docker-server=<registry_server> \
        --docker-username=<user_name> \
        --docker-password=<password> \
        --docker-email=<email>
    Copy to Clipboard Toggle word wrap

Il est possible d’utiliser un pull secret pour permettre aux charges de travail de tirer des images d’un registre privé avec l’une des méthodes suivantes:

  • En liant le secret à un compte ServiceAccount, qui applique automatiquement le secret à tous les pods utilisant ce compte de service.
  • En définissant imagePullSecrets directement dans les configurations de charge de travail, ce qui est utile pour des environnements comme GitOps ou ArgoCD.

Procédure

  • Il est possible d’utiliser un secret pour tirer des images pour les pods en ajoutant le secret à votre compte de service. Il est à noter que le nom du compte de service doit correspondre au nom du compte de service utilisé par Pod. Le compte de service par défaut est par défaut.

    • Entrez la commande suivante pour lier le pull secret à un compte ServiceAccount:

      $ oc secrets link default <pull_secret_name> --for=pull
      Copy to Clipboard Toggle word wrap
    • Afin de vérifier le changement, entrez la commande suivante:

      $ oc get serviceaccount default -o yaml
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      apiVersion: v1
      imagePullSecrets:
      - name: default-dockercfg-123456
      - name: <pull_secret_name>
      kind: ServiceAccount
      metadata:
        annotations:
          openshift.io/internal-registry-pull-secret-ref: <internal_registry_pull_secret>
        creationTimestamp: "2025-03-03T20:07:52Z"
        name: default
        namespace: default
        resourceVersion: "13914"
        uid: 9f62dd88-110d-4879-9e27-1ffe269poe3
      secrets:
      - name: <pull_secret_name>
      Copy to Clipboard Toggle word wrap

  • Au lieu de lier le secret à un compte de service, vous pouvez alternativement le référencer directement dans votre pod ou la définition de votre charge de travail. Ceci est utile pour les flux de travail GitOps tels que ArgoCD. À titre d’exemple:

    Exemple de spécification de pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: <secure_pod_name>
    spec:
      containers:
      - name: <container_name>
        image: quay.io/my-private-image
      imagePullSecrets:
      - name: <pull_secret_name>
    Copy to Clipboard Toggle word wrap

    Exemple de flux de travail ArgoCD

    apiVersion: argoproj.io/v1alpha1
    kind: Workflow
    metadata:
      generateName: <example_workflow>
    spec:
      entrypoint: <main_task>
      imagePullSecrets:
      - name: <pull_secret_name>
    Copy to Clipboard Toggle word wrap

Le registre privé peut déléguer l’authentification à un service distinct. Dans ces cas, les secrets de tirage d’image doivent être définis pour les points de terminaison d’authentification et de registre.

Procédure

  1. Créer un secret pour le serveur d’authentification délégué:

    $ oc create secret docker-registry \
        --docker-server=sso.redhat.com \
        --docker-username=developer@example.com \
        --docker-password=******** \
        --docker-email=unused \
        redhat-connect-sso
    
    secret/redhat-connect-sso
    Copy to Clipboard Toggle word wrap
  2. Créer un secret pour le registre privé:

    $ oc create secret docker-registry \
        --docker-server=privateregistry.example.com \
        --docker-username=developer@example.com \
        --docker-password=******** \
        --docker-email=unused \
        private-registry
    
    secret/private-registry
    Copy to Clipboard Toggle word wrap

Chapitre 6. Gestion des flux d’images

Les flux d’images fournissent un moyen de créer et de mettre à jour des images conteneur de manière continue. Au fur et à mesure que des améliorations sont apportées à une image, les balises peuvent être utilisées pour attribuer de nouveaux numéros de version et garder une trace des changements. Ce document décrit comment les flux d’images sont gérés.

6.1. Comment utiliser des flux d’images

Le flux d’images et les balises associées fournissent une abstraction pour référencer les images de conteneurs à partir de Red Hat OpenShift Service sur AWS. Le flux d’images et ses balises vous permettent de voir quelles images sont disponibles et de vous assurer que vous utilisez l’image spécifique dont vous avez besoin même si l’image dans le référentiel change.

Les flux d’images ne contiennent pas de données d’image réelles, mais présentent une seule vue virtuelle d’images connexes, similaire à un référentiel d’images.

Lorsque de nouvelles images sont ajoutées et réagissent en effectuant une compilation ou un déploiement, vous pouvez configurer des builds et des déploiements pour regarder un flux d’images pour les notifications.

Ainsi, si un déploiement utilise une certaine image et qu’une nouvelle version de cette image est créée, un déploiement peut être automatiquement effectué pour récupérer la nouvelle version de l’image.

Cependant, si la balise de flux d’images utilisée par le déploiement ou la construction n’est pas mise à jour, alors même si l’image du conteneur dans le registre d’image du conteneur est mise à jour, la construction ou le déploiement continue en utilisant l’image précédente, probablement connue.

Les images source peuvent être stockées dans l’un des éléments suivants:

  • Le service Red Hat OpenShift sur le registre intégré d’AWS.
  • D’un registre externe, par exemple Registry.redhat.io ou quay.io.
  • D’autres flux d’images dans le Red Hat OpenShift Service sur AWS cluster.

Lorsque vous définissez un objet qui fait référence à une balise de flux d’images, comme une configuration de construction ou de déploiement, vous pointez vers une balise de flux d’images et non vers le référentiel. Lorsque vous construisez ou déployez votre application, Red Hat OpenShift Service sur AWS interroge le référentiel à l’aide de la balise de flux d’images pour localiser l’ID associé de l’image et utilise cette image exacte.

Les métadonnées du flux d’images sont stockées dans l’instance etcd avec d’autres informations de cluster.

L’utilisation de flux d’images présente plusieurs avantages importants:

  • Il est possible d’étiqueter, de faire reculer une balise et de traiter rapidement les images, sans avoir à re-push en utilisant la ligne de commande.
  • Il est possible de déclencher des builds et des déploiements lorsqu’une nouvelle image est poussée vers le registre. En outre, Red Hat OpenShift Service sur AWS a des déclencheurs génériques pour d’autres ressources, telles que les objets Kubernetes.
  • Il est possible de marquer une étiquette pour une réimportation périodique. Lorsque l’image source a changé, ce changement est capté et reflété dans le flux d’images, ce qui déclenche le flux de construction ou de déploiement, en fonction de la configuration de construction ou de déploiement.
  • Il est possible de partager des images à l’aide d’un contrôle d’accès fin et de distribuer rapidement des images à travers vos équipes.
  • En cas de modification de l’image source, la balise flux d’image pointe toujours vers une bonne version connue de l’image, en veillant à ce que votre application ne se casse pas de manière inattendue.
  • Configurez la sécurité autour de qui peut afficher et utiliser les images grâce à des autorisations sur les objets du flux d’images.
  • Les utilisateurs qui n’ont pas la permission de lire ou de répertorier des images au niveau du cluster peuvent toujours récupérer les images marquées dans un projet à l’aide de flux d’images.

6.2. Configuration des flux d’images

Le fichier objet ImageStream contient les éléments suivants.

Définition d’objet ImageStream

apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
  annotations:
    openshift.io/generated-by: OpenShiftNewApp
  labels:
    app: ruby-sample-build
    template: application-template-stibuild
  name: origin-ruby-sample 
1

  namespace: test
spec: {}
status:
  dockerImageRepository: 172.30.56.218:5000/test/origin-ruby-sample 
2

  tags:
  - items:
    - created: 2017-09-02T10:15:09Z
      dockerImageReference: 172.30.56.218:5000/test/origin-ruby-sample@sha256:47463d94eb5c049b2d23b03a9530bf944f8f967a0fe79147dd6b9135bf7dd13d 
3

      generation: 2
      image: sha256:909de62d1f609a717ec433cc25ca5cf00941545c83a01fb31527771e1fab3fc5 
4

    - created: 2017-09-01T13:40:11Z
      dockerImageReference: 172.30.56.218:5000/test/origin-ruby-sample@sha256:909de62d1f609a717ec433cc25ca5cf00941545c83a01fb31527771e1fab3fc5
      generation: 1
      image: sha256:47463d94eb5c049b2d23b03a9530bf944f8f967a0fe79147dd6b9135bf7dd13d
    tag: latest 
5
Copy to Clipboard Toggle word wrap

1
Le nom du flux d’images.
2
Chemin de dépôt Docker où de nouvelles images peuvent être poussées pour les ajouter ou les mettre à jour dans ce flux d’images.
3
L’identifiant SHA que cette balise de flux d’image fait actuellement référence. Les ressources qui font référence à cette balise de flux d’images utilisent cet identifiant.
4
L’identifiant SHA que cette balise de flux d’image a précédemment référencé. Il peut être utilisé pour revenir sur une image plus ancienne.
5
Le nom de la balise de flux d’image.

6.3. Images de flux d’images

L’image flux d’image pointe de l’intérieur d’un flux d’image vers un identifiant d’image particulier.

Les images de flux d’images vous permettent de récupérer des métadonnées sur une image à partir d’un flux d’image particulier où elle est marquée.

Les objets d’image en flux d’images sont automatiquement créés dans Red Hat OpenShift Service sur AWS chaque fois que vous importez ou marquez une image dans le flux d’images. Il ne faut jamais avoir à définir explicitement un objet image flux d’image dans une définition de flux d’images que vous utilisez pour créer des flux d’images.

L’image du flux d’image se compose du nom du flux d’image et de l’ID d’image du référentiel, délimité par un signe @:

<image-stream-name>@<image-id>
Copy to Clipboard Toggle word wrap

En référence à l’image dans l’exemple de l’objet ImageStream, l’image du flux d’image ressemble à:

origin-ruby-sample@sha256:47463d94eb5c049b2d23b03a9530bf944f8f967a0fe79147dd6b9135bf7dd13d
Copy to Clipboard Toggle word wrap

6.4. Balises de flux d’images

La balise de flux d’images est un pointeur nommé vers une image dans un flux d’image. Il est abrégé comme istag. La balise de flux d’image est utilisée pour référencer ou récupérer une image pour un flux et une balise d’image donnés.

Les balises de flux d’images peuvent référencer n’importe quelle image locale ou gérée par l’extérieur. Il contient une histoire d’images représentées comme une pile de toutes les images que le tag a jamais pointées. Chaque fois qu’une image nouvelle ou existante est marquée sous une balise de flux d’images particulière, elle est placée à la première position de la pile d’historique. L’image occupant précédemment la position supérieure est disponible à la deuxième position. Cela permet aux retours faciles de faire à nouveau des balises pointant vers des images historiques.

La balise de flux d’images suivante provient d’un objet ImageStream:

Balise de flux d’images avec deux images dans son histoire

kind: ImageStream
apiVersion: image.openshift.io/v1
metadata:
  name: my-image-stream
# ...
  tags:
  - items:
    - created: 2017-09-02T10:15:09Z
      dockerImageReference: 172.30.56.218:5000/test/origin-ruby-sample@sha256:47463d94eb5c049b2d23b03a9530bf944f8f967a0fe79147dd6b9135bf7dd13d
      generation: 2
      image: sha256:909de62d1f609a717ec433cc25ca5cf00941545c83a01fb31527771e1fab3fc5
    - created: 2017-09-01T13:40:11Z
      dockerImageReference: 172.30.56.218:5000/test/origin-ruby-sample@sha256:909de62d1f609a717ec433cc25ca5cf00941545c83a01fb31527771e1fab3fc5
      generation: 1
      image: sha256:47463d94eb5c049b2d23b03a9530bf944f8f967a0fe79147dd6b9135bf7dd13d
    tag: latest
# ...
Copy to Clipboard Toggle word wrap

Les balises de flux d’images peuvent être des balises permanentes ou des balises de suivi.

  • Les balises permanentes sont des balises spécifiques à une version qui pointent vers une version particulière d’une image, comme Python 3.5.
  • Les balises de suivi sont des balises de référence qui suivent une autre balise de flux d’images et peuvent être mises à jour pour changer l’image qu’elles suivent, comme un lien symbolique. Ces nouveaux niveaux ne sont pas garantis d’être rétrocompatibles.

    À titre d’exemple, les dernières balises de flux d’images expédiées avec Red Hat OpenShift Service sur AWS sont des balises de suivi. Cela signifie que les consommateurs de la dernière balise de flux d’images sont mis à jour au niveau le plus récent du cadre fourni par l’image lorsqu’un nouveau niveau devient disponible. La dernière balise de flux d’images vers v3.10 peut être changée en v3.11 à tout moment. Il est important d’être conscient que ces dernières balises de flux d’images se comportent différemment de la dernière balise Docker. La dernière balise de flux d’images, dans ce cas, ne pointe pas vers la dernière image dans le référentiel Docker. Il pointe vers une autre balise de flux d’images, qui pourrait ne pas être la dernière version d’une image. Ainsi, si la dernière balise de flux d’images pointe vers v3.10 d’une image, lorsque la version 3.11 est libérée, la dernière balise n’est pas automatiquement mise à jour sur v3.11, et reste à v3.10 jusqu’à ce qu’elle soit mise à jour manuellement pour pointer vers une balise de flux d’images v3.11.

    Note

    Les balises de suivi sont limitées à un seul flux d’images et ne peuvent pas faire référence à d’autres flux d’images.

Créez vos propres balises de flux d’images pour vos propres besoins.

La balise de flux d’image est composée du nom du flux d’image et d’une balise, séparée par un côlon:

<imagestream name>:<tag>
Copy to Clipboard Toggle word wrap

À titre d’exemple, pour se référer à l’image sha256:47463d94eb5c049b2d23b03a9530bf944f8f967a0fe79147dd6b9135bf7dd13d dans l’exemple d’objet ImageStream précédemment, la balise de flux d’image serait:

origin-ruby-sample:latest
Copy to Clipboard Toggle word wrap

6.5. Déclencheurs de changement de flux d’images

Les déclencheurs de flux d’images permettent à vos créations et déploiements d’être automatiquement invoqués lorsqu’une nouvelle version d’une image en amont est disponible.

À titre d’exemple, les builds et les déploiements peuvent être automatiquement démarrés lorsqu’une balise de flux d’images est modifiée. Ceci est réalisé en surveillant cette balise de flux d’images et en notifiant la construction ou le déploiement lorsqu’un changement est détecté.

6.6. En travaillant avec les flux d’images

Les sections suivantes décrivent comment utiliser les flux d’images et les balises de flux d’images.

Important

Évitez d’exécuter des charges de travail ou de partager l’accès aux projets par défaut. Les projets par défaut sont réservés à l’exécution de composants de cluster de base.

Les projets par défaut suivants sont considérés comme hautement privilégiés: par défaut, kube-public, kube-system, openshift, openshift-infra, openshift-node, et d’autres projets créés par système qui ont l’étiquette openshift.io / run-level définie à 0 ou 1. La fonctionnalité qui repose sur des plugins d’admission, tels que l’admission de sécurité pod, les contraintes de contexte de sécurité, les quotas de ressources de cluster et la résolution de référence d’image, ne fonctionne pas dans des projets hautement privilégiés.

6.6.1. Informations sur les flux d’images

Il est possible d’obtenir des informations générales sur le flux d’images et des informations détaillées sur toutes les balises qu’il pointe.

Procédure

  • Afin d’obtenir des informations générales sur le flux d’images et des informations détaillées sur toutes les balises qu’il pointe, entrez la commande suivante:

    $ oc describe is/<image-name>
    Copy to Clipboard Toggle word wrap

    À titre d’exemple:

    $ oc describe is/python
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Name:			python
    Namespace:		default
    Created:		About a minute ago
    Labels:			<none>
    Annotations:		openshift.io/image.dockerRepositoryCheck=2017-10-02T17:05:11Z
    Docker Pull Spec:	docker-registry.default.svc:5000/default/python
    Image Lookup:		local=false
    Unique Images:		1
    Tags:			1
    
    3.5
      tagged from centos/python-35-centos7
    
      * centos/python-35-centos7@sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
          About a minute ago
    Copy to Clipboard Toggle word wrap

  • Afin d’obtenir toutes les informations disponibles sur une balise de flux d’images particulière, entrez la commande suivante:

    $ oc describe istag/<image-stream>:<tag-name>
    Copy to Clipboard Toggle word wrap

    À titre d’exemple:

    $ oc describe istag/python:latest
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Image Name:	sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
    Docker Image:	centos/python-35-centos7@sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
    Name:		sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
    Created:	2 minutes ago
    Image Size:	251.2 MB (first layer 2.898 MB, last binary layer 72.26 MB)
    Image Created:	2 weeks ago
    Author:		<none>
    Arch:		amd64
    Entrypoint:	container-entrypoint
    Command:	/bin/sh -c $STI_SCRIPTS_PATH/usage
    Working Dir:	/opt/app-root/src
    User:		1001
    Exposes Ports:	8080/tcp
    Docker Labels:	build-date=20170801
    Copy to Clipboard Toggle word wrap

    Note

    Il y a plus d’informations que celles affichées.

  • Entrez la commande suivante pour découvrir l’architecture ou le système d’exploitation qu’une balise de flux d’image prend en charge:

    $ oc get istag <image-stream-tag> -ojsonpath="{range .image.dockerImageManifests[*]}{.os}/{.architecture}{'\n'}{end}"
    Copy to Clipboard Toggle word wrap

    À titre d’exemple:

    $ oc get istag busybox:latest -ojsonpath="{range .image.dockerImageManifests[*]}{.os}/{.architecture}{'\n'}{end}"
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    linux/amd64
    linux/arm
    linux/arm64
    linux/386
    linux/mips64le
    linux/ppc64le
    linux/riscv64
    linux/s390x
    Copy to Clipboard Toggle word wrap

6.6.2. Ajout de tags à un flux d’images

Il est possible d’ajouter des balises supplémentaires aux flux d’images.

Procédure

  • Ajoutez une balise qui pointe vers l’une des balises existantes en utilisant la commande 'oc tag':

    $ oc tag <image-name:tag1> <image-name:tag2>
    Copy to Clipboard Toggle word wrap

    À titre d’exemple:

    $ oc tag python:3.5 python:latest
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Tag python:latest set to python@sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25.
    Copy to Clipboard Toggle word wrap

  • Confirmez que le flux d’image a deux balises, une, 3.5, pointant vers l’image du conteneur externe et une autre balise, la dernière, pointant vers la même image parce qu’elle a été créée en fonction de la première balise.

    $ oc describe is/python
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Name:			python
    Namespace:		default
    Created:		5 minutes ago
    Labels:			<none>
    Annotations:		openshift.io/image.dockerRepositoryCheck=2017-10-02T17:05:11Z
    Docker Pull Spec:	docker-registry.default.svc:5000/default/python
    Image Lookup:		local=false
    Unique Images:		1
    Tags:			2
    
    latest
      tagged from python@sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
    
      * centos/python-35-centos7@sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
          About a minute ago
    
    3.5
      tagged from centos/python-35-centos7
    
      * centos/python-35-centos7@sha256:49c18358df82f4577386404991c51a9559f243e0b1bdc366df25
          5 minutes ago
    Copy to Clipboard Toggle word wrap

6.6.3. Ajout de tags pour une image externe

Ajoutez des tags pour des images externes.

Procédure

  • Ajoutez des tags pointant vers des images internes ou externes, en utilisant la commande oc tag pour toutes les opérations liées aux balises:

    $ oc tag <repository/image> <image-name:tag>
    Copy to Clipboard Toggle word wrap

    Cette commande cartographie par exemple l’image docker.io/python:3.6.0 à la balise 3.6 dans le flux d’images python.

    $ oc tag docker.io/python:3.6.0 python:3.6
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Tag python:3.6 set to docker.io/python:3.6.0.
    Copy to Clipboard Toggle word wrap

    Lorsque l’image externe est sécurisée, vous devez créer un secret avec des informations d’identification pour accéder à ce registre.

6.6.4. La mise à jour des balises de flux d’images

Il est possible de mettre à jour une balise pour refléter une autre balise dans un flux d’images.

Procédure

  • Actualisez une balise:

    $ oc tag <image-name:tag> <image-name:latest>
    Copy to Clipboard Toggle word wrap

    À titre d’exemple, les mises à jour suivantes de la dernière balise pour refléter la balise 3.6 dans un flux d’images:

    $ oc tag python:3.6 python:latest
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Tag python:latest set to python@sha256:438208801c4806548460b27bd1fbcb7bb188273d13871ab43f.
    Copy to Clipboard Toggle word wrap

6.6.5. La suppression des balises de flux d’images

Il est possible de supprimer les anciennes balises d’un flux d’images.

Procédure

  • Enlever les anciennes balises d’un flux d’images:

    $ oc tag -d <image-name:tag>
    Copy to Clipboard Toggle word wrap

    À titre d’exemple:

    $ oc tag -d python:3.6
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Deleted tag default/python:3.6
    Copy to Clipboard Toggle word wrap

Consultez Supprimer les balises de flux d’images obsolètes de l’opérateur d’échantillons de cluster pour plus d’informations sur la façon dont l’opérateur d’échantillons de cluster gère les balises de flux d’images dépréciées.

Lorsque vous travaillez avec un registre d’images de conteneur externe, pour réimporter périodiquement une image, par exemple pour obtenir les dernières mises à jour de sécurité, vous pouvez utiliser le drapeau --scheduled.

Procédure

  1. Calendrier d’importation d’images:

    $ oc tag <repository/image> <image-name:tag> --scheduled
    Copy to Clipboard Toggle word wrap

    À titre d’exemple:

    $ oc tag docker.io/python:3.6.0 python:3.6 --scheduled
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Tag python:3.6 set to import docker.io/python:3.6.0 periodically.
    Copy to Clipboard Toggle word wrap

    Cette commande fait que Red Hat OpenShift Service sur AWS met périodiquement à jour cette balise de flux d’images particulière. Cette période est un paramètre à l’échelle du cluster défini à 15 minutes par défaut.

  2. Enlevez la vérification périodique, redémarrez au-dessus de la commande, mais omettez le drapeau --scheduled. Cela réinitialisera son comportement par défaut.

    $ oc tag <repositiory/image> <image-name:tag>
    Copy to Clipboard Toggle word wrap

Les sections suivantes décrivent comment importer et travailler avec des flux d’images.

Le flux d’images peut être configuré pour importer des balises et des métadonnées d’image à partir de registres d’images privés nécessitant une authentification. Cette procédure s’applique si vous modifiez le registre que l’opérateur d’échantillons de cluster utilise pour extraire du contenu à autre chose que Registry.redhat.io.

Note

Lors de l’importation à partir de registres non sécurisés ou sécurisés, l’URL de registre définie dans le secret doit inclure le suffixe du port :80 ou le secret n’est pas utilisé lors de la tentative d’importation à partir du registre.

Procédure

  1. Il faut créer un objet secret qui est utilisé pour stocker vos informations d’identification en entrant la commande suivante:

    $ oc create secret generic <secret_name> --from-file=.dockerconfigjson=<file_absolute_path> --type=kubernetes.io/dockerconfigjson
    Copy to Clipboard Toggle word wrap
  2. Après la configuration du secret, créez le nouveau flux d’images ou entrez la commande oc import-image:

    $ oc import-image <imagestreamtag> --from=<image> --confirm
    Copy to Clipboard Toggle word wrap

    Au cours du processus d’importation, Red Hat OpenShift Service sur AWS reprend les secrets et les fournit à la partie distante.

6.7.2. En travaillant avec des listes de manifestes

Il est possible d’importer un seul sous-manifeste, ou tous les manifestes, d’une liste de manifestes lors de l’utilisation des commandes oc import-image ou oc tag CLI en ajoutant le drapeau --import-mode.

Consultez les commandes ci-dessous pour créer un flux d’images qui comprend un seul sous-manifeste ou des images multi-architecture.

Procédure

  • Créez un flux d’images qui inclut des images multi-architecture et définit le mode d’importation sur PreserveOriginal, en entrant la commande suivante:

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal' --reference-policy=local --confirm
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    ---
    Arch:           <none>
    Manifests:      linux/amd64     sha256:6e325b86566fafd3c4683a05a219c30c421fbccbf8d87ab9d20d4ec1131c3451
                    linux/arm64     sha256:d8fad562ffa75b96212c4a6dc81faf327d67714ed85475bf642729703a2b5bf6
                    linux/ppc64le   sha256:7b7e25338e40d8bdeb1b28e37fef5e64f0afd412530b257f5b02b30851f416e1
    ---
    Copy to Clipboard Toggle word wrap

  • Alternativement, entrez la commande suivante pour importer une image avec le mode d’importation Legacy, qui élimine les listes de manifestes et importe un seul sous-manifeste:

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='Legacy' --confirm
    Copy to Clipboard Toggle word wrap
    Note

    La valeur --import-mode= par défaut est Legacy. En excluant cette valeur, ou en ne spécifiant ni Legacy ou PreserveOriginal, importe un seul sous-manifeste. Le mode d’importation invalide renvoie l’erreur suivante : erreur : les valeurs ImportMode valides sont Legacy ou PreserveOriginal.

Limites

Le fait de travailler avec des listes de manifestes présente les limites suivantes:

  • Dans certains cas, les utilisateurs peuvent vouloir utiliser des sous-manifestes directement. Lorsque oc adm prune images est exécuté, ou que le tailleur CronJob s’exécute, ils ne peuvent pas détecter quand une liste de sous-manifestes est utilisée. En conséquence, un administrateur utilisant des images oc adm prune, ou le tailleur CronJob, pourrait supprimer des listes de manifestes entières, y compris des sous-manifestes.

    Afin d’éviter cette limitation, vous pouvez utiliser la liste des manifestes par tag ou en digérant à la place.

Afin de réimporter périodiquement une liste de manifestes, vous pouvez utiliser le drapeau --scheduled.

Procédure

  • Définissez le flux d’images pour mettre périodiquement à jour la liste des manifestes en entrant la commande suivante:

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal' --scheduled=true
    Copy to Clipboard Toggle word wrap

Afin de configurer SSL/TSL lors de l’importation d’une liste de manifestes, vous pouvez utiliser l’indicateur -- non sécurisé.

Procédure

  • Définissez --insecure=true de sorte que l’importation d’une liste manifeste saute la vérification SSL/TSL. À titre d’exemple:

    $ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal' --insecure=true
    Copy to Clipboard Toggle word wrap

6.7.3. Définir l’architecture pour --import-mode

Il est possible d’échanger votre flux d’images importé entre multi-architecture et architecture unique en excluant ou en incluant le drapeau --import-mode=

Procédure

  • Exécutez la commande suivante pour mettre à jour votre flux d’images de la multi-architecture vers une architecture unique en excluant le drapeau --import-mode=:

    $ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name>
    Copy to Clipboard Toggle word wrap
  • Exécutez la commande suivante pour mettre à jour votre flux d’images d’une architecture unique à la multi-architecture:

    $ oc import-image <multiarch_image_stream_tag>  --from=<registry>/<project_name>/<image_name> \
    --import-mode='PreserveOriginal'
    Copy to Clipboard Toggle word wrap

6.7.4. Champs de configuration pour --import-mode

Le tableau suivant décrit les options disponibles pour le drapeau --import-mode=:

Expand
Le paramètreDescription

Héritage

L’option par défaut pour --import-mode. Lorsque spécifié, la liste des manifestes est écartée et un seul sous-manifeste est importé. La plateforme est choisie dans l’ordre de priorité suivant:

  1. Annotations de balises
  2. Architecture de l’avion de contrôle
  3. Linux/AMD64
  4. Le premier manifeste dans la liste

À propos de PreserveOriginal

Lorsqu’il est spécifié, le manifeste original est préservé. Dans le cas des listes manifestes, la liste manifeste et tous ses sous-manifestes sont importés.

Les flux d’images, étant Red Hat OpenShift Service sur les ressources natives AWS, fonctionnent avec toutes les ressources natives disponibles dans Red Hat OpenShift Service sur AWS, telles que les ressources Build ou DeploymentConfigs. Il est également possible de les faire fonctionner avec des ressources natives Kubernetes, telles que les ressources Job, ReplicationController, ReplicaSet ou Kubernetes Deployment.

Lorsque vous utilisez des flux d’images avec les ressources Kubernetes, vous pouvez uniquement référencer des flux d’images qui résident dans le même projet que la ressource. La référence du flux d’images doit consister en une seule valeur de segment, par exemple ruby:2.5, où ruby est le nom d’un flux d’images qui a une balise nommée 2.5 et réside dans le même projet que la ressource faisant la référence.

Important

Évitez d’exécuter des charges de travail ou de partager l’accès aux projets par défaut. Les projets par défaut sont réservés à l’exécution de composants de cluster de base.

Les projets par défaut suivants sont considérés comme hautement privilégiés: par défaut, kube-public, kube-system, openshift, openshift-infra, openshift-node, et d’autres projets créés par système qui ont l’étiquette openshift.io / run-level définie à 0 ou 1. La fonctionnalité qui repose sur des plugins d’admission, tels que l’admission de sécurité pod, les contraintes de contexte de sécurité, les quotas de ressources de cluster et la résolution de référence d’image, ne fonctionne pas dans des projets hautement privilégiés.

Il existe deux façons d’activer les flux d’images avec les ressources Kubernetes:

  • Activer la résolution de flux d’images sur une ressource spécifique. Cela permet uniquement à cette ressource d’utiliser le nom du flux d’images dans le champ image.
  • Activer la résolution de flux d’images sur un flux d’images. Cela permet à toutes les ressources pointant vers ce flux d’images de l’utiliser dans le champ d’image.

Procédure

Il est possible d’utiliser oc set image-lookup pour activer la résolution de flux d’images sur une ressource spécifique ou une résolution de flux d’images sur un flux d’images.

  1. Afin de permettre à toutes les ressources de référencer le flux d’images nommé mysql, entrez la commande suivante:

    $ oc set image-lookup mysql
    Copy to Clipboard Toggle word wrap

    Ceci définit le champ Imagestream.spec.lookupPolicy.local à true.

    ImageStream avec la recherche d’image activée

    apiVersion: image.openshift.io/v1
    kind: ImageStream
    metadata:
      annotations:
        openshift.io/display-name: mysql
      name: mysql
      namespace: myproject
    spec:
      lookupPolicy:
        local: true
    Copy to Clipboard Toggle word wrap

    Lorsqu’il est activé, le comportement est activé pour toutes les balises dans le flux d’images.

  2. Ensuite, vous pouvez interroger les flux d’images et voir si l’option est définie:

    $ oc set image-lookup imagestream --list
    Copy to Clipboard Toggle word wrap

Il est possible d’activer la recherche d’images sur une ressource spécifique.

  • Afin de permettre au déploiement Kubernetes nommé mysql d’utiliser des flux d’images, exécutez la commande suivante:

    $ oc set image-lookup deploy/mysql
    Copy to Clipboard Toggle word wrap

    Cela définit l’annotation alpha.image.policy.openshift.io/resolve-names sur le déploiement.

    Déploiement avec la recherche d’images activée

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mysql
      namespace: myproject
    spec:
      replicas: 1
      template:
        metadata:
          annotations:
            alpha.image.policy.openshift.io/resolve-names: '*'
        spec:
          containers:
          - image: mysql:latest
            imagePullPolicy: Always
            name: mysql
    Copy to Clipboard Toggle word wrap

Désactivez la recherche d’images.

  • Désactiver la recherche d’image, passer --enabled=false:

    $ oc set image-lookup deploy/mysql --enabled=false
    Copy to Clipboard Toggle word wrap

Lorsqu’une balise de flux d’images est mise à jour pour pointer vers une nouvelle image, Red Hat OpenShift Service sur AWS peut automatiquement prendre des mesures pour déployer la nouvelle image vers des ressources qui utilisaient l’ancienne image. Configurez ce comportement de différentes manières en fonction du type de ressource qui fait référence à la balise de flux d’images.

8.1. Le Red Hat OpenShift Service sur les ressources AWS

Le service OpenShift Red Hat sur les configurations de déploiement AWS et les configurations de build peuvent être automatiquement déclenchés par des modifications aux balises de flux d’images. L’action déclenchée peut être exécutée en utilisant la nouvelle valeur de l’image référencée par la balise de flux d’images mise à jour.

8.2. Déclenchement des ressources Kubernetes

Les ressources Kubernetes n’ont pas de champs de déclenchement, contrairement aux configurations de déploiement et de construction, qui incluent dans leur définition d’API un ensemble de champs pour contrôler les déclencheurs. Au lieu de cela, vous pouvez utiliser des annotations dans Red Hat OpenShift Service sur AWS pour demander le déclenchement.

L’annotation est définie comme suit:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    image.openshift.io/triggers:
      [
       {
         "from": {
           "kind": "ImageStreamTag", 
1

           "name": "example:latest", 
2

           "namespace": "myapp" 
3

         },
         "fieldPath": "spec.template.spec.containers[?(@.name==\"web\")].image", 
4

         "paused": false 
5

       },
      # ...
      ]
# ...
Copy to Clipboard Toggle word wrap
1
Requis: le genre est la ressource à déclencher à partir de doit être ImageStreamTag.
2
Requis : le nom doit être le nom d’une balise de flux d’images.
3
Facultatif: namespace par défaut à l’espace de noms de l’objet.
4
Requis: fieldPath est le chemin JSON pour changer. Ce champ est limité et n’accepte qu’une expression de chemin JSON qui correspond précisément à un conteneur par ID ou index. Dans le cas des pods, le chemin JSON est spec.containers[?(@.name='web')].image.
5
Facultatif : mis en pause est de savoir si le déclencheur est mis en pause ou non, et la valeur par défaut est fausse. Définir en pause sur true pour désactiver temporairement ce déclencheur.

Lorsque l’une des ressources Kubernetes de base contient à la fois un modèle de pod et cette annotation, Red Hat OpenShift Service sur AWS tente de mettre à jour l’objet en utilisant l’image actuellement associée à la balise de flux d’images référencée par déclencheur. La mise à jour est effectuée par rapport au champPath spécifié.

Des exemples de ressources Kubernetes de base qui peuvent contenir à la fois un modèle de pod et l’annotation comprennent:

  • Cronjobs
  • Déploiements
  • StatefulSets
  • Daemonsets
  • Emplois
  • Contrôleurs de réplication
  • Les gousses

Lorsque vous ajoutez un déclencheur d’image aux déploiements, vous pouvez utiliser la commande déclencheurs oc. À titre d’exemple, la commande d’échantillon de cette procédure ajoute un déclencheur de changement d’image à l’exemple de déploiement nommé de sorte que lorsque la dernière balise de flux d’image est mise à jour, le conteneur Web à l’intérieur des mises à jour de déploiement avec la nouvelle valeur de l’image. Cette commande définit la bonne annotation image.openshift.io/triggers sur la ressource de déploiement.

Procédure

  • Déclenchez les ressources Kubernetes en entrant la commande déclencheurs oc:

    $ oc set triggers deploy/example --from-image=example:latest -c web
    Copy to Clipboard Toggle word wrap

    Exemple de déploiement avec l’annotation de déclenchement

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      annotations:
        image.openshift.io/triggers: '[{"from":{"kind":"ImageStreamTag","name":"example:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"container\")].image"}]'
    # ...
    Copy to Clipboard Toggle word wrap

    À moins que le déploiement ne soit interrompu, cette mise à jour de modèle de pod provoque automatiquement un déploiement avec la nouvelle valeur de l’image.

Chapitre 9. Configuration de l’image (Classic)

La procédure suivante permet de configurer les enregistrements d’images.

9.1. Configuration du contrôleur d’image

La ressource image.config.openshift.io/cluster contient des informations à l’échelle du cluster sur la façon de gérer les images. Le nom canonique et valide est cluster. Le cahier des charges offre les paramètres de configuration suivants.

Note

Les paramètres tels que DisableScheduledImport, MaxImagesBulkImportedPerRepository, MaxScheduledImportsPerMinute, ScheduledImageImportMinimumIntervalSeconds, InternalRegistryHostname ne sont pas configurables.

Expand
Le paramètreDescription

registres autorisésPour l’importation

Limite les enregistrements d’images de conteneur à partir desquels les utilisateurs normaux peuvent importer des images. Définissez cette liste dans les registres auxquels vous avez confiance pour contenir des images valides, et que vous souhaitez que les applications puissent importer à partir. Les utilisateurs autorisés à créer des images ou ImageStreamMappings à partir de l’API ne sont pas affectés par cette politique. Généralement, seuls les administrateurs de cluster ont les autorisations appropriées.

Chaque élément de cette liste contient un emplacement du registre spécifié par le nom de domaine du registre.

Domainname: Spécifie un nom de domaine pour le registre. Lorsque le registre utilise un port 80 ou 443 non standard, le port doit également être inclus dans le nom de domaine.

insécurité : Insécurité indique si le registre est sécurisé ou non sécurisé. À défaut, si elle n’est pas précisée autrement, le registre est supposé être sécurisé.

autresTrustedCA

Il s’agit d’une référence à une carte de configuration contenant des CA supplémentaires qui devraient être fiables lors de l’importation de flux d’images, d’un tirage d’image pod, d’un pull openshift-image-registry et de builds.

L’espace de noms de cette carte de configuration est openshift-config. Le format de la carte de configuration est d’utiliser le nom d’hôte du registre comme clé, et le certificat encodé PEM comme valeur, pour chaque CA de registre supplémentaire à faire confiance.

enregistrement externeHostnames

Fournit les noms d’hôte pour le registre d’images externe par défaut. Le nom d’hôte externe ne doit être défini que lorsque le registre d’images est exposé à l’extérieur. La première valeur est utilisée dans le champ publicDockerImageRepository dans les flux d’images. La valeur doit être au format hostname[:port].

les sources de registre

Contient une configuration qui détermine comment le temps d’exécution du conteneur devrait traiter les registres individuels lors de l’accès aux images pour les builds et les pods. À titre d’exemple, permettre ou non un accès non sécurisé. Il ne contient pas de configuration pour le registre interne des clusters.

des registres non sécurisés : des registres qui n’ont pas de certificat TLS valide ou qui ne prennent en charge que les connexions HTTP. Afin de spécifier tous les sous-domaines, ajoutez le caractère générique astérisque (*) comme préfixe au nom de domaine. *.example.com, par exemple. Il est possible de spécifier un référentiel individuel au sein d’un registre. Exemple: reg1.io/myrepo/myapp:lastest.

les registres bloqués : les registres pour lesquels les actions de traction et de poussée d’image sont refusées. Afin de spécifier tous les sous-domaines, ajoutez le caractère générique astérisque (*) comme préfixe au nom de domaine. *.example.com, par exemple. Il est possible de spécifier un référentiel individuel au sein d’un registre. Exemple: reg1.io/myrepo/myapp:lastest. Les autres registres sont autorisés.

registres autorisés: Registres pour lesquels les actions de traction et de poussée d’image sont autorisées. Afin de spécifier tous les sous-domaines, ajoutez le caractère générique astérisque (*) comme préfixe au nom de domaine. *.example.com, par exemple. Il est possible de spécifier un référentiel individuel au sein d’un registre. Exemple: reg1.io/myrepo/myapp:lastest. Les autres registres sont bloqués.

containerRuntimeSearchRegistries: Registres pour lesquels les actions d’extraction et de poussée d’image sont autorisées à l’aide de noms courts d’image. Les autres registres sont bloqués.

Des registres bloqués ou autorisés peuvent être définis, mais pas les deux.

Avertissement

Lorsque le paramètre autorisé des Registres est défini, tous les registres, y compris les registres register.redhat.io et quay.io et le registre d’images OpenShift par défaut, sont bloqués, sauf indication explicite. Lors de l’utilisation du paramètre, pour éviter la défaillance de la pod, ajoutez tous les registres, y compris les registres register.redhat.io et quay.io et le nom de registre interne à la liste des registres autorisés, car ils sont requis par les images de charge utile dans votre environnement. Dans le cas des clusters déconnectés, des registres miroirs devraient également être ajoutés.

Le champ d’état de la ressource image.config.openshift.io/cluster contient les valeurs observées à partir du cluster.

Expand
Le paramètreDescription

enregistrement interneHostname

Défini par l’opérateur de registre d’images, qui contrôle le nom de registre interne. Il définit le nom d’hôte pour le registre d’images OpenShift par défaut. La valeur doit être au format hostname[:port]. En cas de rétrocompatibilité, vous pouvez toujours utiliser la variable d’environnement OPENSHIFT_DEFAULT_REGISTRY, mais ce paramètre remplace la variable d’environnement.

enregistrement externeHostnames

Défini par l’opérateur de registre d’images, fournit les noms d’hôte externes pour le registre d’images lorsqu’il est exposé à l’extérieur. La première valeur est utilisée dans le champ publicDockerImageRepository dans les flux d’images. Les valeurs doivent être au format hostname[:port].

9.2. Configuration des paramètres du registre des images

Il est possible de configurer les paramètres du registre des images en modifiant la ressource personnalisée image.config.openshift.io/cluster (CR). Lorsque des modifications au registre sont appliquées à image.config.openshift.io/cluster CR, l’opérateur de configuration de machine (MCO) effectue les actions séquentielles suivantes:

  1. Cordons le nœud
  2. Applique des modifications en redémarrant CRI-O
  3. Désenregistre le nœud

    Note

    L’AGC ne redémarre pas les nœuds lorsqu’il détecte les changements.

Procédure

  1. Éditer la ressource personnalisée image.config.openshift.io/cluster:

    $ oc edit image.config.openshift.io/cluster
    Copy to Clipboard Toggle word wrap

    Ce qui suit est un exemple image.config.openshift.io/cluster CR:

    apiVersion: config.openshift.io/v1
    kind: Image 
    1
    
    metadata:
      annotations:
        release.openshift.io/create-only: "true"
      creationTimestamp: "2019-05-17T13:44:26Z"
      generation: 1
      name: cluster
      resourceVersion: "8302"
      selfLink: /apis/config.openshift.io/v1/images/cluster
      uid: e34555da-78a9-11e9-b92b-06d6c7da38dc
    spec:
      allowedRegistriesForImport: 
    2
    
        - domainName: quay.io
          insecure: false
      additionalTrustedCA: 
    3
    
        name: myconfigmap
      registrySources: 
    4
    
        allowedRegistries:
        - example.com
        - quay.io
        - registry.redhat.io
        - image-registry.openshift-image-registry.svc:5000
        - reg1.io/myrepo/myapp:latest
        insecureRegistries:
        - insecure.com
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    Copy to Clipboard Toggle word wrap
    1
    Image: Tenue des informations à l’échelle du cluster sur la façon de gérer les images. Le nom canonique et valide est cluster.
    2
    permisRegistriesForImport: Limite les enregistrements d’images de conteneur à partir desquels les utilisateurs normaux peuvent importer des images. Définissez cette liste dans les registres auxquels vous avez confiance pour contenir des images valides, et que vous souhaitez que les applications puissent importer à partir. Les utilisateurs autorisés à créer des images ou ImageStreamMappings à partir de l’API ne sont pas affectés par cette politique. Généralement, seuls les administrateurs de cluster ont les autorisations appropriées.
    3
    autreTrustedCA: Une référence à une carte de configuration contenant des autorisations de certificat supplémentaires (CA) qui sont fiables lors de l’importation des flux d’images, de la prise d’image pod, de l’extraction d’enregistrement d’image ouverte et des builds. L’espace de noms de cette carte de configuration est openshift-config. Le format de la carte de configuration est d’utiliser le nom d’hôte du registre comme clé, et le certificat PEM comme valeur, pour chaque CA de registre supplémentaire à faire confiance.
    4
    RegistrySources: Contient une configuration qui détermine si l’exécution du conteneur autorise ou bloque les registres individuels lors de l’accès aux images pour les builds et les pods. Le paramètre d’enregistrement autorisé ou le paramètre des Registres bloqués peut être défini, mais pas les deux. Il est également possible de définir si vous autorisez ou non l’accès à des registres ou registres non sécurisés qui autorisent les registres qui utilisent des noms courts d’image. Cet exemple utilise le paramètre autoriséRegistries, qui définit les registres qui sont autorisés à être utilisés. Le registre non sécurisé insecure.com est également autorisé. Le paramètre RegistrySources ne contient pas de configuration pour le registre interne du cluster.
    Note

    Lorsque le paramètre de registre autorisé est défini, tous les registres, y compris les registres Registry.redhat.io et quay.io et le registre d’images OpenShift par défaut, sont bloqués à moins d’être explicitement répertoriés. Dans le cas où vous utilisez le paramètre, afin d’éviter la défaillance de la pod, vous devez ajouter les registres Registry.redhat.io et quay.io ainsi que le nom de registre interne à la liste des Registres autorisés, car ils sont requis par les images de charge utile dans votre environnement. Il ne faut pas ajouter les registres Registry.redhat.io et quay.io à la liste des Registres bloqués.

    Lorsque vous utilisez les Registres autorisés, les Registres bloqués ou le paramètre InsécuritéRegistries, vous pouvez spécifier un référentiel individuel au sein d’un registre. Exemple: reg1.io/myrepo/myapp:lastest.

    Les registres externes non sécurisés devraient être évités afin de réduire les risques éventuels pour la sécurité.

  2. Afin de vérifier que les modifications sont appliquées, répertoriez vos nœuds:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME                                         STATUS                     ROLES                  AGE   VERSION
    ip-10-0-137-182.us-east-2.compute.internal   Ready,SchedulingDisabled   worker                 65m   v1.31.3
    ip-10-0-139-120.us-east-2.compute.internal   Ready,SchedulingDisabled   control-plane          74m   v1.31.3
    ip-10-0-176-102.us-east-2.compute.internal   Ready                      control-plane          75m   v1.31.3
    ip-10-0-188-96.us-east-2.compute.internal    Ready                      worker                 65m   v1.31.3
    ip-10-0-200-59.us-east-2.compute.internal    Ready                      worker                 63m   v1.31.3
    ip-10-0-223-123.us-east-2.compute.internal   Ready                      control-plane          73m   v1.31.3
    Copy to Clipboard Toggle word wrap

9.2.1. Ajout de registres spécifiques

Il est possible d’ajouter une liste d’enregistrements, et éventuellement un référentiel individuel au sein d’un registre, qui sont autorisés pour les actions d’extraction et de poussée d’image en modifiant la ressource personnalisée image.config.openshift.io/cluster (CR). Le service Red Hat OpenShift sur AWS applique les modifications apportées à ce CR à tous les nœuds du cluster.

Lorsque vous tirez ou poussez des images, le temps d’exécution du conteneur recherche les registres listés sous le paramètre RegistrySources dans l’image.config.openshift.io/cluster CR. Lorsque vous avez créé une liste d’enregistrements sous le paramètre d’enregistrement autorisé, le temps d’exécution du conteneur ne recherche que ces registres. Les registres qui ne figurent pas dans la liste sont bloqués.

Avertissement

Lorsque le paramètre de registre autorisé est défini, tous les registres, y compris les registres Registry.redhat.io et quay.io et le registre d’images OpenShift par défaut, sont bloqués à moins d’être explicitement répertoriés. Dans le cas où vous utilisez le paramètre, pour éviter la défaillance de la pod, ajoutez les registres Registry.redhat.io et quay.io ainsi que le nom de registre interne à la liste des registres autorisés, comme ils sont requis par les images de charge utile dans votre environnement. Dans le cas des clusters déconnectés, des registres miroirs devraient également être ajoutés.

Procédure

  • Éditer la ressource personnalisée image.config.openshift.io/cluster:

    $ oc edit image.config.openshift.io/cluster
    Copy to Clipboard Toggle word wrap

    Ce qui suit est un exemple image.config.openshift.io/cluster CR avec une liste autorisée:

    apiVersion: config.openshift.io/v1
    kind: Image
    metadata:
      annotations:
        release.openshift.io/create-only: "true"
      creationTimestamp: "2019-05-17T13:44:26Z"
      generation: 1
      name: cluster
      resourceVersion: "8302"
      selfLink: /apis/config.openshift.io/v1/images/cluster
      uid: e34555da-78a9-11e9-b92b-06d6c7da38dc
    spec:
      registrySources: 
    1
    
        allowedRegistries: 
    2
    
        - example.com
        - quay.io
        - registry.redhat.io
        - reg1.io/myrepo/myapp:latest
        - image-registry.openshift-image-registry.svc:5000
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    Copy to Clipboard Toggle word wrap
    1
    Contient des configurations qui déterminent comment l’exécution du conteneur devrait traiter les registres individuels lors de l’accès aux images pour les builds et les pods. Il ne contient pas de configuration pour le registre interne des clusters.
    2
    Indiquez les registres, et éventuellement un référentiel dans ce registre, à utiliser pour les actions d’extraction et de poussée d’image. Les autres registres sont bloqués.
    Note

    Le paramètre d’enregistrement autorisé ou le paramètre des Registres bloqués peut être défini, mais pas les deux.

    L’opérateur de configuration de machine (MCO) regarde la ressource image.config.openshift.io/cluster pour toute modification des registres. Lorsque l’AGC détecte un changement, il draine les nœuds, applique le changement et désenregistre les nœuds. Après le retour des nœuds à l’état Ready, la liste des registres autorisés est utilisée pour mettre à jour la politique de signature d’image dans le fichier /etc/containers/policy.json sur chaque nœud.

Note

Lorsque votre cluster utilise le paramètre RegistrySources.insecureRegistries, assurez-vous que les registres non sécurisés sont inclus dans la liste autorisée.

À titre d’exemple:

spec:
  registrySources:
    insecureRegistries:
    - insecure.com
    allowedRegistries:
    - example.com
    - quay.io
    - registry.redhat.io
    - insecure.com
    - image-registry.openshift-image-registry.svc:5000
Copy to Clipboard Toggle word wrap

9.2.2. Blocage des registres spécifiques

Il est possible de bloquer n’importe quel registre, et éventuellement un référentiel individuel dans un registre, en modifiant la ressource personnalisée image.config.openshift.io/cluster (CR). Le service Red Hat OpenShift sur AWS applique les modifications apportées à ce CR à tous les nœuds du cluster.

Lorsque vous tirez ou poussez des images, le temps d’exécution du conteneur recherche les registres listés sous le paramètre RegistrySources dans l’image.config.openshift.io/cluster CR. Lorsque vous avez créé une liste d’enregistrements sous le paramètre Registres bloqués, l’exécution du conteneur ne recherche pas ces registres. Les autres registres sont autorisés.

Avertissement

Afin d’éviter la défaillance de la pod, n’ajoutez pas les registres Registry.redhat.io et quay.io à la liste des Registres bloqués, car ils sont requis par les images de charge utile dans votre environnement.

Procédure

  • Éditer la ressource personnalisée image.config.openshift.io/cluster:

    $ oc edit image.config.openshift.io/cluster
    Copy to Clipboard Toggle word wrap

    Ce qui suit est un exemple image.config.openshift.io/cluster CR avec une liste bloquée:

    apiVersion: config.openshift.io/v1
    kind: Image
    metadata:
      annotations:
        release.openshift.io/create-only: "true"
      creationTimestamp: "2019-05-17T13:44:26Z"
      generation: 1
      name: cluster
      resourceVersion: "8302"
      selfLink: /apis/config.openshift.io/v1/images/cluster
      uid: e34555da-78a9-11e9-b92b-06d6c7da38dc
    spec:
      registrySources: 
    1
    
        blockedRegistries: 
    2
    
        - untrusted.com
        - reg1.io/myrepo/myapp:latest
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    Copy to Clipboard Toggle word wrap
    1
    Contient des configurations qui déterminent comment l’exécution du conteneur devrait traiter les registres individuels lors de l’accès aux images pour les builds et les pods. Il ne contient pas de configuration pour le registre interne des clusters.
    2
    Indiquez les registres, et éventuellement un référentiel dans ce registre, qui ne doit pas être utilisé pour les actions d’extraction et de poussée d’image. Les autres registres sont autorisés.
    Note

    Le registre des registres bloqués ou le registre autorisé des registres peuvent être définis, mais pas les deux.

    L’opérateur de configuration de machine (MCO) regarde la ressource image.config.openshift.io/cluster pour toute modification des registres. Lorsque l’AGC détecte un changement, il draine les nœuds, applique le changement et désenregistre les nœuds. Après le retour des nœuds à l’état Ready, les modifications aux registres bloqués apparaissent dans le fichier /etc/containers/registries.conf sur chaque nœud.

9.2.3. Autoriser les registres non sécurisés

Il est possible d’ajouter des registres non sécurisés, et éventuellement un référentiel individuel au sein d’un registre, en éditant la ressource personnalisée image.config.openshift.io/cluster (CR). Le service Red Hat OpenShift sur AWS applique les modifications apportées à ce CR à tous les nœuds du cluster.

Les registres qui n’utilisent pas de certificats SSL valides ou qui ne nécessitent pas de connexion HTTPS sont considérés comme non sécurisés.

Avertissement

Les registres externes non sécurisés devraient être évités afin de réduire les risques éventuels pour la sécurité.

Procédure

  • Éditer la ressource personnalisée image.config.openshift.io/cluster:

    $ oc edit image.config.openshift.io/cluster
    Copy to Clipboard Toggle word wrap

    Ce qui suit est un exemple image.config.openshift.io/cluster CR avec une liste de registres non sécurisés:

    apiVersion: config.openshift.io/v1
    kind: Image
    metadata:
      annotations:
        release.openshift.io/create-only: "true"
      creationTimestamp: "2019-05-17T13:44:26Z"
      generation: 1
      name: cluster
      resourceVersion: "8302"
      selfLink: /apis/config.openshift.io/v1/images/cluster
      uid: e34555da-78a9-11e9-b92b-06d6c7da38dc
    spec:
      registrySources: 
    1
    
        insecureRegistries: 
    2
    
        - insecure.com
        - reg4.io/myrepo/myapp:latest
        allowedRegistries:
        - example.com
        - quay.io
        - registry.redhat.io
        - insecure.com 
    3
    
        - reg4.io/myrepo/myapp:latest
        - image-registry.openshift-image-registry.svc:5000
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    Copy to Clipboard Toggle word wrap
    1
    Contient des configurations qui déterminent comment l’exécution du conteneur devrait traiter les registres individuels lors de l’accès aux images pour les builds et les pods. Il ne contient pas de configuration pour le registre interne des clusters.
    2
    Indiquez un registre non sécurisé. Dans ce registre, vous pouvez spécifier un référentiel.
    3
    Assurez-vous que les registres non sécurisés sont inclus dans la liste des registres autorisés.
    Note

    Lorsque le paramètre de registre autorisé est défini, tous les registres, y compris les registres Registry.redhat.io et quay.io et le registre d’images OpenShift par défaut, sont bloqués à moins d’être explicitement répertoriés. Dans le cas où vous utilisez le paramètre, pour éviter la défaillance de la pod, ajoutez tous les registres, y compris les registres Registry.redhat.io et quay.io et l’enregistrement interneHostname à la liste des Registres autorisés, car ils sont requis par les images de charge utile dans votre environnement. Dans le cas des clusters déconnectés, des registres miroirs devraient également être ajoutés.

    L’opérateur de configuration de machine (MCO) surveille l’image.config.openshift.io/cluster CR pour toute modification des registres, puis draine et désenregistre les nœuds lorsqu’il détecte les changements. Après le retour des nœuds à l’état Ready, les modifications des registres non sécurisés et bloqués apparaissent dans le fichier /etc/containers/registries.conf sur chaque nœud.

9.2.4. Ajout de registres permettant des noms courts d’image

Il est possible d’ajouter des registres à la recherche d’un nom court en éditant la ressource personnalisée image.config.openshift.io/cluster (CR). Le service Red Hat OpenShift sur AWS applique les modifications apportées à ce CR à tous les nœuds du cluster.

Le nom court d’une image vous permet de rechercher des images sans inclure le nom de domaine entièrement qualifié dans la spécification pull. À titre d’exemple, vous pouvez utiliser rhel7/etcd au lieu de Registry.access.redhat.com/rhe7/etcd.

Il se peut que vous utilisiez des noms courts dans des situations où l’utilisation du chemin complet n’est pas pratique. À titre d’exemple, si votre cluster fait référence à plusieurs registres internes dont le DNS change fréquemment, vous devrez mettre à jour les noms de domaine entièrement qualifiés dans vos spécifications de traction à chaque modification. Dans ce cas, l’utilisation d’un nom court d’image peut être bénéfique.

Lorsque vous tirez ou poussez des images, le temps d’exécution du conteneur recherche les registres listés sous le paramètre RegistrySources dans l’image.config.openshift.io/cluster CR. Lorsque vous avez créé une liste d’enregistrements sous le paramètre containerRuntimeSearchRegistries, lorsque vous tirez une image avec un nom court, le temps d’exécution du conteneur recherche ces registres.

Avertissement

L’utilisation de noms courts d’images avec des registres publics est fortement découragée parce que l’image pourrait ne pas être déployée si le registre public nécessite une authentification. Utiliser des noms d’images entièrement qualifiés avec des registres publics.

Les registres internes ou privés Red Hat prennent généralement en charge l’utilisation de noms courts d’images.

Lorsque vous répertoriez les registres publics sous le paramètre containerRuntimeSearchRegistries (y compris les registres register.redhat.io, docker.io et quay.io), vous exposez vos informations d’identification à tous les registres de la liste, et vous risquez des attaques de réseau et de registre. Car vous ne pouvez avoir qu’un seul secret pour tirer des images, telles que définies par le secret d’attraction global, ce secret est utilisé pour authentifier contre chaque registre de cette liste. Donc, si vous incluez des registres publics dans la liste, vous introduisez un risque de sécurité.

Il est impossible de répertorier plusieurs registres publics sous le paramètre containerRuntimeSearchRegistries si chaque registre public nécessite des informations d’identification différentes et qu’un cluster ne répertorie pas le registre public dans le secret d’attraction global.

Dans le cas d’un registre public nécessitant une authentification, vous ne pouvez utiliser un nom court d’image que si le registre a ses informations d’identification stockées dans le secret d’attraction global.

L’opérateur de configuration de machine (MCO) regarde la ressource image.config.openshift.io/cluster pour toute modification des registres. Lorsque l’AGC détecte un changement, il draine les nœuds, applique le changement et désenregistre les nœuds. Après que les nœuds retournent à l’état Ready, si le paramètre containerRuntimeSearchRegistries est ajouté, l’AGC crée un fichier dans le répertoire /etc/containers/registries.conf.d sur chaque nœud avec les registres listés. Le fichier remplace la liste par défaut des registres de recherche non qualifiés dans le fichier /etc/containers/registries.conf. Il n’y a aucun moyen de revenir à la liste par défaut des registres de recherche non qualifiés.

Le paramètre containerRuntimeSearchRegistries ne fonctionne qu’avec les moteurs de conteneurs Podman et CRI-O. Les registres de la liste ne peuvent être utilisés que dans les spécifications de pod, et non dans les builds et les flux d’images.

Procédure

  • Éditer la ressource personnalisée image.config.openshift.io/cluster:

    $ oc edit image.config.openshift.io/cluster
    Copy to Clipboard Toggle word wrap

    Ce qui suit est un exemple image.config.openshift.io/cluster CR:

    apiVersion: config.openshift.io/v1
    kind: Image
    metadata:
      annotations:
        release.openshift.io/create-only: "true"
      creationTimestamp: "2019-05-17T13:44:26Z"
      generation: 1
      name: cluster
      resourceVersion: "8302"
      selfLink: /apis/config.openshift.io/v1/images/cluster
      uid: e34555da-78a9-11e9-b92b-06d6c7da38dc
    spec:
      allowedRegistriesForImport:
        - domainName: quay.io
          insecure: false
      additionalTrustedCA:
        name: myconfigmap
      registrySources:
        containerRuntimeSearchRegistries: 
    1
    
        - reg1.io
        - reg2.io
        - reg3.io
        allowedRegistries: 
    2
    
        - example.com
        - quay.io
        - registry.redhat.io
        - reg1.io
        - reg2.io
        - reg3.io
        - image-registry.openshift-image-registry.svc:5000
    ...
    status:
      internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
    Copy to Clipboard Toggle word wrap
    1
    Indiquez les registres à utiliser avec les noms courts de l’image. Il est recommandé d’utiliser des noms courts d’images avec uniquement des registres internes ou privés afin de réduire les risques de sécurité possibles.
    2
    Assurez-vous que tous les registres énumérés sous containerRuntimeSearchRegistries sont inclus dans la liste des registres autorisés.
    Note

    Lorsque le paramètre de registre autorisé est défini, tous les registres, y compris les registres Registry.redhat.io et quay.io et le registre d’images OpenShift par défaut, sont bloqués à moins d’être explicitement répertoriés. Lorsque vous utilisez ce paramètre, pour éviter la défaillance de la pod, ajoutez tous les registres, y compris les registres register.redhat.io et quay.io et le nom de registre interne à la liste des Registres autorisés, car ils sont requis par les images de charge utile dans votre environnement. Dans le cas des clusters déconnectés, des registres miroirs devraient également être ajoutés.

La ressource personnalisée image.config.openshift.io/cluster peut contenir une référence à une carte de configuration qui contient des autorités de certification supplémentaires à faire confiance pendant l’accès au registre des images.

Conditions préalables

  • Les autorités de certification (CA) doivent être codées en PEM.

Procédure

Dans la ressource personnalisée image.config.openshift.io, vous pouvez créer une carte de configuration dans l’espace de noms openshift-config et utiliser son nom dans la ressource personnalisée image.config.openshift.io pour fournir des CA supplémentaires qui devraient être fiables lorsque vous contactez des registres externes.

La clé map de configuration est le nom d’hôte d’un registre avec le port auquel il faut faire confiance à cette CA, et le contenu du certificat PEM est la valeur, pour chaque CA de registre supplémentaire à faire confiance.

Exemple de carte de configuration CA

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-registry-ca
data:
  registry.example.com: |
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
  registry-with-port.example.com..5000: | 
1

    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
Copy to Clipboard Toggle word wrap

1
Dans le cas où le registre possède le port, tel que Registry-with-port.example.com:5000, : doit être remplacé par ...

Il est possible de configurer des CA supplémentaires avec la procédure suivante.

  • Configurer un CA supplémentaire:

    $ oc create configmap registry-config --from-file=<external_registry_address>=ca.crt -n openshift-config
    Copy to Clipboard Toggle word wrap
    $ oc edit image.config.openshift.io cluster
    Copy to Clipboard Toggle word wrap
    spec:
      additionalTrustedCA:
        name: registry-config
    Copy to Clipboard Toggle word wrap

La mise en place d’un référentiel de registre de conteneurs vous permet d’effectuer les tâches suivantes:

  • Configurez votre Red Hat OpenShift Service sur AWS cluster pour rediriger les requêtes pour extraire des images d’un référentiel sur un registre d’images source et le faire résoudre par un référentiel sur un registre d’images en miroir.
  • Identifiez plusieurs référentiels miroirs pour chaque référentiel cible, pour vous assurer que si un miroir est en panne, un autre peut être utilisé.

La mise en miroir du référentiel dans Red Hat OpenShift Service sur AWS inclut les attributs suivants:

  • Les tirages d’image sont résilients aux temps d’arrêt du registre.
  • Les clusters dans des environnements déconnectés peuvent tirer des images à partir d’emplacements critiques, tels que quay.io, et avoir des registres derrière un pare-feu d’entreprise fournissent les images demandées.
  • L’ordre particulier des registres est essayé lorsqu’une demande de tirage d’image est faite, le registre permanent étant généralement le dernier essayé.
  • Les informations de miroir que vous entrez sont ajoutées au fichier /etc/containers/registries.conf sur chaque nœud du service OpenShift Red Hat sur AWS cluster.
  • Lorsqu’un nœud fait une demande pour une image à partir du référentiel source, il essaie chaque référentiel miroir à son tour jusqu’à ce qu’il trouve le contenu demandé. En cas d’échec de tous les miroirs, le cluster essaie le référentiel source. En cas de succès, l’image est tirée vers le nœud.

La mise en place d’un référentiel de miroir peut se faire de la manière suivante:

  • Chez Red Hat OpenShift Service sur l’installation AWS:

    En tirant les images conteneur nécessaires par Red Hat OpenShift Service sur AWS, puis en apportant ces images derrière le pare-feu de votre entreprise, vous pouvez installer Red Hat OpenShift Service sur AWS dans un centre de données qui se trouve dans un environnement déconnecté.

  • Après Red Hat OpenShift Service sur l’installation AWS:

    Lorsque vous n’avez pas configuré de miroir pendant Red Hat OpenShift Service sur l’installation AWS, vous pouvez le faire en utilisant l’un des objets de ressource personnalisée (CR) suivants:

    • ImageDigestMirrorSet (IDMS). Cet objet vous permet de tirer des images d’un registre en miroir en utilisant des spécifications de digestion. L’IDMS CR vous permet de définir une stratégie de recul qui permet ou arrête les tentatives continues de tirer du registre source si l’image échoue.
    • ImageTagMirrorSet (ITMS). Cet objet vous permet de tirer des images d’un registre en miroir en utilisant des balises d’image. L’ITMS CR vous permet de définir une stratégie de recul qui permet ou arrête les tentatives continues de tirer du registre source si l’image échoue.
    • ImageContentSourcePolicy (ICSP). Cet objet vous permet de tirer des images d’un registre en miroir en utilisant des spécifications de digestion. L’ICSP CR revient toujours au registre source si les miroirs ne fonctionnent pas.
    Important

    À l’aide d’un objet ImageContentSourcePolicy (ICSP) pour configurer la mise en miroir de référentiels est une fonctionnalité obsolète. La fonctionnalité obsolète est toujours incluse dans Red Hat OpenShift Service sur AWS et continue d’être prise en charge; cependant, il sera supprimé dans une future version de ce produit et n’est pas recommandé pour de nouveaux déploiements. Lorsque vous avez des fichiers YAML existants que vous avez utilisés pour créer des objets ImageContentSourcePolicy, vous pouvez utiliser la commande oc adm migration icsp pour convertir ces fichiers en un fichier ImageDigestMirrorSet YAML. Consultez la section « Convertir les fichiers ImageContentSourcePolicy (ICSP) pour la mise en miroir du référentiel de registre d’images » dans la section suivante.

Chacun de ces objets de ressource personnalisés identifie les informations suivantes:

  • La source du référentiel d’image de conteneur que vous souhaitez refléter.
  • Entrée séparée pour chaque référentiel miroir que vous souhaitez offrir le contenu demandé dans le référentiel source.

Dans le cas des nouveaux clusters, vous pouvez utiliser les objets IDMS, ITMS et ICSP CRs au besoin. Cependant, il est recommandé d’utiliser IDMS et ITMS.

Lorsque vous avez mis à niveau un cluster, tous les objets ICSP existants restent stables, et les objets IDMS et ICSP sont pris en charge. Les charges de travail utilisant des objets ICSP continuent de fonctionner comme prévu. Cependant, si vous voulez tirer parti des stratégies de repli introduites dans les CR IDMS, vous pouvez migrer les charges de travail actuelles vers des objets IDMS en utilisant la commande oc adm migration icsp comme indiqué dans la section Convertir ImageContentSourcePolicy (ICSP) pour la section de miroir de référentiel de registre d’images qui suit. La migration vers les objets IDMS ne nécessite pas de redémarrage de cluster.

Note

Lorsque votre cluster utilise un objet ImageDigestMirrorSet, ImageTagMirrorSet ou ImageContentSourcePolicy pour configurer la mise en miroir de référentiels, vous pouvez utiliser uniquement des secrets de traction globaux pour les registres miroirs. Il est impossible d’ajouter un secret d’attraction à un projet.

9.3.1. Configuration du référentiel de registre d’images

Il est possible de créer des ressources personnalisées de configuration de miroir de postinstallation (CR) pour rediriger les requêtes de tirage d’images d’un registre d’images source vers un registre d’images en miroir.

Conditions préalables

  • Accès au cluster en tant qu’utilisateur avec le rôle dédié-admin.

Procédure

  1. Configurez les référentiels miroirs, par l’un ou l’autre:

    • Configuration d’un référentiel miroir avec Red Hat Quay, comme décrit dans Red Hat Quay Repository Mirroring. En utilisant Red Hat Quay, vous pouvez copier des images d’un référentiel à un autre et synchroniser automatiquement ces référentiels à plusieurs reprises au fil du temps.
    • En utilisant un outil tel que skopeo pour copier des images manuellement à partir du référentiel source vers le référentiel miroir.

      Après avoir installé le package Skopeo RPM sur un système Red Hat Enterprise Linux (RHEL) 7 ou RHEL 8, utilisez la commande skopeo comme indiqué dans cet exemple:

      $ skopeo copy --all \
      docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \
      docker://example.io/example/ubi-minimal
      Copy to Clipboard Toggle word wrap

      Dans cet exemple, vous avez un registre d’images de conteneur nommé example.io avec un référentiel d’images nommé exemple auquel vous souhaitez copier l’image ubi9/ubi-minimal de register.access.redhat.com. Après avoir créé le registre en miroir, vous pouvez configurer votre Red Hat OpenShift Service sur AWS cluster pour rediriger les requêtes du référentiel source vers le référentiel miroir.

  2. Créer une configuration miroir de postinstallation CR, en utilisant l’un des exemples suivants:

    • Créez un ImageDigestMirrorSet ou ImageTagMirrorSet CR, au besoin, en remplaçant la source et les miroirs par vos propres paires de registre et de référentiels et images:

      apiVersion: config.openshift.io/v1 
      1
      
      kind: ImageDigestMirrorSet 
      2
      
      metadata:
        name: ubi9repo
      spec:
        imageDigestMirrors: 
      3
      
        - mirrors:
          - example.io/example/ubi-minimal 
      4
      
          - example.com/example/ubi-minimal 
      5
      
          source: registry.access.redhat.com/ubi9/ubi-minimal 
      6
      
          mirrorSourcePolicy: AllowContactingSource 
      7
      
        - mirrors:
          - mirror.example.com/redhat
          source: registry.example.com/redhat 
      8
      
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.com
          source: registry.example.com 
      9
      
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.net/image
          source: registry.example.com/example/myimage 
      10
      
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.net
          source: registry.example.com/example 
      11
      
          mirrorSourcePolicy: AllowContactingSource
        - mirrors:
          - mirror.example.net/registry-example-com
          source: registry.example.com 
      12
      
          mirrorSourcePolicy: AllowContactingSource
      Copy to Clipboard Toggle word wrap
      1
      Indique l’API à utiliser avec ce CR. Cela doit être config.openshift.io/v1.
      2
      Indique le type d’objet selon le type de traction:
      • ImageDigestMirrorSet: Pulls une image de référence digeste.
      • ImageTagMirrorSet: Pulls une image de référence de balise.
      3
      Indique le type de méthode d’extraction d’image, soit:
      • imageDigestMirrors: Utilisez pour un ImageDigestMirrorSet CR.
      • imageTagMirrors: Utilisez pour un ImageTagMirrorSet CR.
      4
      Indique le nom du registre et du référentiel d’images en miroir.
      5
      Facultatif : Indique un référentiel miroir secondaire pour chaque référentiel cible. Lorsqu’un miroir est en panne, le référentiel cible peut utiliser le miroir secondaire.
      6
      Indique la source du registre et du référentiel, qui est le référentiel auquel il est fait référence dans une spécification de tirage d’image.
      7
      Facultatif: Indique la politique de repli si l’image tire échoue:
      • AllowContactingSource: Permet de poursuivre les tentatives de tirer l’image du référentiel source. C’est la valeur par défaut.
      • JamaisContactSource: empêche les tentatives continues de tirer l’image du référentiel source.
      8
      Facultatif: Indique un espace de noms à l’intérieur d’un registre, ce qui vous permet d’utiliser n’importe quelle image dans cet espace de noms. Lorsque vous utilisez un domaine de registre comme source, l’objet est appliqué à tous les référentiels du registre.
      9
      Facultatif: Indique un registre, qui vous permet d’utiliser n’importe quelle image dans ce registre. Lorsque vous spécifiez un nom de registre, l’objet est appliqué à tous les référentiels d’un registre source à un registre miroir.
      10
      Extrait de l’image Registry.example.com/example/myimage@sha256:…​à partir du miroir miroir.example.net/image@sha256:...
      11
      Extrait l’image Registry.example.com/example/image@sha256:…​​ dans l’espace de noms du registre source à partir du miroir mirror.example.net/image@sha256:…​​.
      12
      Extrait l’image Registry.example.com/myimage@sha256 de l’exemple de registre miroir example.net/registry-example-com/myimage@sha256:…​​.
    • Créez une ressource personnalisée ImageContentSourcePolicy, remplaçant la source et les miroirs par vos propres paires et images de registre et de référentiel:

      apiVersion: operator.openshift.io/v1alpha1
      kind: ImageContentSourcePolicy
      metadata:
        name: mirror-ocp
      spec:
        repositoryDigestMirrors:
        - mirrors:
          - mirror.registry.com:443/ocp/release 
      1
      
          source: quay.io/openshift-release-dev/ocp-release 
      2
      
        - mirrors:
          - mirror.registry.com:443/ocp/release
          source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
      Copy to Clipboard Toggle word wrap
      1
      Indique le nom du registre et du référentiel d’images miroirs.
      2
      Indique le registre en ligne et le référentiel contenant le contenu qui est reflété.
  3. Créer le nouvel objet:

    $ oc create -f registryrepomirror.yaml
    Copy to Clipboard Toggle word wrap

    Après la création de l’objet, l’opérateur de configuration de machine (MCO) draine uniquement les nœuds pour les objets ImageTagMirrorSet. L’AGC ne draine pas les nœuds pour les objets ImageDigestMirrorSet et ImageContentSourcePolicy.

  4. Afin de vérifier que les paramètres de configuration en miroir sont appliqués, faites ce qui suit sur l’un des nœuds.

    1. Liste de vos nœuds:

      $ oc get node
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      NAME                           STATUS                     ROLES    AGE  VERSION
      ip-10-0-137-44.ec2.internal    Ready                      worker   7m   v1.31.3
      ip-10-0-138-148.ec2.internal   Ready                      master   11m  v1.31.3
      ip-10-0-139-122.ec2.internal   Ready                      master   11m  v1.31.3
      ip-10-0-147-35.ec2.internal    Ready                      worker   7m   v1.31.3
      ip-10-0-153-12.ec2.internal    Ready                      worker   7m   v1.31.3
      ip-10-0-154-10.ec2.internal    Ready                      master   11m  v1.31.3
      Copy to Clipboard Toggle word wrap

    2. Démarrez le processus de débogage pour accéder au nœud:

      $ oc debug node/ip-10-0-147-35.ec2.internal
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Starting pod/ip-10-0-147-35ec2internal-debug ...
      To use host binaries, run `chroot /host`
      Copy to Clipboard Toggle word wrap

    3. Changez votre répertoire root en /host:

      sh-4.2# chroot /host
      Copy to Clipboard Toggle word wrap
    4. Consultez le fichier /etc/containers/registries.conf pour vous assurer que les modifications ont été apportées:

      sh-4.2# cat /etc/containers/registries.conf
      Copy to Clipboard Toggle word wrap

      La sortie suivante représente un fichier registries.conf où des CR de configuration miroir post-installation ont été appliqués. Les deux dernières entrées sont marquées seulement digest-seulement et tag-seulement respectivement.

      Exemple de sortie

      unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
      short-name-mode = ""
      
      [[registry]]
        prefix = ""
        location = "registry.access.redhat.com/ubi9/ubi-minimal" 
      1
      
      
        [[registry.mirror]]
          location = "example.io/example/ubi-minimal" 
      2
      
          pull-from-mirror = "digest-only" 
      3
      
      
        [[registry.mirror]]
          location = "example.com/example/ubi-minimal"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com"
      
        [[registry.mirror]]
          location = "mirror.example.net/registry-example-com"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com/example"
      
        [[registry.mirror]]
          location = "mirror.example.net"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com/example/myimage"
      
        [[registry.mirror]]
          location = "mirror.example.net/image"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com"
      
        [[registry.mirror]]
          location = "mirror.example.com"
          pull-from-mirror = "digest-only"
      
      [[registry]]
        prefix = ""
        location = "registry.example.com/redhat"
      
        [[registry.mirror]]
          location = "mirror.example.com/redhat"
          pull-from-mirror = "digest-only"
      [[registry]]
        prefix = ""
        location = "registry.access.redhat.com/ubi9/ubi-minimal"
        blocked = true 
      4
      
      
        [[registry.mirror]]
          location = "example.io/example/ubi-minimal-tag"
          pull-from-mirror = "tag-only" 
      5
      Copy to Clipboard Toggle word wrap

      1
      Indique le référentiel auquel il est fait référence dans une spécification de traction.
      2
      Indique le miroir de ce référentiel.
      3
      Indique que l’image extraite du miroir est une image de référence digeste.
      4
      Indique que le paramètre NeverContactSource est défini pour ce référentiel.
      5
      Indique que l’image extraite du miroir est une image de référence de balise.
    5. Tirez une image sur le nœud de la source et vérifiez si elle est résolue par le miroir.

      sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf...
      Copy to Clipboard Toggle word wrap

Dépannage du référentiel miroir

Lorsque la procédure de mise en miroir du référentiel ne fonctionne pas comme décrit, utilisez les informations suivantes sur le fonctionnement du référentiel de miroir pour aider à résoudre le problème.

  • Le premier miroir de travail est utilisé pour fournir l’image tirée.
  • Le registre principal n’est utilisé que si aucun autre miroir ne fonctionne.
  • À partir du contexte système, les drapeaux Insecurity sont utilisés comme repli.
  • Le format du fichier /etc/containers/registries.conf a récemment changé. Il est maintenant version 2 et au format TOML.

À l’aide d’un objet ImageContentSourcePolicy (ICSP) pour configurer la mise en miroir de référentiels est une fonctionnalité obsolète. Cette fonctionnalité est toujours incluse dans Red Hat OpenShift Service sur AWS et continue d’être prise en charge; cependant, elle sera supprimée dans une future version de ce produit et n’est pas recommandée pour de nouveaux déploiements.

Les objets ICSP sont remplacés par des objets ImageDigestMirrorSet et ImageTagMirrorSet pour configurer la mise en miroir du référentiel. Lorsque vous avez des fichiers YAML existants que vous avez utilisés pour créer des objets ImageContentSourcePolicy, vous pouvez utiliser la commande oc adm migration icsp pour convertir ces fichiers en un fichier ImageDigestMirrorSet YAML. La commande met à jour l’API vers la version actuelle, modifie la valeur type à ImageDigestMirrorSet, et change spec.repositoryDigestMirrors en spec.imageDigestMirrors. Le reste du fichier n’est pas modifié.

Comme la migration ne modifie pas le fichier registries.conf, le cluster n’a pas besoin de redémarrer.

En savoir plus sur les objets ImageDigestMirrorSet ou ImageTagMirrorSet, voir "Configurer le référentiel de registre d’images" dans la section précédente.

Conditions préalables

  • Accès au cluster en tant qu’utilisateur avec le rôle dédié-admin.
  • Assurez-vous d’avoir des objets ImageContentSourcePolicy sur votre cluster.

Procédure

  1. Il suffit d’utiliser la commande suivante pour convertir un ou plusieurs fichiers ImageContentSourcePolicy YAML en fichier ImageDigestMirrorSet YAML:

    $ oc adm migrate icsp <file_name>.yaml <file_name>.yaml <file_name>.yaml --dest-dir <path_to_the_directory>
    Copy to Clipboard Toggle word wrap

    là où:

    &lt;file_name&gt;
    Indique le nom de la source ImageContentSourcePolicy YAML. Il est possible de répertorier plusieurs noms de fichiers.
    --dest-dir
    Facultatif: Spécifie un répertoire pour la sortie ImageDigestMirrorSet YAML. En cas de désinitialisation, le fichier est écrit dans le répertoire courant.

    À titre d’exemple, la commande suivante convertit les fichiers icsp.yaml et icsp-2.yaml et enregistre les nouveaux fichiers YAML dans le répertoire idms-files.

    $ oc adm migrate icsp icsp.yaml icsp-2.yaml --dest-dir idms-files
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml
    wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml
    Copy to Clipboard Toggle word wrap

  2. Créez l’objet CR en exécutant la commande suivante:

    $ oc create -f <path_to_the_directory>/<file-name>.yaml
    Copy to Clipboard Toggle word wrap

    là où:

    &lt;path_to_the_directory&gt;
    Indique le chemin vers le répertoire, si vous avez utilisé le drapeau --dest-dir.
    &lt;file_name&gt;
    Indique le nom de l’ImageDigestMirrorSet YAML.
  3. Enlevez les objets ICSP après le déploiement des objets IDMS.

Chapitre 10. Configuration d’image pour ROSA avec HCP

La procédure suivante permet de configurer les enregistrements d’images.

La ressource image.config.openshift.io/cluster contient des informations à l’échelle du cluster sur la façon de gérer les images. La ressource existe, mais elle est seulement lue et ne peut être modifiée que par des outils pris en charge comme ROSA CLI (rosa). Le nom canonique et seulement valide est cluster. Il peut être configuré dans Red Hat OpenShift Service sur les plans de contrôle hébergés par AWS via les commandes ROSA CLI (rosa).

Note

Les paramètres tels que DisableScheduledImport, MaxImagesBulkImportedPerRepository, MaxScheduledImportsPerMinute, ScheduledImageImportMinimumIntervalSeconds, InternalRegistryHostname ne sont pas configurables.

Expand
Les paramètres pour ROSA CLIDescription

registres-config-allowed-registries

Enregistrements pour lesquels des actions de traction et de poussée d’image sont autorisées. Afin de spécifier tous les sous-domaines, ajoutez le caractère générique astérisque (*) comme préfixe au nom de domaine. *.example.com, par exemple. Il est possible de spécifier un référentiel individuel au sein d’un registre. A titre d’exemple, reg1.io/myrepo/myapp:lastest. Les autres registres sont bloqués. Le format devrait être une liste séparée par les virgules des registres autorisés. A titre d’exemple, allow.io, allow.io2.

registres-config-insecure-registres

Les registres qui n’ont pas de certificat TLS valide ou ne prennent en charge que les connexions HTTP. Afin de spécifier tous les sous-domaines, ajoutez le caractère générique astérisque (*) comme préfixe au nom de domaine. *.example.com, par exemple. Il est possible de spécifier un référentiel individuel au sein d’un registre. A titre d’exemple, reg1.io/myrepo/myapp:lastest. Le format devrait être une liste séparée par les virgules des registres non sécurisés. A titre d’exemple, insecure.io, insecure.io2.

registres-config-bloqués

Enregistrements pour lesquels les actions de traction et de poussée d’image sont refusées. Afin de spécifier tous les sous-domaines, ajoutez le caractère générique astérisque (*) comme préfixe au nom de domaine. *.example.com, par exemple. Il est possible de spécifier un référentiel individuel au sein d’un registre. A titre d’exemple, reg1.io/myrepo/myapp:lastest. Les autres registres sont autorisés. Le format devrait être une liste séparée par les virgules des registres bloqués. A titre d’exemple, Block.io, Block.io2.

registre-config-allowed-registries-for-import

Contient une configuration qui détermine comment le temps d’exécution du conteneur devrait traiter les registres individuels lors de l’accès aux images pour les builds et les pods. C’est le cas, par exemple, d’autoriser ou non l’accès non sécurisé. Il ne contient pas de configuration pour le registre interne des clusters. Limite les enregistrements d’images de conteneur à partir desquels les utilisateurs normaux peuvent importer des images. Le format doit être une liste séparée par virgule de domainName:insecure. Domainname spécifie un nom de domaine pour le registre. l’insécurité indique si le registre est sécurisé ou non sécurisé.

Greffe-config-additional-trusted-ca

Fichier JSON contenant le nom d’hôte du registre comme clé, et le certificat encodé PEM comme valeur, pour chaque CA de registre supplémentaire à faire confiance.

Avertissement

Lorsque le paramètre d’enregistrement autorisé est défini, tous les registres sont bloqués à moins d’être explicitement listés. Afin d’éviter la défaillance de la pod, une liste d’enregistrements Red Hat est automatiquement classée sur la liste blanche, car elles sont requises par les images de charge utile dans votre environnement. La liste actuelle se compose de image-registry.openshift-image-registry.svc:5000,quay.io,registry.redhat.io et elle est également visible lors de l’exécution de la commande de cluster rosa.

Lors de la création de clusters, vous pouvez configurer les paramètres de registre d’images. Les nœuds du cluster utiliseront la configuration requise après la création.

Procédure

  • Créez ROSA avec des clusters HCP avec le registre d’images en exécutant la commande suivante:

    $ rosa create cluster —cluster-name=<cluster_name> --sts --mode=auto \
       --hosted-cp --operator-roles-prefix <operator_role_prefix> \
       --oidc-config-id <id_of_oidc_configuration> \
       --subnet-ids=<public_subnet_id>,<private_subnet_id> \
       --registry-config-insecure-registries <insecure_registries> \
       --registry-config-allowed-registries <allowed_registries> \
       --registry-config-allowed-registries-for-import <registry_name:insecure> \
       --registry-config-additional-trusted-ca <additional_trusted_ca_file>
    Copy to Clipboard Toggle word wrap
    Note

    Lorsque vous utilisez les Registres autorisés, les Registres bloqués ou le paramètre InsécuritéRegistries, vous pouvez spécifier un référentiel individuel au sein d’un registre. Exemple: reg1.io/myrepo/myapp:lastest.

    Évitez les registres externes non sécurisés pour réduire les risques de sécurité possibles. Les paramètres autorisésLes registres, les registres bloqués sont mutuellement exclusifs.

La vérification

  1. Exécutez la commande rosascript pour vérifier que votre registre d’images est activé en exécutant la commande suivante:

    $ rosa describe cluster --cluster=<cluster_name>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Name:                       rosa-hcp-test
    Domain Prefix:              rosa-hcp-test
    Display Name:               rosa-hcp-test
    ID:                         <cluster_hcp_id>
    External ID:                <cluster_hcp_id>
    Control Plane:              ROSA Service Hosted
    OpenShift Version:          4.Y.Z
    Channel Group:              stable
    DNS:                        <dns>
    AWS Account:                <aws_id>
    AWS Billing Account:        <aws_id>
    API URL:                    <ocm_api>
    Console URL:
    Region:                     us-east-1
    Availability:
     - Control Plane:           MultiAZ
     - Data Plane:              SingleAZ
    Nodes:
     - Compute (desired):       2
     - Compute (current):       2
    Network:
     - Type:                    OVNKubernetes
     - Service CIDR:            <service_cidr>
     - Machine CIDR:            <machine_cidr>
     - Pod CIDR:                <pod_cidr>
     - Host Prefix:             /23
     - Subnets:                 <subnet_ids>
    EC2 Metadata Http Tokens:   optional
    Role (STS) ARN:             arn:aws:iam::<aws_id>:role/<account_roles_prefix>-HCP-ROSA-Installer-Role
    Support Role ARN:           arn:aws:iam::<aws_id>:role/<account_roles_prefix>-HCP-ROSA-Support-Role
    Instance IAM Roles:
     - Worker:                  arn:aws:iam::<aws_id>:role/<account_roles_prefix>-HCP-ROSA-Worker-Role
    Operator IAM Roles:
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-kube-system-capa-controller-manager
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-kube-system-control-plane-operator
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-kube-system-kms-provider
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-image-registry-installer-cloud-cred
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-ingress-operator-cloud-credentials
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-cluster-csi-drivers-ebs-cloud-credent
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-cloud-network-config-controller-cloud
    Managed Policies:           Yes
    State:                      ready
    Private:                    No
    Delete Protection:          Disabled
    Created:                    Oct 01 2030 09:48:52 UTC
    User Workload Monitoring:   Enabled
    OIDC Endpoint URL:          https://<endpoint> (Managed)
    Audit Log Forwarding:       Disabled
    External Authentication:    Disabled
    Etcd Encryption:            Disabled
    Registry Configuration:
     - Allowed Registries: <allowed_registry> 
    1
     
    2
    
     - Insecure Registries: <insecure_registry> 
    3
    
     - Allowed Registries for Import: 
    4
    
        - Domain Name: <domain_name> 
    5
    
        - Insecure: true 
    6
    
     - Platform Allowlist: <platform_allowlist_id> 
    7
    
        - Registries:      <list_of_registries> 
    8
    
     - Additional Trusted CA: 
    9
    
        - <registry_name> : REDACTED
    Copy to Clipboard Toggle word wrap

    1
    Inscriptions autorisées: Une liste séparée par les virgules d’enregistrements pour lesquels des actions de traction et de poussée d’image sont autorisées.
    2
    Registres bloqués: Une liste séparée par les virgules d’enregistrements pour lesquels les actions de traction et de poussée d’image sont bloquées. Les paramètres autorisésLes registres, les registres bloqués sont mutuellement exclusifs.
    3
    Les registres non sécurisés : une liste séparée par des virgules d’enregistrements qui n’ont pas de certificat TLS valide ou ne prennent en charge que les connexions HTTP.
    4
    Enregistrement autorisé pour l’importation: limite les registres d’image du conteneur à partir desquels les utilisateurs normaux peuvent importer des images. Le format doit être une liste séparée par virgule de domainName:insecure.
    5
    Domainname: Spécifie un nom de domaine pour le registre.
    6
    insécurité : Indique si le registre est sécurisé ou non sécurisé.
    7
    Liste d’autorisation de plate-forme: Une référence à l’identifiant de la liste des registres qui doivent être inscrits sur la liste blanche pour que la plate-forme fonctionne.
    8
    Registres: La liste des registres qui doivent être inscrits sur la liste blanche pour que la plate-forme fonctionne.
    9
    CA fiduciaire supplémentaire: Un fichier JSON contenant le nom d’hôte du registre comme clé, et le certificat encodé PEM comme valeur, pour chaque CA de registre supplémentaire à faire confiance.
  2. Énumérez vos nœuds pour vérifier les modifications appliquées en exécutant la commande suivante:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME                                         STATUS                     ROLES                  AGE   VERSION
    ip-10-0-137-182.us-east-2.compute.internal   Ready,SchedulingDisabled   worker                 65m   v1.31.3
    ip-10-0-188-96.us-east-2.compute.internal    Ready                      worker                 65m   v1.31.3
    ip-10-0-200-59.us-east-2.compute.internal    Ready                      worker                 63m   v1.31.3
    Copy to Clipboard Toggle word wrap

La configuration du registre des images peut être modifiée avec la commande rosa edit.

Avertissement

Lorsque le paramètre d’enregistrement autorisé est défini, tous les registres sont bloqués à moins d’être explicitement listés. Afin d’éviter la défaillance de la pod, une liste d’enregistrements Red Hat est automatiquement classée sur la liste blanche, car elles sont requises par les images de charge utile dans votre environnement. La liste actuelle se compose de image-registry.openshift-image-registry.svc:5000,quay.io,registry.redhat.io et elle est également visible lors de l’exécution de la commande de cluster rosa.

Note

Il est possible de modifier n’importe quel paramètre lié au registre, ce qui déclenchera un déploiement dans tous les pools de machines; tous les nœuds de pool de machine seront recréés, après le vidage de la pod de chaque nœud.

Procédure

  • Actualisez ou modifiez le registre d’images pour le cluster en exécutant la commande suivante:

    $ rosa edit cluster --registry-config-insecure-registries <insecure_registries> \
       --registry-config-allowed-registries <allowed_registries> \
       --registry-config-allowed-registries-for-import <registry_name:insecure> \
       --registry-config-additional-trusted-ca <additional_trusted_ca_file>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    ? Changing any registry related parameter will trigger a rollout across all machinepools
    (all machinepool nodes will be recreated, following pod draining from each node).
    Do you want to proceed? Yes
    I: Updated cluster '<cluster_name>'
    Copy to Clipboard Toggle word wrap

La vérification

  • Exécutez à nouveau la commande de description rosa, pour voir si les modifications que vous avez apportées à votre registre d’images sont mises à jour en exécutant la commande suivante:

    $ rosa describe cluster --cluster=<cluster_name>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Name:                       rosa-hcp-test
    Domain Prefix:              rosa-hcp-test
    Display Name:               rosa-hcp-test
    ID:                         <cluster_hcp_id>
    External ID:                <cluster_hcp_id>
    Control Plane:              ROSA Service Hosted
    OpenShift Version:          4.Y.Z
    Channel Group:              stable
    DNS:                        <dns>
    AWS Account:                <aws_id>
    AWS Billing Account:        <aws_id>
    API URL:                    <ocm_api>
    Console URL:
    Region:                     us-east-1
    Availability:
     - Control Plane:           MultiAZ
     - Data Plane:              SingleAZ
    
    Nodes:
     - Compute (desired):       2
     - Compute (current):       2
    Network:
     - Type:                    OVNKubernetes
     - Service CIDR:            <service_cidr>
     - Machine CIDR:            <machine_cidr>
     - Pod CIDR:                <pod_cidr>
     - Host Prefix:             /23
     - Subnets:                 <subnet_ids>
    EC2 Metadata Http Tokens:   optional
    Role (STS) ARN:             arn:aws:iam::<aws_id>:role/<account_roles_prefix>-HCP-ROSA-Installer-Role
    Support Role ARN:           arn:aws:iam::<aws_id>:role/<account_roles_prefix>-HCP-ROSA-Support-Role
    Instance IAM Roles:
     - Worker:                  arn:aws:iam::<aws_id>:role/<account_roles_prefix>-HCP-ROSA-Worker-Role
    Operator IAM Roles:
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-kube-system-capa-controller-manager
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-kube-system-control-plane-operator
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-kube-system-kms-provider
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-image-registry-installer-cloud-cred
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-ingress-operator-cloud-credentials
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-cluster-csi-drivers-ebs-cloud-credent
     - arn:aws:iam::<aws_id>:role/<operator_roles_prefix>-openshift-cloud-network-config-controller-cloud
    Managed Policies:           Yes
    State:                      ready
    Private:                    No
    Delete Protection:          Disabled
    Created:                    Oct 01 2030 09:48:52 UTC
    User Workload Monitoring:   Enabled
    OIDC Endpoint URL:          https://<endpoint> (Managed)
    Audit Log Forwarding:       Disabled
    External Authentication:    Disabled
    Etcd Encryption:            Disabled
    Registry Configuration:
     - Allowed Registries: <allowed_registry> 
    1
     
    2
    
     - Insecure Registries: <insecure_registry> 
    3
    
     - Allowed Registries for Import: 
    4
    
        - Domain Name: <domain_name> 
    5
    
        - Insecure: true 
    6
    
     - Platform Allowlist: <platform_allowlist_id> 
    7
    
        - Registries:      <list_of_registries> 
    8
    
     - Additional Trusted CA: 
    9
    
        - <registry_name> : REDACTED
    Copy to Clipboard Toggle word wrap

    1
    Inscriptions autorisées: Une liste séparée par les virgules d’enregistrements pour lesquels des actions de traction et de poussée d’image sont autorisées.
    2
    Registres bloqués: Une liste séparée par les virgules d’enregistrements pour lesquels les actions de traction et de poussée d’image sont bloquées. Les paramètres autorisésLes registres, les registres bloqués sont mutuellement exclusifs.
    3
    Les registres non sécurisés : une liste séparée par des virgules d’enregistrements qui n’ont pas de certificat TLS valide ou ne prennent en charge que les connexions HTTP.
    4
    Enregistrement autorisé pour l’importation: limite les registres d’image du conteneur à partir desquels les utilisateurs normaux peuvent importer des images. Le format doit être une liste séparée par virgule de domainName:insecure.
    5
    Domainname: Spécifie un nom de domaine pour le registre.
    6
    insécurité : Indique si le registre est sécurisé ou non sécurisé.
    7
    Liste d’autorisation de plate-forme: Une référence à l’identifiant de la liste des registres qui doivent être inscrits sur la liste blanche pour que la plate-forme fonctionne.
    8
    Registres: La liste des registres qui doivent être inscrits sur la liste blanche pour que la plate-forme fonctionne.
    9
    CA fiduciaire supplémentaire: Un fichier JSON contenant le nom d’hôte du registre comme clé, et le certificat encodé PEM comme valeur, pour chaque CA de registre supplémentaire à faire confiance.

La liste des registres Red Hat est automatiquement autorisée et elle est visible lors de l’exécution du cluster de description rosa. Cette liste peut être mise à jour périodiquement pour s’assurer que la plate-forme peut être exploitée correctement. Les clusters impactés recevront une notification avec le nouvel ID de liste d’autorisation. Dans de tels cas, l’utilisateur doit utiliser ce paramètre pour mettre à jour de l’identifiant attendu précédent vers l’ID nouvellement attendu. Actualisez ou modifiez le registre d’images pour le cluster en exécutant la commande suivante:

$ rosa edit cluster --registry-config-platform-allowlist <newID>
Copy to Clipboard Toggle word wrap

Chapitre 11. En utilisant des images

11.1. Aperçu des images

Découvrez les sujets suivants pour découvrir les différentes images Source-to-Image (S2I), base de données et autres images de conteneurs disponibles pour Red Hat OpenShift Service sur les utilisateurs AWS.

Les images du conteneur officiel de Red Hat sont fournies dans le Registre Red Hat sur Registry.redhat.io. Le service OpenShift Red Hat sur les images S2I, base de données et Jenkins prises en charge d’AWS sont fournis dans le référentiel openshift4 du registre Red Hat Quay. À titre d’exemple, quay.io/openshift- release-dev/ocp-v4.0-&lt;address&gt; est le nom de l’image OpenShift Application Platform.

Les images du middleware xPaaS sont fournies dans leurs référentiels de produits respectifs sur le Registre Red Hat mais suffisantes avec un -openshift. A titre d’exemple, Registry.redhat.io/jboss-eap-6/eap64-openshift est le nom de l’image JBoss EAP.

Les images de Red Hat prises en charge dans cette section sont décrites dans la section Images Conteneurs du catalogue de l’écosystème Red Hat. Chaque version de chaque image vous permet de trouver des détails sur son contenu et son utilisation. Consultez ou recherchez l’image qui vous intéresse.

Important

Les nouvelles versions d’images de conteneurs ne sont pas compatibles avec les versions antérieures de Red Hat OpenShift Service sur AWS. La vérification et l’utilisation de la version correcte des images de conteneur, en fonction de votre version de Red Hat OpenShift Service sur AWS.

11.2. La source à l’image

Les images Red Hat Software Collections peuvent être utilisées comme base pour les applications qui s’appuient sur des environnements d’exécution spécifiques tels que Node.js, Perl ou Python. La documentation Red Hat Java Source-to-Image pour OpenShift peut être utilisée comme référence pour les environnements d’exécution utilisant Java. Les versions spéciales de certaines de ces images de base d’exécution sont appelées images Source-à-Image (S2I). Avec les images S2I, vous pouvez insérer votre code dans un environnement d’image de base prêt à exécuter ce code.

Les images S2I incluent:

  • .NET
  • Java
  • Allez-y
  • À propos de Node.js
  • À propos de Perl
  • À PROPOS DE PHP
  • À propos de Python
  • ♪ Ruby ♪

Les images S2I sont disponibles pour vous permettre d’utiliser directement à partir du service Red Hat OpenShift sur la console web AWS selon la procédure suivante:

  1. Connectez-vous à Red Hat OpenShift Service sur la console web AWS à l’aide de vos identifiants de connexion. La vue par défaut du Red Hat OpenShift Service sur la console web AWS est la perspective administrateur.
  2. Le commutateur de perspective est utilisé pour passer à la perspective Développeur.
  3. Dans la vue +Ajouter, utilisez la liste déroulante Projet pour sélectionner un projet existant ou créer un nouveau projet.
  4. Cliquez sur Tous les services dans la tuile du catalogue des développeurs.
  5. Cliquez sur Builder Images sous Type pour voir les images S2I disponibles.

Les images S2I sont également disponibles via l’opérateur d’échantillons de clusters.

11.2.1. Aperçu du processus de création de source à image

La source à image (S2I) produit des images prêtes à être exécutées en injectant du code source dans un conteneur qui prépare ce code source à exécuter. Il effectue les étapes suivantes:

  1. Exécute la commande FROM &lt;builder image&gt;
  2. Copie le code source à un emplacement défini dans l’image du constructeur
  3. Exécute le script assembler dans l’image du constructeur
  4. Définit le script d’exécution dans l’image du constructeur en tant que commande par défaut

Buildah crée alors l’image du conteneur.

11.3. Personnalisation des images source-à-image

Les images source à image (S2I) incluent l’assemblage et l’exécution de scripts, mais le comportement par défaut de ces scripts ne convient pas à tous les utilisateurs. Il est possible de personnaliser le comportement d’un constructeur S2I qui inclut des scripts par défaut.

11.3.1. Invoquer des scripts intégrés dans une image

Les images du constructeur fournissent leur propre version des scripts source à image (S2I) qui couvrent les cas d’utilisation les plus courants. Dans le cas où ces scripts ne répondent pas à vos besoins, S2I fournit un moyen de les remplacer en ajoutant des scripts personnalisés dans le répertoire .s2i/bin. Cependant, en faisant cela, vous remplacez complètement les scripts standard. Dans certains cas, le remplacement des scripts est acceptable, mais dans d’autres scénarios, vous pouvez exécuter quelques commandes avant ou après les scripts tout en conservant la logique du script fourni dans l’image. Afin de réutiliser les scripts standard, vous pouvez créer un script d’emballage qui exécute une logique personnalisée et les délégués travaillent davantage aux scripts par défaut de l’image.

Procédure

  1. Examinez la valeur de l’étiquette io.openshift.s2i.scripts-url pour déterminer l’emplacement des scripts à l’intérieur de l’image du constructeur:

    $ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    image:///usr/libexec/s2i
    Copy to Clipboard Toggle word wrap

    L’image du constructeur wildfly/wildfly-centos7 a été inspectée et vous avez découvert que les scripts se trouvent dans le répertoire /usr/libexec/s2i.

  2. Créez un script qui inclut une invocation de l’un des scripts standard enveloppés dans d’autres commandes:

    .s2i/bin/assembler le script

    #!/bin/bash
    echo "Before assembling"
    
    /usr/libexec/s2i/assemble
    rc=$?
    
    if [ $rc -eq 0 ]; then
        echo "After successful assembling"
    else
        echo "After failed assembling"
    fi
    
    exit $rc
    Copy to Clipboard Toggle word wrap

    Cet exemple montre un script d’assemblage personnalisé qui imprime le message, exécute le script d’assemblage standard à partir de l’image et imprime un autre message en fonction du code de sortie du script assembler.

    Important

    Lors de l’emballage du script d’exécution, vous devez utiliser exec pour l’invoquer afin de s’assurer que les signaux sont traités correctement. L’utilisation d’exec empêche également la possibilité d’exécuter des commandes supplémentaires après avoir invoqué le script d’exécution de l’image par défaut.

    .s2i/bin/run script

    #!/bin/bash
    echo "Before running application"
    exec /usr/libexec/s2i/run
    Copy to Clipboard Toggle word wrap

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

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