Несколько подов, использующих одну и ту же базу данных на кубернетах

Я хотел бы знать, возможно ли для нескольких модулей в одном кластере Kubernetes получить доступ к базе данных, которая настроена с использованием постоянных томов на постоянном диске в облаке Google.

В настоящее время я создаю веб-приложение для архитектуры микросервисов, которое имеет 3 узла API в разных модулях, все они обращаются к одной и той же базе данных. Итак, как мне добиться этого с помощью кубернетов.

Пожалуйста, дайте мне знать, правильна ли моя архитектура.


comment
Эта архитектура разумна: до тех пор, пока база данных может обрабатывать ожидаемое количество входящих подключений, а учетные данные правильно настроены в модулях, проблем с доступом к базе данных со всеми API-интерфейсами быть не должно. Есть ли у вас какие-то особые опасения по поводу ваших дизайнерских решений?   -  person Monkeyanator    schedule 30.12.2018
comment
Вы говорите о сетевой базе данных, такой как Postgres или MySQL, или о какой-то локальной файловой базе данных, такой как Sqlite или BDB?   -  person coderanger    schedule 30.12.2018
comment
Я использую mongo db @coderanger. Я также хочу получить доступ к базе данных за пределами кластера. Поэтому я хочу, чтобы он был высокодоступным   -  person suprith    schedule 01.01.2019
comment
MongoDB (компания) предлагает оператора (настраиваемый контроллер Kubernetes), возможно, начнем с этого.   -  person coderanger    schedule 02.01.2019


Ответы (1)


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

Вы должны ответить на вопросы о масштабируемом запуске баз данных, например о вашей будущей нагрузке и о том, хотите ли вы использовать реляционные базы данных, если вы собираетесь попытаться охватить зоны доступности. И есть некоторые особенности кубернетов, особенно связанные с тем, как вы связываете модули БД с данными. См. https://stackoverflow.com/a/53980021/9705485. Другой популярный вариант - использовать службу управляемой БД от облачного провайдера. Если вы действительно запускаете БД в k8s, я бы посоветовал поискать диаграмму управления или посмотреть на оператора, такого как оператор kubeDB, чтобы не создавать дескрипторы kubernetes самостоятельно и получить больше рекомендаций по запуску БД и ее настройке. .

Если это новый проект, и вы раньше не использовали k8s, вам также придется решить, где разместить ваш код, образы докеров и дескрипторы развертывания, а также как настроить конвейеры CI. Если у вас еще нет ответов на эти вопросы, я бы посоветовал взглянуть на Jenkins-X, поскольку он предоставит вам готовые настройки по умолчанию для всего кластера и настройки CI, а также шаблон (`` пакет сборки '') для сборки node приложения и развертывание их в промежуточных и производственных средах через конвейер.

person Ryan Dawson    schedule 31.12.2018