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