У меня есть миграция базы данных, которую я хотел бы запустить до развертывания новой версии моего приложения в кластере Kubernetes. Я хочу, чтобы эти миграции выполнялись автоматически в рамках конвейера непрерывной доставки. Миграция будет инкапсулирована как изображение контейнера. Каков наилучший механизм для достижения этого?Как лучше всего запускать одноразовые задачи миграции в кластере кубернетов
Требования к решению:
- быть в состоянии определить, является ли миграция не удалось, так что мы впоследствии не пытаться развернуть новую версию приложения в кластере.
- сдавать, если сбой миграции - не продолжать его повторную попытку.
- иметь возможность доступа к журналам для диагностики неудачных миграций.
Я предположил, что функциональность Работа в Kubernetes бы сделать это легко, но, как представляется, несколько проблем:
- Kubernetes будет repeatedly re-run containers whose processes terminate with a non-zero exit code, даже если задание имеет
restartPolicy
изnever
. - блокировка при ожидании результата в очереди вверх работу, кажется, требует скрученных вручную скриптов
бы использовать «голые стручки» быть лучшим подход? Если да, то как это может работать?
Как вы это сделали? С той же самой дилеммой ... –