У меня есть приложение PHP, которое отлично работает в Kubernetes, за исключением одного сценария. «Проблема» в том, что приложение можно расширить с помощью плагина. В этом случае мы просто добавляем плагин в контейнер, пересобираем контейнер и снова его развертываем.
При следующем входе в систему Администратору необходимо подтвердить установку плагина. Все идет нормально. Но! Наша проблема в том, что мы больше не можем удалять эти плагины, потому что плагины создают (зависящие от плагина) таблицы и записи в разных таблицах в базе данных.
В процессе деинсталляции плагин удаляет таблицы и так далее. Но так как наше приложение находится в подах, то файлы в файловой системе остаются активными. Таким образом, после перезагрузки страницы приложение находит новый плагин и устанавливает его снова.
По сути, после удаления одного плагина нам нужно пересобрать контейнер без плагина и развернуть его снова. Затем мы можем удалить следующий плагин, пересобрать контейнер и так далее... но это не решение.
Поэтому мы думаем, что должен быть другой путь.Лучшим решением было бы установить его в томе, потому что в этом случае все модули используют один и тот же том, и мы можем разделить их между модулями php-fpm и модулями веб-сервера. Таким образом, мы можем масштабировать их независимо друг от друга. Но в этом случае вопрос в том, есть ли что-то вроде контейнера установки, который запускается при каждом развертывании. Поэтому всякий раз, когда мы обновляем наше развертывание, контейнер запускается один раз и удаляет старые плагины / устанавливает новые плагины / устанавливает обновления нашего приложения. В этом сценарии нашим модулям требуется только ReadOnlyMany (ROX), и только один модуль (настройка) нуждается в разрешениях на запись.
Я знаю, что есть init-контейнеры, но насколько мне известно, они запускаются каждый раз, когда запускается новый модуль. У кого-нибудь есть какие-либо предложения, как решить эту проблему или сталкивался с подобными проблемами?