Архитектура Кубернетес + микросервисы - PullRequest
0 голосов
/ 19 октября 2018

Мне нужно разработать решение для веб-сайта с несколькими страницами спа.То, что я считал высокоуровневым дизайном, выглядит следующим образом: -

Будет одна машина для каждой страницы спа, которая будет просто отображать пользовательский интерфейс, выполнять SSR и принимать запрос из браузера.Например, www.abc.com/foo будет перенаправлен на эту машину.Я думаю о том, чтобы поместить код пользовательского интерфейса приложения в модуль kubernetes и разместить его на машине / узле.Также с помощью KOPS я буду управлять автоматическим масштабированием узлов и модулей.

Теперь это приложение в модуле будет вызывать другие модули для отображения данных на веб-странице.Например, www.abc.com/API/foo будет вызываться из pod1.Я думаю сделать еще один модуль, который будет жить на том же узле, что и узел модуля веб-страницы.

Так что теперь у меня есть 2 модуля, живущие на одном узле, которые будут автоматически масштабироваться в соответствии с трафиком.Точно так же для каждой страницы, которую я имею на своем веб-сайте, у меня будет узел с 2-мя модулями.

Теперь у меня есть следующие вопросы: -

  1. Есть ли передовой опыт или другой дизайн?Решение, описанное выше?
  2. Как мне добиться маршрутизации на основе пути, например, www.abc.com/foo должен называть мой модуль веб-страницы?
  3. Как я могу открыть модуль для внешнего мира, то есть Интернета, безиспользовать балансировщик нагрузки?
  4. Должны ли я иметь разные репо для каждого модуля?

1 Ответ

0 голосов
/ 19 октября 2018

Существуют ли какие-либо передовые методы или другие конструктивные решения, описанные выше?

Вы можете использовать PodAffinity для совместного размещения ваших стручков.

Как мне добиться маршрутизации на основе пути, например, www.abc.com/foo должен вызывать мой модуль веб-страницы?

Вы можете использовать Kubernetes Ingress,Так как это средство уровня 7, вы можете использовать несколько путей к хостам, имейте в виду, что это, как правило, подвергается внешним воздействиям с использованием сервиса типа LoadBalancer.

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

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

ЕслиУ меня есть разные репо для каждого модуля?

git репо?конечно, для каждого приложения у вас должны быть разные образы контейнеров.

...