Node.js 在Kubernetes中连接前端和后端
我的前端设置为:Node.js 在Kubernetes中连接前端和后端,node.js,kubernetes,Node.js,Kubernetes,我的前端设置为: this.http.post<any>(`${environment.apiUrl}/auth/login`, {email, password}) 后端YAML: apiVersion: apps/v1 kind: Deployment metadata: name: backend spec: selector: matchLabels: app: app tier: backend replicas: 1 te
this.http.post<any>(`${environment.apiUrl}/auth/login`, {email, password})
后端YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
selector:
matchLabels:
app: app
tier: backend
replicas: 1
template:
metadata:
labels:
app: app
tier: backend
spec:
containers:
- name: frontend-container
image: <Image>
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: backend
spec:
selector:
app: app
tier: backend
ports:
- protocol: TCP
port: 80
targetPort: 3000
如文件所述
但当我试图从浏览器访问它时,它不起作用,我收到未知错误
这里是前端内部的屏幕截图,确保它能够在内部到达后端
我不明白我哪里出错了。我认为apiUrl变量设置为http://backend 未正确转换,因为如果我将其更改为loadbalancer IP并重建映像,则会将后端暴露给LB服务而不是ClusterIP。它确实有效
但很明显,我不想将我的后端暴露给LB服务
有什么想法吗?请看以下内容:
outside world | k8s cluster
|
Browser --> | Nginx-pod --> backend-pod
|
|
网址http://backend/api 只能在群集中解析,但您的浏览器位于外部世界,因此它不知道此url是什么
理想情况下,您可以使用入口来管理集群吊舱的路由。查看以下内容:
outside world | k8s cluster
|
Browser --> | Nginx-pod --> backend-pod
|
|
网址http://backend/api 只能在群集中解析,但您的浏览器位于外部世界,因此它不知道此url是什么
理想情况下,您可以使用入口来管理到集群吊舱的路由。正如@Elgarni所说,客户端的浏览器无法访问您的集群,因此http://backend/api 无法在群集外部解析。 如果您定义了入口,请使用kubectl get ingres命令并了解您的外部IP。然后将${environment.apiUrl}替换为http://$EXTERNAL\u IP/api/或
为您的外部IP定义DNS记录并通过您定义的域访问。正如@Elgarni所说,客户端的浏览器无法访问您的群集,因此http://backend/api 无法在群集外部解析。 如果您定义了入口,请使用kubectl get ingres命令并了解您的外部IP。然后将${environment.apiUrl}替换为http://$EXTERNAL\u IP/api/或
为您的外部IP定义DNS记录并通过您定义的域访问。您尝试过使用吗?是的,我在前端使用入口:流量>入口>路由到前端服务LB>群集IP服务>后端您尝试过使用吗?是的,我在前端使用入口:流量>入口>路由到前端服务LB>群集IP服务>后端使无知成为必要?例如,集群中的后端和前端通过nginx反向代理配置连接。我举了这样的例子,但它是404。这是一个问题,但没有人知道在生产用例中您会使用入口。对于临时部署,您可以在nginx中配置配置,并通过nodepartis公开nginx,从而使Ignress成为必需?例如,集群中的后端和前端通过nginx反向代理配置连接。我举了这样的例子,但它是404。这是一个问题,但没有人知道在生产用例中您会使用入口。对于临时部署,您可以在nginx中配置配置,并通过NodePort公开nginx