Не удается подключить приложение внешнего интерфейса {Angular} к Backend {SpringBoot} в kubernetes - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь создать контейнер для своего приложения angular + java в кластере Kubernetes. У меня есть развертывание внешнего интерфейса и внутреннее развертывание в моем кластере k8. Моя база данных находится в AWS {RDS}. Но меня смущает, какой API-URL я должен дать в своем коде Frontend, чтобы он мог подключиться к моему бэкэнд-приложению в кластере k8. Например: В локальной системе я использую что-то вроде {localhost: 8080 / api / Customers} в моем коде Frontend, но на что мне следует поменять его во время развертывания в кластере Kubernetes.

У меня есть настройка кластера Kubernetes с 1 главным и 2 подчиненными узлами, я создал развертывание моего внутреннего приложения и показал его через Cluster Ip, а затем дал ip и порт кластера в своем приложении внешнего интерфейса. После этого я отправил образ в концентратор докеров, а затем создал для него развертывание k8, но он все еще не работает.

Мой главный вопрос - какой URL и порт я должен упомянуть в целевом URL моего приложения Frontend, чтобы он мог найти попадание в мои API Java.

Ответы [ 3 ]

2 голосов
/ 23 мая 2019

Внешнее угловое приложение работает внутри браузера пользователя.Это за пределами кластера kubernetes, и поэтому вы не можете использовать имя службы kubernetes в качестве конечной точки API.Вам нужно сделать доступ к API пружинной загрузки снаружи kubernetes, обычно используя входной или балансировщик нагрузки.Вы используете этот внешний ip или имя хоста как api url в угловом приложении.

0 голосов
/ 28 мая 2019

Предоставление моей серверной службы Балансировщику Нагрузки, а затем использование этой конечной точки Балансировщика Нагрузки в моем Интерфейсном приложении работало для меня.

0 голосов
/ 27 мая 2019

, если ваши два приложения работают в одном кластере kubernetes, поэтому вам придется вызывать вашу внутреннюю службу следующим образом: svcname: порт , например,

http://login:8080/login

Это предполагает, что модуливаш интерфейс находится в том же пространстве имен Kubernetes.Если они находятся в другом пространстве имен, вы бы назвали что-то вроде этого:

http://login.<namespace>.svc.cluster.local:5555/login
...