搜索

5.4. OpenShift Jenkins 镜像的重要变化

download PDF

OpenShift Container Platform 4.11 将 OpenShift Jenkins 和 OpenShift Agent Base 镜像移到 registry.redhat.ioocp-tools-4 仓库中。它还从其有效负载中删除 OpenShift Jenkins Maven 和 NodeJS Agent 镜像:

  • OpenShift Container Platform 4.11 将 OpenShift Jenkins 和 OpenShift Agent Base 镜像移到 registry.redhat.ioocp-tools-4 仓库中,以便红帽可以在 OpenShift Container Platform 生命周期外生成和更新镜像。在以前的版本中,这些镜像位于 OpenShift Container Platform 安装有效负载以及 registry.redhat.ioopenshift4 存储库中。
  • OpenShift Container Platform 4.10 弃用了 OpenShift Jenkins Maven 和 NodeJS Agent 镜像。OpenShift Container Platform 4.11 从其有效负载中删除这些镜像。红帽不再生成这些镜像,它们不能从 registry.redhat.ioocp-tools-4 存储库中提供。根据 OpenShift Container Platform 生命周期政策,红帽会维护这些镜像的 4.10 及更早的版本,适用于任何重要的程序错误修复或安全 CVE。

这些更改支持 OpenShift Container Platform 4.10 建议在 Jenkins Kubernetes 插件中使用多个容器 Pod 模板

5.4.1. OpenShift Jenkins 镜像重新定位

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

什么与 OpenShift Jenkins 镜像保持相同?

  • Cluster Samples Operator 管理用于运行 OpenShift Jenkins 镜像的 ImageStreamTemplate 对象。
  • 默认情况下,Jenkins pod 模板的 Jenkins DeploymentConfig 对象会在 Jenkins 镜像更改时触发重新部署。默认情况下,此镜像由 Samples Operator 有效负载中的 ImageStream YAML 文件中的 openshift 命名空间的 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 registry 中的 ocp-tools-4 仓库中的每个新镜像都支持多个 OpenShift Container Platform 版本。当红帽更新其中一个新镜像时,所有版本都同时可用。当红帽更新镜像以响应安全公告时,此可用性是理想的选择。最初,这个更改适用于 OpenShift Container Platform 4.11 及更新的版本。计划此更改最终会应用到 OpenShift Container Platform 4.9 及更新的版本。

在以前的版本中,每个 Jenkins 镜像只支持一个 OpenShift Container Platform 版本,红帽可能会随时间顺序更新这些镜像。

OpenShift Jenkins 和 Jenkins Agent Base ImageStream 和 ImageStreamTag 对象增加了什么?

通过从 in-payload 镜像流移到引用非备份镜像的镜像流,OpenShift Container Platform 可以定义额外的镜像流标签。红帽创建了一系列新镜像流标签,并附带现有的 "value": "jenkins:2""value": "image-registry.openshift-image-registry.svc:5000/openshift/jenkins-agent-base-rhel8:latest" 镜像流标签(位于 OpenShift Container Platform 4.10 及更早版本)。这些新镜像流标签处理了一些请求,以改进维护 Jenkins 相关镜像流的方式。

关于新镜像流标签:

ocp-upgrade-redeploy
要在升级 OpenShift Container Platform 时更新 Jenkins 镜像,请在 Jenkins 部署配置中使用此镜像流标签。此镜像流标签与 jenkins 镜像流现有的 jenkins 镜像流的 2 镜像流标签以及 jenkins-agent-base-rhel8 镜像流的 latest 镜像流标签对应。它仅使用特定于一个 SHA 或镜像摘要的镜像标签。当 ocp-tools-4 镜像更改时,如 Jenkins 安全公告,红帽工程团队会更新 Cluster Samples Operator 有效负载。
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 镜像 registry,并将任何更新的镜像存储在 OpenShift 镜像 registry 的 Jenkins ImageStreamTag 对象的插槽中。否则,如果您没有运行此命令,您的 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 仓库中定义 alternatives。但是,您可以使用以下"Additional resources"部分中提到的"Jenkins 代理"主题描述的 sidecar 模式来解决这个问题。

但是,Cluster Samples Operator 不会删除之前版本创建的 jenkins-agent-mavenjenkins-agent-nodejs 镜像流,指向 registry.redhat.io 上对应 OpenShift Container Platform 有效负载镜像的标签。因此,您可以通过运行以下命令拉取 (pull) 镜像的更新:

$ oc import-image jenkins-agent-nodejs -n openshift
$ oc import-image jenkins-agent-maven -n openshift

5.4.2. 自定义 Jenkins 镜像流标签

要覆盖默认的升级行为,并控制 Jenkins 镜像的升级方式,您可以设置 Jenkins 部署配置使用的镜像流标签值。

默认升级行为是在 Jenkins 镜像是安装有效负载的一部分时存在的行为。jenkins-rhel.json 镜像流文件中的镜像流标签名称 2ocp-upgrade-redeploy 使用 SHA 特定镜像引用。因此,当这些标签使用新的 SHA 更新时,OpenShift Container Platform 镜像更改控制器会自动从关联的模板重新部署 Jenkins 部署配置,如 jenkins-ephemeral.jsonjenkins-persistent.json

对于新部署,要覆盖该默认值,您可以在 jenkins-ephemeral.json Jenkins 模板中更改 JENKINS_IMAGE_STREAM_TAG 的值。例如,将 "value": "jenkins:2" 中的 2 替换为以下镜像流标签之一:

  • 升级 OpenShift Container Platform 时,OCP -upgrade-redeploy (默认值)会更新 Jenkins 镜像。
  • user-maintained-upgrade-redeploy 要求您在升级 OpenShift Container Platform 后运行 $ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift 来手动重新部署 Jenkins。
  • scheduled-upgrade-redeploy 会定期检查给定的 <image>:<tag> 组合,以便在镜像更改时进行更改和升级。镜像更改控制器拉取更改的镜像,并重新部署由模板置备的 Jenkins 部署配置。有关此调度导入策略的更多信息,请参阅以下"Additional resources"中的"将标签添加到镜像流"。
注意

要覆盖现有部署的当前升级值,请更改与这些模板参数对应的环境变量值。

先决条件

  • 您已在 OpenShift Container Platform 4.15 上运行了 OpenShift Jenkins。
  • 您知道部署 OpenShift Jenkins 的命名空间。

流程

  • 设置镜像流标签值,将 <namespace> 替换为部署 OpenShift Jenkins 的命名空间,并将 <image_stream_tag> 替换为镜像流标签:

    Example

    $ 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>' 行。

5.4.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.