升级

Alauda Cache Service for Redis OSS 专为在所有受支持版本之间提供服务连续性和数据安全性而设计。本指南详细说明版本兼容性,并概述推荐的升级路径,以帮助您的环境实现无缝迁移。

升级提示

在升级生产环境之前,强烈建议先在开发或预发布环境中验证升级流程。此预演步骤有助于在问题影响生产服务之前,识别并缓解潜在的兼容性问题,包括与硬件相关的冲突。

版本兼容性原则

Alauda Cache Service for Redis OSS 遵循语义化版本控制原则,并提供以下兼容性保证:

  • Patch 版本 (x.y.z) 在同一 minor version 系列内与前后版本完全兼容。
  • Minor 版本 (x.y.z) 在同一 major version 内保持 API 和功能兼容性。
  • Major 版本 (x.y.z) 可能引入破坏性变更,需要特定的升级操作步骤。

前提条件

在开始升级之前,请确保满足以下前提条件:

  1. 版本兼容性:当前版本必须位于受支持的升级路径上。
  2. 组件健康状态:所有 Redis 实例都必须报告 Ready 状态。
  3. 资源可用性:集群必须具备足够的 CPU、内存和存储资源来支持升级。
  4. 备份:所有关键数据和配置都必须具有最近的备份。

支持的升级路径

下表列出了经过测试的版本组合及其各自的依赖关系:

Alauda Cache Service for Redis OSS VersionRedis Server VersionsACP Version
v5.0.16.0.21, 7.2.14, 8.4.3v4.1, v4.2, v4.3
v5.0.06.0.21, 7.2.12, 8.4.2v4.1, v4.2, v4.3
v4.1.x5.0.14, 6.0.20, 7.2.10v4.1, v4.2
v4.0.x5.0.14, 6.0.20, 7.2.xv4.0
ACP v4.3 兼容性

Alauda Cache Service for Redis OSS v4.1.x 和 v4.0.x 尚未在 ACP v4.3 上进行测试。在升级到 ACP v4.3 之前,请先将 Alauda Cache Service for Redis OSS 升级到 v5.0.0 或更高版本。

在升级到 ACP v4.3 之前先升级 Redis 5.0 实例

升级 Alauda Cache Service for Redis OSS operator 不会 自动升级现有实例的 Redis 版本;必须显式升级每个实例的 Redis 版本。

由于 ACP v4.3 需要 Alauda Cache Service for Redis OSS v5.0.x,而 v5.0.x 不再支持 Redis 5.0,因此在将早于 v4.3 的 ACP 版本升级到 v4.3 之前,必须先将每个 Redis 5.0 实例升级到受支持的版本(6.07.28.4)。

在开始 ACP 升级之前,请确认 VERSION 列中没有实例报告 5.0(例如,运行 kubectl get redis -A)。有关升级操作步骤,请参阅 实例升级指南

升级策略

次版本升级

  • 方法:支持从任意 minor version 直接升级到同一 major version 内的较新版本(例如,4.0.x4.1.0)。
  • 优势:这种方式可最大限度降低运维风险,并促进版本之间的平滑过渡。

补丁版本升级

  • 兼容性:Patch 版本在同一 minor version 系列内完全兼容。
  • 示例:在同一 minor 系列内升级(例如,x.y.0x.y.1)可应用最新的缺陷修复和安全补丁。

主版本升级

  • 要求:跨 major versions 升级时(例如,4.1.05.0.0),请直接升级到目标 major version 当前可用的最新版本。
  • 操作步骤:按照下面的升级步骤先升级 operator,然后按照 实例升级指南 升级单个实例。
  • 注意事项:主版本升级可能需要修改配置,并对功能兼容性进行全面审查。

升级步骤

  1. 从 AlaudaCloud 将目标版本的 Alauda Cache Service for Redis OSS 插件下载到能够访问 ACP 集群的节点。
  2. 使用 violet 包管理工具将插件上传到目标集群。有关详细说明,请参阅 上架软件包 文档。
  3. 升级将遵循 Subscription 中配置的策略:
    • Automatic Upgrade:插件在上传后自动升级。

    • Manual Upgrade

      CLI
      Web Console
      # Check for available upgrades
      $ kubectl -n redis-system get subscriptions.operators.coreos.com redis-operator -o go-template='{{ printf "Installed: %s\n  Current: %s" .status.installedCSV .status.currentCSV }}'
      
      # If an upgrade is available, find the corresponding InstallPlan for the Subscription
      $ kubectl -n redis-system get subscriptions.operators.coreos.com redis-operator -o jsonpath='{.status.installplan.name}'
      
      # Approve the InstallPlan to proceed with the upgrade
      $ kubectl -n redis-system patch --type='json' -p='[{"op":"replace","path":"/spec/approved","value":true}]'

      有关升级插件的更详细说明,请参阅 Operator 文档。

  4. 若要升级 Redis 实例本身,请参阅 实例升级指南