Реагировать на передний конец, узел js на заднем плане, развертывание monogo db как микросервисы на kuberenetes minikube - PullRequest
2 голосов
/ 01 октября 2019

Мое приложение

      React Front-end <------> Nodes js back-end <------> mongodb

Исходный код можно загрузить с здесь

Вы можете развернуть команду выше . / Setup.sh . at minikube kubernetes

1) развертывание mongoDB с clusterIP Тип ресурса службы

2) Сервер внутреннего узла js с clusterIP Тип ресурса службы

3) интерфейсная сборка React с nginxи ресурс службы типа LoadBalancer

Доступ к модулю monogdb с узла js с помощью службы mongodb Полное доменное имя работает нормально, так как служба mongodb относится к типу IP кластера, а доступ с модуля nj работает гладко.

У меня естьпроблема в связи с использованием axios из реакции (сборки) с использованием полного доменного имени внутреннего ресурса службы. В нем говорится:

**POST http://todo-backend-service:5000/init net::ERR_NAME_NOT_RESOLVED**

Я даже пытался с кластером IP с портом 5000 вместо FQDN, не работает.

Это кажется проблемой после сборки или что-то еще?

Решение будет приветствоваться.

1 Ответ

1 голос
/ 02 октября 2019

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

Пример: если вы используете Minikube, вы можете сделать что-то простое: измените тип службы для вашего node.js на тип Loadbalancer:

apiVersion: v1
kind: Service
metadata:
  name: todo-backend-service
spec:
  ports:
  - port: 5000
    targetPort: 5000
  selector:
    app: todo-server-app
  type: LoadBalancer

Затем вам нужно будет выполнить:

minikube service todo-backend-service --url
# OUTPUT
http://192.168.99.113:30048

Этот IP-адрес и порт - то, что ваш веб-интерфейс должен использовать для подключения к бэкэнду node.js:

curl -X POST http://192.168.99.113:30048/todo/list
# OUTPUT
{"error":"Please login first."}

Просто обратите внимание, что при перечислении элементов обычно следует использовать запрос GET

Причина, приведенная в примере:

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

...