Как называть весенний API из внешнего интерфейса в Куберне - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать приложение Kubernetes, в котором я создал один модуль и службу для серверной части (пружинной загрузки) и модуля внешнего интерфейса и сервис балансировки нагрузки.

Я хотел знать, как бы я вызвал бэкэнд-API из внешнего интерфейса в Кубернетесе?

Вот запущенные сервисы:

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)          AGE       SELECTOR
angular      LoadBalancer   10.100.15.215   a17f17fd2e25011e886100a0e002191e-1613530232.us-east-1.elb.amazonaws.com   4200:30126/TCP   12s       app=angular
kubernetes   ClusterIP      10.100.0.1      <none>                                                                    443/TCP          35m       <none>
login        ClusterIP      10.100.99.52    <none>                                                                    5555/TCP         13m       app=login,tier=backend

Я вызываю следующий API-интерфейс из внешнего интерфейса, и он показывает имя не решена ошибка:

http://login/login

Я также пытался вызвать API с IP-адресом кластера, но это не удалось.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Имеет ли ваше угловое приложение прямой доступ к сервису входа? Если это так, это нормально, что вы не сможете получить, потому что служба входа использует ClusterIP. Это означает, что IP находится только внутри кластера. Вы можете использовать тип LoadBalancer, как вы использовали для своего «углового» приложения.

0 голосов
/ 07 ноября 2018

Похоже, что ваша бэкэнд-служба работает на порту 5555, поэтому вам придется вызывать вашу бэкэнд-службу следующим образом:

http://login:5555/login

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

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

Также как описано здесь .

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

...