如何在minikube中让子路径为create-react-app工作?

pn9klfpd  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(143)

我以为这会很简单,但显然事实并非如此。
我有两个CRA微服务正在运行:

  • /
  • /admin

minikube ip192.168.64.5,所以浏览器中的完整路由应该是192.168.64.5/192.168.64.5/adminDockerfile.dev只是每个都以npm start开始。
根路由工作正常,但是/admin我一辈子都无法让静态文件正确服务......花了几个小时才找到它。我得到的只是Uncaught SyntaxError: Unexpected token '<',这是因为静态文件没有得到正确服务。
也就是说,当我执行npm build,或者只是转到localhost:3000/admin时,web应用程序得到了正确的服务。npm build显然不是开发的理想选择。使用localhost只是绕过了集群路由,所以在开发中可能会遇到的问题现在会在暂存中出现。如果我不能让它工作,我将不得不走这条路。
我已尝试使用"homepage:"basename={process.env.PUBLIC_URL},但无法解决问题:
第一个
此外,尝试使用.envPUBLIC_URL,但效果与"homepage":相同。
documentation表示:
通常,创建React应用程序会忽略主机名。
但是很明显,minikube ip和集群有一些不太喜欢的地方,这似乎是一个很常见的需求,所以可能有一个直接的解决方案,我只是忽略了。
有什么建议吗?


# ingress.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: ingress-service-dev
  namespace: default
spec:
  rules:
    - http:
        paths:
          - path: /admin/?(.*)
            backend:
              serviceName: admin-cluster-ip-service-dev
              servicePort: 4001
          - path: /?(.*)
            backend:
              serviceName: client-cluster-ip-service-dev
              servicePort: 3000
          - path: /api/?(.*)
            backend:
              serviceName: api-cluster-ip-service-dev
              servicePort: 5000
9nvpjoqh

9nvpjoqh1#

好的,很明显这个问题是ingress.yaml中的nginx.ingress.kubernetes.io/rewrite-target: /$1。我把它注解掉了,它开始工作了。
您可以参考上面的index.htmlindex.jspackage.json,因为它们没有变化。
最后得到的ingress.yaml是:


# ingress.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
  name: ingress-service-dev
  namespace: default
spec:
  rules:
    - http:
        paths:
          - path: /admin/
            backend:
              serviceName: admin-cluster-ip-service-dev
              servicePort: 4001
          - path: /api/
            backend:
              serviceName: api-cluster-ip-service-dev
              servicePort: 5000
          - path: /
            backend:
              serviceName: client-cluster-ip-service-dev
              servicePort: 3000

到目前为止没有任何损坏,一切都按预期工作。

相关问题