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