【发布时间】:2021-01-18 01:09:28
【问题描述】:
我的前端设置为:
this.http.post<any>(`${environment.apiUrl}/auth/login`, {email, password})
在哪里apiUrl: 'http://backend/api'
我在一个容器中构建了前端并将其暴露给负载均衡器服务,我试图通过 ClusterIP 服务将它连接到端口 3000 上的后端。
前端 YAML:
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
selector:
tier: frontend
ports:
- port: 80
targetPort: 80
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
tier: frontend
replicas: 1
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: frontend
image: <Image>
imagePullPolicy: Always
ports:
- containerPort: 80
后端 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
如文档 here 中所述。
但是当我尝试从浏览器访问它时它不起作用,我收到未知错误!
这里是前端内部的屏幕截图,确保它能够在内部到达后端。
我不明白我在哪里出错了。我认为设置为 http://backend 的 apiUrl var 未正确转换,因为如果我将其更改为负载均衡器 IP 并重建映像,则将后端暴露给 LB 服务而不是 ClusterIP。它确实有效。
但显然我不想将我的后端暴露给 LB 服务。
有什么想法吗?
【问题讨论】:
标签: node.js kubernetes