0

我想为管理分布式数据库的 Kubernetes 操作员添加无缝升级功能。有没有一些好的做法可以做到这一点?

特别是在配置方面,这是我的 CR.yaml:

apiVersion: qserv.lsst.org/v1alpha1
kind: Qserv
metadata:
  name: qserv
spec:
  czar:
    image: qserv/qserv:v1.0.0
    replicas: 1
  storage: 1Gi
  storageClassName: standard
  worker:
    image: qserv/qserv:v1.0.0
    replicas: 2

当我的CR.yaml文件中的容器图像标签发生变化时,我应该执行数据库架构升级吗?我应该在我的 中添加一个“performDatabaseUpgrade=true”字段CR.yaml吗?还是有其他技术,例如创建额外的 CRD?

此外,是否有推荐的方法在operator-sdk框架内实现这一点?

4

1 回答 1

1

我更喜欢您提到的第一种方法,即在 CR.yaml 中的标签更改时更改容器映像。

关于如何实现这一点,我更喜欢按照以下步骤在协调循环内为每个操作数执行检查、创建、验证和更新循环:

  1. check:如果操作数存在并且所有者引用与自定义资源匹配。
  2. create:如果操作数不存在,则创建一个新操作数。
  3. validate操作数配置与自定义资源匹配。(例如,将 pod 的 Docker 映像与自定义资源进行比较。)
  4. update如果您检测到步骤中的任何差异validate
于 2021-11-12T10:14:43.930 回答