×

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 Jenkins 镜像的重新定位

OpenShift Container Platform 4.11 对特定 OpenShift Jenkins 镜像的位置和可用性进行了重大更改。此外,您可以配置何时以及如何更新这些镜像。

OpenShift Jenkins 镜像中保持不变的内容是什么?
  • 集群样本运算符管理用于操作 OpenShift Jenkins 镜像的ImageStreamTemplate对象。

  • 默认情况下,Jenkins Pod 模板中的 Jenkins DeploymentConfig 对象在 Jenkins 镜像更改时会触发重新部署。默认情况下,此镜像由openshift命名空间中ImageStream YAML 文件中 Jenkins 镜像流的jenkins:2镜像流标签引用(在样本运算符有效负载中)。

  • 如果从 OpenShift Container Platform 4.10 及更早版本升级到 4.11,则已弃用的mavennodejs Pod 模板仍位于默认镜像配置中。

  • 如果您从 OpenShift Container Platform 4.10 及更早版本升级到 4.11,则jenkins-agent-mavenjenkins-agent-nodejs镜像流仍然存在于您的集群中。要维护这些镜像流,请参阅以下部分:“openshift命名空间中的jenkins-agent-mavenjenkins-agent-nodejs镜像流会发生什么?”

OpenShift Jenkins 镜像的支持矩阵有哪些变化?

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 Jenkins 和 Jenkins Agent Base ImageStream 和 ImageStreamTag 对象有哪些新增内容?

通过从有效负载镜像流迁移到引用非有效负载镜像的镜像流,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 部署配置的重新部署。请参阅以下“其他资源”中的“配置镜像流标签的定期导入”。

openshift命名空间中的jenkins-agent-mavenjenkins-agent-nodejs镜像流会发生什么?

用于 OpenShift Container Platform 的 OpenShift Jenkins Maven 和 NodeJS Agent 镜像在 4.10 中已弃用,并在 4.11 中从 OpenShift Container Platform 安装有效负载中删除。它们在ocp-tools-4存储库中没有定义替代方案。但是,您可以使用以下“其他资源”部分中提到的“Jenkins 代理”主题中描述的 sidecar 模式来解决此问题。

但是,集群样本运算符不会删除先前版本创建的jenkins-agent-mavenjenkins-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 镜像作为安装有效负载一部分时存在的行为。jenkins-rhel.json镜像流文件中的镜像流标签名称2ocp-upgrade-redeploy使用 SHA 特定的镜像引用。因此,当这些标签使用新的 SHA 更新时,OpenShift Container Platform 镜像更改控制器会自动从关联的模板(例如jenkins-ephemeral.jsonjenkins-persistent.json)重新部署 Jenkins 部署配置。

对于新部署,要覆盖该默认值,请更改jenkins-ephemeral.jsonJenkins 模板中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,请输入$ oc edit dc/jenkins -n <namespace>并更新value: 'jenkins:<image_stream_tag>'行。