【发布时间】:2021-10-25 12:44:50
【问题描述】:
我在 docker 上使用 Kubernetes v1.21.5。以下是我的入口 YAML 文件
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: triver.dev
http:
paths:
- path: /service/account/?(.*)
pathType: Prefix
backend:
service:
name: auth-srv
port:
number: 3000
我正在运行一个 auth srv 图像,下面是它的 YAML 文件
kind: Deployment
metadata:
name: auth-depl
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: triver/auth
env:
- name: MONGO_URI
value: 'mongodb://mongo-srv:27017/auth'
- name: JWT_KEY
valueFrom:
secretKeyRef:
name: jwt-secret
key: JWT_KEY
---
apiVersion: v1
kind: Service
metadata:
name: auth-srv
spec:
selector:
app: auth
ports:
- name: auth
protocol: TCP
port: 3000
targetPort: 3000
但是当我尝试向我在身份验证服务中创建的任何路由发送请求时,例如我创建了一个 triver.dev/service/account/signup 后快速路由器供用户注册。当我尝试通过 Postman 向路由发送发布请求时,它会给出 ECONNRefused 的错误 (404)。无法发送请求。为什么会这样? (我的邮递员工作正常。这不是邮递员端的问题。)
我做错了什么
该应用程序有效,但我无法访问该路线。这绝对是一个入口问题。有人能帮助我吗?这是一个非常重要的项目。
This is what show up when I use the command 'kubectl get ingress'
Everything works fine when I run the application using skaffold dev.
【问题讨论】:
-
您的入口仅将
/api/users/?(.*)形式的请求定向到您的后端,因此在 Postman 中您需要将您的请求发送到triver.dev/api/users/service/account/signup,或者更好的是,将您的入口路径更改为只需/api/ -
对不起,@code_monk 那是我的错。我更新了问题。我将请求发送到正确的 URL 路径,但它返回了 404 错误。
-
如果 ECONNRefused 出现 404 错误,我敢打赌入口工作正常,但 Express 服务器和 mongoDB 服务器之间的连接出现故障
标签: express kubernetes kubernetes-ingress skaffold