第 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 频道的头

在这种情况下,在 stable -1.28 上的 1.28.0 到 1.29.0 的升级路径是 1.28.0 到 1.28.1 到 1.29.0。

     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 频道

在这种情况下,在 stable -1.29 到 1.30.0 的升级路径是 1.29.0 到 1.29.1 到 1.30.0。

     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 频道的头

在这种情况下,在 stable -1.30 上从 1.29.1 到 1.30.0 的升级路径为 1.29.1 到 1.30.0。

   stable-1.29              stable-1.30
+--------------+         +--------------+
|              |         |              |
|  +--------+  |         |  +--------+  |
|  | 1.29.0 |  |    ------> | 1.30.0 |  |
|  +--------+  |    |    |  +--------+  |
|              |    |    |              |
|              |    |    |              |
|  +--------+  |    |    |              |
|  | 1.29.1 |-------+    |              |
|  +--------+  |         |              |
|              |         |              |
+--------------+         +--------------+