在kuberenetes minikube上将前端,节点js后端,mongo db部署作为微服务做出反应

时间:2019-10-01 11:46:39

标签: node.js reactjs kubernetes fqdn kubernetes-service

我的应用是

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

可以从here

下载源代码

您可以在minikube kubernetes的 ./ setup.sh 命令上方部署

1)使用clusterIP Type服务资源进行mongoDB部署

2)具有clusterIP类型服务资源的后端节点js服务器

3)使用nginx和LoadBalancer类型服务资源的前端React构建

使用mongodb服务从node js pod访问monogdb pod FQDN可以正常工作,因为mongodb服务是群集IP类型,并且从nodejs pod进行访问很顺利。

在使用axios从后端服务资源的FQDN进行react(build)进行通信时遇到麻烦。就是说:

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

我什至尝试使用具有5000端口而不是FQDN的群集IP,无法正常工作。

在进行构建或其他操作之后,这似乎是一个问题吗?

解决方案将不胜感激。

1 个答案:

答案 0 :(得分:1)

所以这里的问题是前端应用程序从您的浏览器发出请求(它是客户端,而不是服务器端),这实际上意味着您需要做的是暴露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 Pods不在同一网络上