Как запустить файл sql при создании модуля kubernetes?

, у нас есть наша база данных либо в aws rds, либо в azure postgres, либо даже на другом онлайн-сервере в зависимости от клиента.

Но наш продукт будет работать в azure kubernetes как модуль и служба с информацией о базе данных в configmap.

Прежде чем мы запустим наше приложение, необходимо, чтобы файл sql был запущен в базе данных в качестве предварительной настройки.

Каков наилучший подход, который мы можем установить, чтобы мы могли автоматизировать это?

0
задан 16 November 2021 в 12:04
1 ответ

Для этого существует множество возможных решений, и это будет зависеть от того, как вы выполняете развертывание и какие инструменты используете для развертывания.

Прежде всего имейте в виду, что запускать модуль и выполнять SQL-скрипт (инициализации или миграции)— это антипаттерн. Контейнеры должны делать что-то одно, и вы не должны предполагать, как контейнеры будут выполняться. Например, что произойдет, если вы запустите несколько контейнеров одновременно? Если все они запускают миграцию при запуске, они будут спотыкаться друг о друга. Таким образом, initcontainers также следует отбросить как решение.

Самое простое решение — запускать как отдельное задание как часть конвейера CI/CD. Вы выполняете файл init/migration. После его применения вы развертываете свой код.

Если вы используете helm , вы можете использовать pre-install или pre-update hook

Как я пытался объяснить, есть много альтернатив, чтобы сделать точно что вы хотите. Главное, вам нужно контролировать, «когда» изменения базы данных применяются специально, потому что вы не можете контролировать, «как» они будут работать.

1
ответ дан 16 November 2021 в 13:22

Теги

Похожие вопросы