$ oc import-image jenkins-agent-nodejs -n openshift
OpenShift Container Platform 4.11 将 OpenShift Jenkins 和 OpenShift Agent 基础镜像移动到registry.redhat.io
上的ocp-tools-4
存储库。它还从其有效负载中删除了 OpenShift Jenkins Maven 和 NodeJS Agent 镜像。
OpenShift Container Platform 4.11 将 OpenShift Jenkins 和 OpenShift Agent 基础镜像移动到registry.redhat.io
上的ocp-tools-4
存储库,以便 Red Hat 可以 OpenShift Container Platform 生命周期之外生成和更新这些镜像。以前,这些镜像位于 OpenShift Container Platform 安装有效负载和registry.redhat.io
上的openshift4
存储库中。
OpenShift Container Platform 4.10 已弃用 OpenShift Jenkins Maven 和 NodeJS Agent 镜像。OpenShift Container Platform 4.11 从其有效负载中删除了这些镜像。Red Hat 不再生成这些镜像,并且它们在registry.redhat.io
上的ocp-tools-4
存储库中不可用。Red Hat 维护这些镜像的 4.10 及更早版本,以进行任何重要的错误修复或安全 CVE,遵循OpenShift Container Platform 生命周期策略。
这些更改支持 OpenShift Container Platform 4.10 建议使用带有 Jenkins Kubernetes 插件的多个容器 Pod 模板。
OpenShift Container Platform 4.11 对特定 OpenShift Jenkins 镜像的位置和可用性进行了重大更改。此外,您可以配置何时以及如何更新这些镜像。
集群样本运算符管理用于操作 OpenShift Jenkins 镜像的ImageStream
和Template
对象。
默认情况下,Jenkins Pod 模板中的 Jenkins DeploymentConfig
对象在 Jenkins 镜像更改时会触发重新部署。默认情况下,此镜像由openshift
命名空间中ImageStream
YAML 文件中 Jenkins 镜像流的jenkins:2
镜像流标签引用(在样本运算符有效负载中)。
如果从 OpenShift Container Platform 4.10 及更早版本升级到 4.11,则已弃用的maven
和nodejs
Pod 模板仍位于默认镜像配置中。
如果您从 OpenShift Container Platform 4.10 及更早版本升级到 4.11,则jenkins-agent-maven
和jenkins-agent-nodejs
镜像流仍然存在于您的集群中。要维护这些镜像流,请参阅以下部分:“openshift命名空间中的jenkins-agent-maven
和jenkins-agent-nodejs
镜像流会发生什么?”
registry.redhat.io
注册表中ocp-tools-4
存储库中的每个新镜像都支持多个版本的 OpenShift Container Platform。当 Red Hat 更新这些新镜像之一时,它会同时适用于所有版本。当 Red Hat 响应安全建议更新镜像时,此可用性非常理想。最初,此更改适用于 OpenShift Container Platform 4.11 及更高版本。计划此更改最终将适用于 OpenShift Container Platform 4.9 及更高版本。
以前,每个 Jenkins 镜像只支持一个版本的 OpenShift Container Platform,Red Hat 可能会随着时间的推移顺序更新这些镜像。
通过从有效负载镜像流迁移到引用非有效负载镜像的镜像流,OpenShift Container Platform 可以定义其他镜像流标签。Red Hat 创建了一系列新的镜像流标签,以配合 OpenShift Container Platform 4.10 及更早版本中存在的"value": "jenkins:2"
和"value": "image-registry.openshift-image-registry.svc:5000/openshift/jenkins-agent-base-rhel8:latest"
镜像流标签。这些新的镜像流标签解决了关于改进 Jenkins 相关镜像流维护方式的一些请求。
关于新的镜像流标签
ocp-upgrade-redeploy
升级 OpenShift Container Platform 时,要在您的 Jenkins 部署配置中使用此镜像流标签来更新您的 Jenkins 镜像。此镜像流标签对应于jenkins
镜像流的现有2
镜像流标签和jenkins-agent-base-rhel8
镜像流的latest
镜像流标签。它使用仅针对一个 SHA 或镜像摘要的特定镜像标签。当ocp-tools-4
镜像发生更改(例如针对 Jenkins 安全建议)时,Red Hat 工程团队会更新集群样本运算符有效负载。
user-maintained-upgrade-redeploy
升级 OpenShift Container Platform 后,要手动重新部署 Jenkins,请在您的 Jenkins 部署配置中使用此镜像流标签。此镜像流标签使用可用的最不具体的镜像版本指示符。重新部署 Jenkins 时,运行以下命令:$ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift
。发出此命令时,OpenShift Container Platform ImageStream
控制器会访问registry.redhat.io
镜像注册表,并将任何更新的镜像存储在该 Jenkins ImageStreamTag
对象的 OpenShift 镜像注册表槽中。否则,如果您不运行此命令,您的 Jenkins 部署配置不会触发重新部署。
scheduled-upgrade-redeploy
要自动重新部署发布的最新版本的 Jenkins 镜像,请在您的 Jenkins 部署配置中使用此镜像流标签。此镜像流标签使用 OpenShift Container Platform 镜像流控制器的镜像流标签定期导入功能,该功能会检查后端镜像的更改。如果镜像发生更改(例如,由于最近的 Jenkins 安全建议),OpenShift Container Platform 会触发您的 Jenkins 部署配置的重新部署。请参阅以下“其他资源”中的“配置镜像流标签的定期导入”。
jenkins-agent-maven
和jenkins-agent-nodejs
镜像流会发生什么?用于 OpenShift Container Platform 的 OpenShift Jenkins Maven 和 NodeJS Agent 镜像在 4.10 中已弃用,并在 4.11 中从 OpenShift Container Platform 安装有效负载中删除。它们在ocp-tools-4
存储库中没有定义替代方案。但是,您可以使用以下“其他资源”部分中提到的“Jenkins 代理”主题中描述的 sidecar 模式来解决此问题。
但是,集群样本运算符不会删除先前版本创建的jenkins-agent-maven
和jenkins-agent-nodejs
镜像流,这些镜像流指向registry.redhat.io
上相应 OpenShift Container Platform 有效负载镜像的标签。因此,您可以通过运行以下命令来提取这些镜像的更新
$ oc import-image jenkins-agent-nodejs -n openshift
$ oc import-image jenkins-agent-maven -n openshift
要覆盖默认升级行为并控制 Jenkins 镜像的升级方式,请设置您的 Jenkins 部署配置使用的镜像流标签值。
默认升级行为是 Jenkins 镜像作为安装有效负载一部分时存在的行为。jenkins-rhel.json
镜像流文件中的镜像流标签名称2
和ocp-upgrade-redeploy
使用 SHA 特定的镜像引用。因此,当这些标签使用新的 SHA 更新时,OpenShift Container Platform 镜像更改控制器会自动从关联的模板(例如jenkins-ephemeral.json
或jenkins-persistent.json
)重新部署 Jenkins 部署配置。
对于新部署,要覆盖该默认值,请更改jenkins-ephemeral.json
Jenkins 模板中JENKINS_IMAGE_STREAM_TAG
的值。例如,将"value": "jenkins:2"
中的2
替换为以下镜像流标签之一
ocp-upgrade-redeploy
(默认值)会在升级 OpenShift Container Platform 时更新您的 Jenkins 镜像。
user-maintained-upgrade-redeploy
需要您在升级 OpenShift Container Platform 后手动重新部署 Jenkins,方法是运行$ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift
。
scheduled-upgrade-redeploy
定期检查给定的<image>:<tag>
组合是否有更改,并在更改时升级镜像。镜像更改控制器会提取已更改的镜像并重新部署模板提供的 Jenkins 部署配置。有关此计划导入策略的更多信息,请参阅以下“其他资源”中的“向镜像流添加标签”。
要覆盖现有部署的当前升级值,请更改与这些模板参数对应的环境变量的值。 |
您正在 OpenShift Container Platform 4.17 上运行 OpenShift Jenkins。
您知道部署 OpenShift Jenkins 的命名空间。
设置镜像流标签值,将<namespace>
替换为部署 OpenShift Jenkins 的命名空间,并将<image_stream_tag>
替换为镜像流标签
$ oc patch dc jenkins -p '{"spec":{"triggers":[{"type":"ImageChange","imageChangeParams":{"automatic":true,"containerNames":["jenkins"],"from":{"kind":"ImageStreamTag","namespace":"<namespace>","name":"jenkins:<image_stream_tag>"}}}]}}'
或者,要编辑 Jenkins 部署配置 YAML,请输入 |