Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在kuberenetes minikube将前端、节点js后端、monogo db部署作为微服务进行反应_Node.js_Reactjs_Kubernetes_Fqdn_Kubernetes Service - Fatal编程技术网

Node.js 在kuberenetes minikube将前端、节点js后端、monogo db部署作为微服务进行反应

Node.js 在kuberenetes minikube将前端、节点js后端、monogo db部署作为微服务进行反应,node.js,reactjs,kubernetes,fqdn,kubernetes-service,Node.js,Reactjs,Kubernetes,Fqdn,Kubernetes Service,我的应用程序是 React Front-end <------> Nodes js back-end <------> mongodb 我甚至尝试过使用带有5000端口的群集IP而不是FQDN,但不起作用 这似乎是一个问题后,作出建设或其他东西 如能解决,将不胜感激 因此,这里的问题是前端应用程序从您的浏览器发出请求(它是客户端,而不是服务器端),这意味着您需要做的基本上是公开node.js后端 例如: 如果您使用Minikube,您可以做一些简单的事情:

我的应用程序是

      React Front-end <------> Nodes js back-end <------> mongodb
我甚至尝试过使用带有5000端口的群集IP而不是FQDN,但不起作用

这似乎是一个问题后,作出建设或其他东西


如能解决,将不胜感激

因此,这里的问题是前端应用程序从您的浏览器发出请求(它是客户端,而不是服务器端),这意味着您需要做的基本上是公开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吊舱位于同一网络上

感谢您提供的详细回答。当makebuild转到客户端时,我对JS数据的反应是正确的,这是集群之外的,所以集群是不存在问题的。LB类型服务,因为您也发送了输出,工作正常,但有没有办法让FQDN或后端服务的绝对IP和端口(我知道端口可以修复,但我认为硬编码不是一个好的选择)替代。由于每次部署都需要检查后端svc IP和端口,然后在前端Dockerfile中更改绝对IP和端口,并重新构建以进行部署,这对部署人员来说几乎不需要额外的工作。关于帖子,我在某个地方读到,当在请求中发送身份验证令牌、密码等时,帖子会更好。如果我仍然错了,请纠正我。因此,指定此URL的方法不应该在Dockerfile中完成,您应该能够通过一个环境变量指定此方法,即BACKEND_URL=(查看12因素应用程序)。有一种方法可以设置FQDN,但您需要设置某种类型的入口,这在Minikube上比在云提供商上要困难一些。然后需要设置DNS以路由到该IP。但我相信这将是另一个问题,与这个问题不同
curl -X POST http://192.168.99.113:30048/todo/list
# OUTPUT
{"error":"Please login first."}