Я работал над этим некоторое время и, похоже, никуда не денусь.
По сути, у меня есть входной контроллер для микросервиса, URL которого:
- path: /client/?(.*)
backend:
serviceName: client-cluster-ip-service
servicePort: 3000
Однако, когда я перехожу к 192.168.64.4/client
(это minikube ip
), я ничего не вижу, потому что URL npm start
, используемый для файлов stati c, равен /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
, et c.) - На
/api
нельзя заставить его обслуживать что-либо с или без FORCE_SCRIPT_NAME
. Вход в Django, но говорит, что он не может соответствовать ни одному из маршрутов, что невероятно странно.