GitOps и миграции баз данных

Я пытаюсь внедрить GitOps в нашей компании. В основном у нас есть микросервисы, написанные на Django (однако это может быть любой другой веб-фреймворк). У меня концептуальная проблема с миграцией базы данных. Прямые миграции просты: вы запускаете их как задание, контейнер инициализации или перехватчики в helm. А как насчет обратной миграции? Допустим, я хочу выполнить откат с версии 1.1 до версии 1.0, и у меня есть некоторые миграции, которые нельзя применить. И что теперь? Я хотел использовать argo cd или flux.

Есть действительно хорошая статья: https://www.weave.works/blog/how-to-correctly-handle-db-schemas-during-kubernetes-rollouts. Однако это требует определенной дисциплины, которой у вас нет в Django.

1 ответ

Одна из стратегий, которую вы можете применить, заключается в том, что любая миграция базы данных должна быть обратно совместима (особенно DDL), чтобы при откате к более старой версии состояние базы данных по-прежнему было совместимо с более старой версией. Это должно быть сделано в качестве руководства по дизайну/архитектуре.

Бывший:

  1. Никогда не удаляйте таблицу как часть миграции
  2. Никогда не бросайте столбец
  3. Никогда не меняйте тип столбца и т. д.
Другие вопросы по тегам