第 9 章 Serverless 升级
在不跳过发行版本的情况下,OpenShift Serverless 应该会被升级。本节演示了如何解决升级的问题。
9.1. Serverless Operator 维护发行版本升级
9.1.1. 最新和维护版本
从 OpenShift Serverless 1.29 开始,不同的产品版本如下:
-
最新版本可通过
stable
频道获得。 维护版本可以通过其基于版本的频道获得,如
stable-1.29
。注意维护版本是最新版本前的发行版本。例如,如果
stable
频道包含 1.30,则维护版本将在stable-1.29
频道中提供。
通过使用基于版本的频道,您可以保留在特定的 x.y
流中。另外,它还可防止升级到产品的最新版本,该版本可能包含破坏更改。
要切换到维护版本,请将订阅对象 YAML 文件中的 channel 参数从 stable
更新到对应的基于版本的频道,如 stable-1.29
。
9.1.2. 维护版本的补丁和修补程序
与稳定的版本一样,维护版本会受到补丁和热修补代码,有助于保持部署最新及关键错误和安全修复程序。
- 补丁是作为 z-releases 分发的更新,例如,OpenShift Serverless 1.29.1 是提供自版本 1.29.0 以来所做的更新。
热修补代码是需要零停机时间且直接在生产中使用的修复。它们与常规的更新不同,它们会升级客户部署的版本,而不是最新发布的版本。
所有客户可能不会立即提供热修补代码。但是,修补程序引入的变化通常作为以后的版本提供给所有客户。
当有与您的部署相关的热修复程序时,您将获得 hotfix CatalogSource 来更新您的订阅并获取热修补代码。
在新的 Operator 发行版本可用后,还可以升级使用热修补代码部署的 Operator。要使用最新的 GA 版本,请将订阅修改为使用公共 CatalogSource 而不是热修补代码。
下图说明了补丁和热修补方式:
stable stable-1.28 +--------------+ +--------------------------------------------+ | | | | | +--------+ | corresponds to | +--------+ +--------+ +--------+ | | | 1.28.0 |----------------------> | 1.28.0 | | 1.28.1 | | 1.28.2 | | | +--------+ | | +--------+ +--------+ +--------+ | | | | | ^ | | | | +-----|-------------------|------------|-----+ | +--------+ | created| |upgrades | | | 1.28.1 | | from | hotfix_xyz |to | | +--------+ | | +------------+ | | | | +-->| |--+ | | | | | | | +--------+ | upgrades to +------------+ | | | 1.29.0 |<----------------------------------------------------------+ | +--------+ | | | | | | +--------+ | | | 1.30.0 | | | +--------+ | | | +--------------+
9.1.3. 维护版本的升级路径
如果您使用基于版本的频道,则始终可以升级到频道中的最新版本,或头。例如,您可以在 stable-1.29
频道中从 1.29.0 升级到 1.29.2。
另外,您还可以从频道头升级到下一个 x.y
版本。例如,如果 1.29.2 是 stable-1.29
频道中的头,您可以从 1.29.2 升级到 1.30。此类跨通道更新不会自动完成,管理员需要通过更新订阅来手动切换频道。
9.1.4. 升级示例
9.1.4.1. 场景 1
在这种情况下,以下情况是 true:
-
频道是
stable-1.28
-
您切换到
stable
频道 - 当前安装的版本为 1.28.0
- 1.29.0 在 1.28.1 之前发布
-
1.30.0 是
stable
频道的头
在这种情况下,在
上的 1.28.0 到 1.29.0 的升级路径是 1.28.0 到 1.28.1 到 1.29.0。
stable
-1.28
stable stable-1.28 +--------------+ +--------------+ | | | | | +--------+ | | +--------+ | | | 1.28.0 | | | | 1.28.0 | | | +--------+ | | +--------+ | | | | | | | | | | | | +--------+ | | | | | | 1.29.0 |<-------- | v | | +--------+ | | | +--------+ | | | +---------| 1.28.1 | | | | | +--------+ | | +--------+ | | | | | 1.30.0 | | | | | +--------+ | | | | | | | +--------------+ +--------------+
9.1.4.2. 场景 2
在这种情况下,以下情况是 true:
-
频道是
stable-1.29
- 当前安装的版本为 1.29.0
-
1.29.1 在
1.30.0
之前被发布到stable
-1.29stable
频道
在这种情况下,在
到 1.30.0 的升级路径是 1.29.0 到 1.29.1 到 1.30.0。
stable
-1.29
stable stable-1.29 +--------------+ +--------------+ | | | | | +--------+ | | +--------+ | | | 1.29.0 | | | | 1.29.0 | | | +--------+ | | +--------+ | | | | | | | | | v | | +--------+ | | +--------+ | | | 1.29.1 | | | | 1.29.1 | | | +--------+ | | +--------+ | | | | | | | | | | | | +--------+ | | | | | | 1.30.0 |<---------------------+ | | +--------+ | | | | | | | +--------------+ +--------------+
9.1.4.3. 场景 3
在这种情况下,以下情况是 true:
-
频道是
stable-1.29
-
您切换到
stable-1.30
频道 - 当前安装的版本为 1.29.1
-
1.29.1 是
stable-1.29
频道的头
在这种情况下,在
上从 1.29.1 到 1.30.0 的升级路径为 1.29.1 到 1.30.0。
stable
-1.30
stable-1.29 stable-1.30 +--------------+ +--------------+ | | | | | +--------+ | | +--------+ | | | 1.29.0 | | ------> | 1.30.0 | | | +--------+ | | | +--------+ | | | | | | | | | | | | +--------+ | | | | | | 1.29.1 |-------+ | | | +--------+ | | | | | | | +--------------+ +--------------+