5.4. Changements importants dans les images OpenShift Jenkins
OpenShift Container Platform 4.11 déplace les images OpenShift Jenkins et OpenShift Agent Base vers le dépôt ocp-tools-4
à l'adresse registry.redhat.io
. Elle supprime également les images OpenShift Jenkins Maven et NodeJS Agent de son payload :
-
OpenShift Container Platform 4.11 déplace les images OpenShift Jenkins et OpenShift Agent Base vers le dépôt
ocp-tools-4
à l'adresseregistry.redhat.io
afin que Red Hat puisse produire et mettre à jour les images en dehors du cycle de vie d'OpenShift Container Platform. Auparavant, ces images se trouvaient dans la charge utile d'installation d'OpenShift Container Platform et dans le dépôtopenshift4
à l'adresseregistry.redhat.io
. -
OpenShift Container Platform 4.10 a déprécié les images OpenShift Jenkins Maven et NodeJS Agent. OpenShift Container Platform 4.11 supprime ces images de sa charge utile. Red Hat ne produit plus ces images et elles ne sont pas disponibles dans le dépôt
ocp-tools-4
à l'adresseregistry.redhat.io
. Red Hat maintient les versions 4.10 et antérieures de ces images pour toutes les corrections de bogues importantes ou les CVE de sécurité, en suivant la politique de cycle de vie d'OpenShift Container Platform.
Ces changements supportent la recommandation d'OpenShift Container Platform 4.10 d'utiliser plusieurs Pod Templates avec le plugin Jenkins Kubernetes.
5.4.1. Relocalisation des images OpenShift Jenkins Copier lienLien copié sur presse-papiers!
OpenShift Container Platform 4.11 apporte des changements significatifs à l'emplacement et à la disponibilité d'images OpenShift Jenkins spécifiques. En outre, vous pouvez configurer quand et comment mettre à jour ces images.
Qu'est-ce qui reste inchangé dans les images OpenShift Jenkins ?
-
Le Cluster Samples Operator gère les objets
ImageStream
etTemplate
pour faire fonctionner les images OpenShift Jenkins. -
Par défaut, l'objet Jenkins
DeploymentConfig
du modèle de pod Jenkins déclenche un redéploiement lorsque l'image Jenkins change. Par défaut, cette image est référencée par la balisejenkins:2
image stream de Jenkins image stream dans l'espace de nomsopenshift
dans le fichier YAMLImageStream
dans la charge utile de l'opérateur Samples. -
Si vous mettez à jour OpenShift Container Platform 4.10 et antérieures vers 4.11, les modèles de pods dépréciés
maven
etnodejs
sont toujours dans la configuration de l'image par défaut. -
Si vous mettez à jour OpenShift Container Platform 4.10 et précédentes vers 4.11, les flux d'images
jenkins-agent-maven
etjenkins-agent-nodejs
existent toujours dans votre cluster. Pour maintenir ces flux d'images, consultez la section suivante : " Que se passe-t-il avec les flux d'imagesjenkins-agent-maven
etjenkins-agent-nodejs
dans l'espace de nomsopenshift
?
Quels sont les changements dans la matrice de support de l'image OpenShift Jenkins ?
Chaque nouvelle image du dépôt ocp-tools-4
dans le registre registry.redhat.io
prend en charge plusieurs versions d'OpenShift Container Platform. Lorsque Red Hat met à jour l'une de ces nouvelles images, elle est simultanément disponible pour toutes les versions. Cette disponibilité est idéale lorsque Red Hat met à jour une image en réponse à un avis de sécurité. Dans un premier temps, ce changement s'applique à OpenShift Container Platform 4.11 et aux versions ultérieures. Il est prévu que ce changement s'applique éventuellement à OpenShift Container Platform 4.9 et aux versions ultérieures.
Auparavant, chaque image Jenkins ne prenait en charge qu'une seule version d'OpenShift Container Platform et Red Hat pouvait mettre à jour ces images de manière séquentielle au fil du temps.
Quels sont les ajouts apportés aux objets ImageStream et ImageStreamTag de OpenShift Jenkins et Jenkins Agent Base ?
En passant d'un flux d'images in-payload à un flux d'images qui fait référence à des images non-payload, OpenShift Container Platform peut définir des balises de flux d'images supplémentaires. Red Hat a créé une série de nouvelles balises de flux d'images pour compléter les balises de flux d'images "value": "jenkins:2"
et "value": "image-registry.openshift-image-registry.svc:5000/openshift/jenkins-agent-base-rhel8:latest"
existantes dans OpenShift Container Platform 4.10 et les versions antérieures. Ces nouvelles balises de flux d'images répondent à certaines demandes d'amélioration de la gestion des flux d'images liés à Jenkins.
A propos des nouvelles balises de flux d'images :
ocp-upgrade-redeploy
-
Pour mettre à jour votre image Jenkins lorsque vous mettez à jour OpenShift Container Platform, utilisez cette balise image stream dans votre configuration de déploiement Jenkins. Cette balise de flux d'images correspond à la balise de flux d'images existante
2
du flux d'imagesjenkins
et à la balise de flux d'imageslatest
du flux d'imagesjenkins-agent-base-rhel8
. Elle utilise une balise d'image spécifique à un seul SHA ou résumé d'image. Lorsque l'imageocp-tools-4
change, comme pour les avis de sécurité de Jenkins, Red Hat Engineering met à jour la charge utile Cluster Samples Operator. user-maintained-upgrade-redeploy
-
Pour redéployer manuellement Jenkins après avoir mis à jour OpenShift Container Platform, utilisez cette balise de flux d'images dans votre configuration de déploiement Jenkins. Cette balise de flux d'images utilise l'indicateur de version d'image le moins spécifique disponible. Lorsque vous redéployez Jenkins, exécutez la commande suivante :
$ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift
. Lorsque vous exécutez cette commande, le contrôleur de la plate-forme OpenShift ContainerImageStream
accède au registre d'imagesregistry.redhat.io
et stocke toutes les images mises à jour dans l'emplacement du registre d'images OpenShift pour cet objet JenkinsImageStreamTag
. Dans le cas contraire, si vous n'exécutez pas cette commande, votre configuration de déploiement Jenkins ne déclenche pas de redéploiement. scheduled-upgrade-redeploy
- Pour redéployer automatiquement la dernière version de l'image Jenkins lorsqu'elle est publiée, utilisez cette balise de flux d'images dans votre configuration de déploiement Jenkins. Cette balise de flux d'images utilise la fonction d'importation périodique des balises de flux d'images du contrôleur de flux d'images d'OpenShift Container Platform, qui vérifie les modifications apportées à l'image de référence. Si l'image change, par exemple en raison d'un récent avis de sécurité Jenkins, OpenShift Container Platform déclenche un redéploiement de votre configuration de déploiement Jenkins. Voir "Configuration de l'importation périodique des balises de flux d'images" dans le document suivant "Ressources supplémentaires"
Que se passe-t-il avec les flux d'images jenkins-agent-maven
et jenkins-agent-nodejs
dans l'espace de noms openshift
?
Les images OpenShift Jenkins Maven et NodeJS Agent pour OpenShift Container Platform ont été dépréciées en 4.10, et sont supprimées du payload d'installation d'OpenShift Container Platform en 4.11. Elles n'ont pas d'alternatives définies dans le référentiel ocp-tools-4
. Cependant, vous pouvez contourner ce problème en utilisant le modèle de sidecar décrit dans la rubrique "Jenkins agent" mentionnée dans la section suivante "Ressources supplémentaires".
Cependant, le Cluster Samples Operator ne supprime pas les flux d'images jenkins-agent-maven
et jenkins-agent-nodejs
créés par des versions antérieures, qui pointent vers les balises des images payantes OpenShift Container Platform respectives sur registry.redhat.io
. Par conséquent, vous pouvez extraire les mises à jour de ces images en exécutant les commandes suivantes :
oc import-image jenkins-agent-nodejs -n openshift
$ oc import-image jenkins-agent-nodejs -n openshift
oc import-image jenkins-agent-maven -n openshift
$ oc import-image jenkins-agent-maven -n openshift
5.4.2. Personnalisation de la balise Jenkins image stream Copier lienLien copié sur presse-papiers!
Pour remplacer le comportement de mise à niveau par défaut et contrôler la manière dont l'image Jenkins est mise à niveau, vous définissez la valeur de la balise de flux d'images que vos configurations de déploiement Jenkins utilisent.
Le comportement de mise à niveau par défaut est celui qui existait lorsque l'image Jenkins faisait partie de la charge utile d'installation. Les noms des balises de flux d'images, 2
et ocp-upgrade-redeploy
, dans le fichier de flux d'images jenkins-rhel.json
utilisent des références d'images spécifiques à SHA. Par conséquent, lorsque ces balises sont mises à jour avec un nouveau SHA, le contrôleur de changement d'image d'OpenShift Container Platform redéploie automatiquement la configuration de déploiement Jenkins à partir des modèles associés, tels que jenkins-ephemeral.json
ou jenkins-persistent.json
.
Pour les nouveaux déploiements, afin de remplacer cette valeur par défaut, vous devez modifier la valeur de JENKINS_IMAGE_STREAM_TAG
dans le modèle Jenkins jenkins-ephemeral.json
. Par exemple, remplacez le 2
dans "value": "jenkins:2"
par l'une des balises de flux d'images suivantes :
-
ocp-upgrade-redeploy
la valeur par défaut, met à jour votre image Jenkins lorsque vous mettez à jour OpenShift Container Platform. -
user-maintained-upgrade-redeploy
vous oblige à redéployer manuellement Jenkins en exécutant$ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift
après la mise à jour d'OpenShift Container Platform. -
scheduled-upgrade-redeploy
vérifie périodiquement que la combinaison<image>:<tag>
donnée n'a pas été modifiée et met à jour l'image lorsqu'elle l'est. Le contrôleur de changement d'image extrait l'image modifiée et redéploie la configuration de déploiement Jenkins fournie par les modèles. Pour plus d'informations sur cette politique d'importation planifiée, voir la section "Ajouter des balises aux flux d'images" dans la section suivante "Ressources supplémentaires"
Pour remplacer la valeur de mise à niveau actuelle pour les déploiements existants, modifiez les valeurs des variables d'environnement qui correspondent à ces paramètres de modèle.
Conditions préalables
- Vous utilisez OpenShift Jenkins sur OpenShift Container Platform 4.12.
- Vous connaissez l'espace de noms dans lequel OpenShift Jenkins est déployé.
Procédure
Définir la valeur de la balise de flux d'images, en remplaçant
<namespace>
par l'espace de noms où OpenShift Jenkins est déployé et<image_stream_tag>
par une balise de flux d'images :Exemple
oc patch dc jenkins -p '{"spec":{"triggers" :[{"type":"ImageChange",{"imageChangeParams":{"automatic":true,{"containerNames" :[\N "jenkins"],{"from" :{"kind":\N "ImageStreamTag",\N "namespace":\N"<namespace>",\N "name":\N "jenkins:<image_stream_tag>"}}]}}''
$ oc patch dc jenkins -p '{"spec":{"triggers" :[{"type":"ImageChange",{"imageChangeParams":{"automatic":true,{"containerNames" :[\N "jenkins"],{"from" :{"kind":\N "ImageStreamTag",\N "namespace":\N"<namespace>",\N "name":\N "jenkins:<image_stream_tag>"}}]}}''
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceAlternativement, pour éditer le YAML de configuration du déploiement de Jenkins, entrez
$ oc edit dc/jenkins -n <namespace>
et mettez à jour la lignevalue: 'jenkins:<image_stream_tag>'
.