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."}