【发布时间】:2019-06-23 06:15:57
【问题描述】:
我正在尝试通过 Kubernetes 部署一个 ReactJs 应用和一个 Express-GraphQL 服务器。但是我在设置入口以将流量路由到这两个服务时遇到了麻烦。具体来说,我无法再访问我的后端。
当我将 React 前端和 Express 后端作为单独的服务并公开它们时,它运行良好。但现在我正在尝试启用 HTTPS 和 DNS。并通过 Ingress 路由到他们两个。
这是我的服务 yaml 文件
apiVersion: v1
kind: Service
metadata:
name: bpmclient
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 5000
selector:
run: bpmclient
type: NodePort
apiVersion: v1
kind: Service
metadata:
name: bpmserver
namespace: default
spec:
ports:
- port: 3090
protocol: TCP
targetPort: 3090
selector:
run: bpmserver
type: NodePort
还有我的 Ingress...
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: bpm-nginx
annotations:
kubernetes.io/ingress.global-static-ip-name: bpm-ip
networking.gke.io/managed-certificates: bpmclient-cert
ingress.kubernetes.io/enable-cors: "true"
ingress.kubernetes.io/cors-allow-origin: "https://example.com"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /v2/*
backend:
serviceName: bpmserver
servicePort: 3090
- path: /*
backend:
serviceName: bpmclient
servicePort: 80
通过此设置,我已经能够使用 https 成功访问客户端。但是我无法再通过客户端或浏览它来访问我的后端。我收到 502 服务器错误。但是我检查了后端 pod 的日志,除了 404 日志之外什么也没看到。
我的前端通过 example.com/v2/graphql 到达后端。当我在我的机器上本地运行它时,我会转到 localhost:3090/graphql。因此,如果路由正确完成,我不明白为什么会收到 404。
【问题讨论】:
标签: kubernetes kubernetes-ingress