GitOps 和数据库迁移

sac*_*rus 7 fluxcd gitops argocd

我正在尝试在我们公司引入 GitOps。大多数情况下,我们都有用 Django 编写的微服务(但是,它也可以是任何其他 Web 框架)。我对数据库迁移有一个概念性问题。向前迁移很简单:您可以将它们作为作业或 init 容器或 helm 中的钩子来运行。但是向后迁移呢?假设我想从 v1.1 回滚到 v1.0,并且我有一些迁移需要取消应用。现在怎么办?我想使用 argo cd 或 Flux。

有一篇非常好的文章:https://www.weave.works/blog/how-to- Correctly-handle-db-schemas-during-kubernetes-rollouts 。然而,它需要一些 Django 中没有的纪律

Kap*_*aju 3

您可以应用的一种策略是任何数据库迁移都应该向后兼容(尤其是 DDL),以便当您回滚到旧版本时,数据库状态仍然与旧版本兼容。这应该成为设计/架构指南。

前任:

  1. 切勿在迁移过程中删除表
  2. 切勿删除列
  3. 切勿更改列的类型等