В моем Django развертывании имеется x количество модулей (3 в настоящее время), на которых работает сервер Django REST API. Мы все еще на стадии разработки / постановки. Я хотел спросить совета относительно миграции БД. Прямо сейчас модули запускаются с запуска веб-сервера, предполагая, что база данных перенесена и готова. Это предположение может быть ошибочным, конечно.
Можно ли просто поставить python manage.py migrate
перед запуском сервера? Что произойдет, если 2 или 3 модуля запускаются одновременно и все миграции выполняются одновременно? будет ли какой-либо потенциальный ущерб или проблема от этого? Есть ли здесь рекомендуемый шаблон, чтобы все модули запускали сервер с исправной перенастроенной базой данных?
Я думал об этом:
Во время первоначального развертывания определите объект Kubernetes Job
, который будет запущен один раз после того, как модуль базы данных будет готов. Он будет использовать тот же Django контейнер, который у меня есть, и просто запустит python manage.py migrate
. сценарий, который развертывает, будет kubectl wait
для этого модуля работы до fini sh, а затем применяет yaml
, который создает полное развертывание Django. Это обеспечит «пробуждение» всех django модулей с полностью перенастроенной базой данных.
В последующих обновлениях я буду запускать ту же задачу еще раз, прежде чем повторно применять обновления модуля развертывания Django.
Теперь возникает вопрос о курице и яйце и поддержании 100% безотказной работы во время работы. миграция, но это вопрос для другого поста: как вы применяете миграции данных, которые ломают существующий контейнер версии X, когда код для работы с новыми миграциями обновляется в контейнере версии X + 1. Вы отключаете весь сервис на время обновления? Есть ли шаблон для поддержания работоспособности сервиса?