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
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>
:
Description | Exemple |
---|---|
Révision |
|
L'architecture |
|
Image de base |
|
Dernière version (potentiellement instable) |
|
Dernière écurie |
|
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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc tag <source> <destination>
$ oc tag <source> <destination>
Par exemple, pour configurer la balise
ruby
image streamstatic-2.0
afin qu'elle fasse toujours référence à l'image actuelle pour la baliseruby
image stream2.0
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc tag ruby:2.0 ruby:static-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'imagesruby
. La nouvelle balise fait directement référence à l'identifiant de l'image que la balise du flux d'imagesruby:2.0
pointait au moment de l'exécution deoc 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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc tag --alias=true <source> <destination> $ oc tag --alias=true <source> <destination>
oc tag --alias=true <source> <destination> $ oc tag --alias=true <source> <destination>
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 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete istag/ruby:latest
$ oc delete istag/ruby:latest
ou :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc tag -d ruby:latest
$ 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.
Type de référence | Description |
---|---|
|
Un site |
|
Un site |
|
Un |
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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <image_stream_name>:<tag>
<image_stream_name>:<tag>
Pour référencer une image pour un flux d'images et un ID d'image
sha
donnés, utilisezImageStreamImage
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow <image_stream_name>@<id>
<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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift/ruby-20-centos7:2.0
openshift/ruby-20-centos7:2.0
NoteSi 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 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow registry.redhat.io/rhel7:latest
registry.redhat.io/rhel7:latest
Ou une image avec un résumé :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e
centos/ruby-22-centos7@sha256:3a335d7d8a452970c5b4054ad7118ff134b3a6b50a2bb6d0c07c746e8986b28e