【发布时间】:2020-05-06 23:39:02
【问题描述】:
我已经为此工作了一段时间,但似乎无处可去。
基本上,我有一个微服务的入口控制器,其 URL 为:
- path: /client/?(.*)
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
但是,当我导航到 192.168.64.4/client(这是 minikube ip)时,我什么也看不到,因为用于静态文件的 URL npm start 是 /static。我需要将其更改为/client/static。
这可能吗?
我知道homepage: "/client" 不是一个选项,因为它只是用于生产。这是在 CRA 中,所以我想避免弹出它。
编辑:
添加了我当前的ingress.yaml:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
name: ingress-service
namespace: default
spec:
rules:
- http:
paths:
- path: /client/?(.*)
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
- path: /api/?(.*)
backend:
serviceName: server-cluster-ip-service
servicePort: 5000
/api 路由可以正常工作,因为 Django 具有处理前缀路径的内置方式。如果不这样做,它将无法正确提供 static 文件,尤其是对于 admin 门户:
FORCED_SCRIPT_NAME = '/api'
STATIC_URL = '/api/static/'
ReactJS,显然没有在开发中。您可以手动导航到/client/static/js/bungle.js 并在那里查看.js。所以不知何故,/client 需要以 /static/ 路径为前缀。
我确实尝试更改以下内容:
nginx.ingress.kubernetes.io/rewrite-target: /$2
这造成了一些奇怪的行为。
- 在
/client上,还是同样的问题,但是在任何位置都找不到/static文件(例如/client/static、/static等) - 在
/api上,无论有没有FORCE_SCRIPT_NAME,它都无法提供任何服务。入口正在进入 Django,但说它无法匹配任何路由,这非常奇怪。
【问题讨论】:
标签: reactjs docker kubernetes create-react-app nginx-ingress