5.2. Marquage des images

Les sections suivantes fournissent une vue d'ensemble et des instructions pour l'utilisation des balises d'image dans le contexte des images de conteneur pour travailler avec les flux d'images OpenShift Container Platform et leurs balises.

5.2.1. Balises d'image

Une balise d'image est une étiquette appliquée à une image conteneur dans un référentiel qui distingue une image spécifique des autres images dans un flux d'images. Généralement, la balise représente une sorte de numéro de version. Par exemple, ici :v3.11.59-2 est la balise :

registry.access.redhat.com/openshift3/jenkins-2-rhel7:v3.11.59-2

Vous pouvez ajouter des balises supplémentaires à une image. Par exemple, une image peut se voir attribuer les balises :v3.11.59-2 et :latest.

OpenShift Container Platform propose la commande oc tag, qui est similaire à la commande docker tag, mais qui opère sur les flux d'images au lieu d'agir directement sur les images.

5.2.2. Conventions relatives aux balises d'image

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

Si le nom d'une balise contient trop d'informations, comme v2.0.1-may-2019, la balise pointe vers une seule révision de l'image et n'est jamais mise à jour. En utilisant les options d'élagage par défaut, une telle image n'est jamais supprimée. Dans les très grands clusters, le schéma de création de nouvelles balises pour chaque image révisée pourrait éventuellement remplir le datastore etcd avec des métadonnées de balises excédentaires pour des images qui sont dépassées depuis longtemps.

Si la balise est nommée v2.0, les révisions d'images sont plus probables. L'historique de la balise est donc plus long et, par conséquent, l'élagueur d'images est plus enclin à supprimer les images anciennes et inutilisées.

Bien que la convention de dénomination des balises soit laissée à votre discrétion, voici quelques exemples au format <image_name>:<image_tag>:

Tableau 5.1. Conventions de dénomination des balises d'image

DescriptionExemple

Révision

myimage:v2.0.1

L'architecture

myimage:v2.0-x86_64

Image de base

myimage:v1.2-centos7

Dernière version (potentiellement instable)

myimage:latest

Dernière écurie

myimage:stable

Si vous avez besoin de dates dans les noms de balises, inspectez périodiquement les images anciennes et non prises en charge, ainsi que istags, et supprimez-les. Dans le cas contraire, vous risquez d'être confronté à une utilisation accrue des ressources en raison de la conservation d'anciennes images.

5.2.3. Ajouter des balises aux flux d'images

Un flux d'images dans OpenShift Container Platform comprend zéro ou plusieurs images de conteneurs identifiées par des balises.

Il existe différents types de balises. Le comportement par défaut utilise une balise permanent, qui pointe vers une image spécifique dans le temps. Si la balise permanent est utilisée et que la source change, la balise ne change pas pour la destination.

Une balise tracking signifie que les métadonnées de la balise de destination sont mises à jour lors de l'importation de la balise source.

Procédure

  • Vous pouvez ajouter des balises à un flux d'images à l'aide de la commande oc tag:

    $ oc tag <source> <destination>

    Par exemple, pour configurer la balise ruby image stream static-2.0 afin qu'elle fasse toujours référence à l'image actuelle pour la balise ruby image stream 2.0:

    $ oc tag ruby:2.0 ruby:static-2.0

    Cette opération crée une nouvelle balise de flux d'images nommée static-2.0 dans le flux d'images ruby. La nouvelle balise fait directement référence à l'identifiant de l'image que la balise du flux d'images ruby:2.0 pointait au moment de l'exécution de oc tag, et l'image qu'elle pointe ne change jamais.

  • Pour 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> $ oc tag --alias=true <source> <destination>
Note

Utilisez une balise de suivi pour créer des alias permanents, par exemple latest ou stable. La balise ne fonctionne correctement qu'à l'intérieur d'un seul flux d'images. Toute tentative de création d'un alias entre flux d'images produit une erreur.

  • Vous pouvez également ajouter l'indicateur --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'option --reference crée une balise de flux d'images qui n'est pas importée. La balise pointe vers l'emplacement de la source, de manière permanente.

    Si vous souhaitez demander à OpenShift Container Platform de toujours récupérer l'image étiquetée à partir du registre intégré, utilisez --reference-policy=local. Le registre utilise la fonction pull-through pour servir l'image au client. Par défaut, les blobs d'image sont mis en miroir localement par le registre. Ils peuvent donc être extraits plus rapidement la prochaine fois qu'ils sont nécessaires. Ce drapeau permet également d'extraire des registres non sécurisés sans avoir à fournir --insecure-registry à l'exécution du conteneur tant que le flux d'images a une annotation non sécurisée ou que la balise a une politique d'importation non sécurisée.

5.2.4. Suppression des balises dans les flux d'images

Vous pouvez supprimer les balises d'un flux d'images.

Procédure

  • Pour supprimer complètement une balise d'un flux d'images, exécutez :

    $ oc delete istag/ruby:latest

    ou :

    $ oc tag -d ruby:latest

5.2.5. Référencement d'images dans les flux d'images

Vous pouvez utiliser des balises pour référencer des images dans des flux d'images à l'aide des types de référence suivants.

Tableau 5.2. Types de référence de flux d'images

Type de référenceDescription

ImageStreamTag

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

ImageStreamImage

Un site ImageStreamImage est utilisé pour référencer ou récupérer une image pour un flux d'images et un identifiant sha donnés.

DockerImage

Un DockerImage est utilisé pour référencer ou récupérer une image pour un registre externe donné. Il utilise le nom standard de Docker pull specification.

Lorsque vous consultez des exemples de définitions de flux d'images, vous pouvez remarquer qu'ils contiennent des définitions de ImageStreamTag et des références à DockerImage, mais rien concernant ImageStreamImage.

En effet, les objets ImageStreamImage sont automatiquement créés dans OpenShift Container Platform lorsque vous importez ou marquez une image dans le flux d'images. Vous ne devriez 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

  • Pour référencer une image pour un flux d'images et une balise donnés, utilisez ImageStreamTag:

    <image_stream_name>:<tag>
  • Pour référencer une image pour un flux d'images et un ID d'image sha donnés, utilisez ImageStreamImage:

    <image_stream_name>@<id>

    Le site <id> est un identifiant immuable pour une image spécifique, également appelé "digest".

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

    openshift/ruby-20-centos7:2.0
    Note

    Si aucune balise n'est spécifiée, on suppose que la balise latest est utilisée.

    Vous pouvez également faire référence à un registre tiers :

    registry.redhat.io/rhel7:latest

    Ou une image avec un résumé :

    centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e