当我需要 运行 迁移脚本时如何发布自定义 k8s 运算符?

How to release custom k8s operator when i need to run migration script?

我将我的软件抽象为一个 k8s 运算符。当我要发布我的软件时,有两种解决方案,哪种更好?

  1. 创建一个新服务来检测版本变化是否需要运行迁移脚本然后执行迁移。
  2. 在Operator中编写是否运行迁移脚本的逻辑。使用 Operator 自动检测版本更改。

Operator 旨在管理应用程序的生命周期,因此 Operator 是应该检测和 运行 此迁移的服务。

为此,您有以下几种选择:

  1. 重新同步计时器。定期拉取镜像。如果 sha 发生了变化,运行 迁移逻辑。这里的问题是,当您开始拥有多个版本时,它会变得非常复杂。
  2. 将 Operator 的版本与托管应用程序的版本相关联,以便在升级 Operator 时进行迁移。请注意,在这种情况下,操作员应负责为托管应用程序创建 CR。您可以使用 Helm 或 OLM 为您管理操作员升级(特别是如果您想要非常具体的更新路径:例如 1.0.0 -> 1.0.1 -> 1.0.2 但不是 1.0.0 -> 1.0.2直接)。