如果我指定路径,React 应用程序不会在 Ingress 中加载

问题描述 投票:0回答:1

这是我关于这个问题的第三篇文章,希望也是最后一篇。问题是 - 我正在为我的大学做一个项目,我有 3 个 kubernetes pod - 一个带有 React 应用程序,它应该连接到第二个带有 Express 应用程序的 pod,该应用程序连接到 mongo 数据库。我配置了用于连接那些使用环境变量的链接。所以,这些 Pod 可以自行工作,但现在当我为它们设置入口时,出现了一个问题:

kind: Ingress
metadata:
  name: frontend-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /frontend
        pathType: Prefix
        backend:
          service:
            name: frontend-service
            port:
              number: 3001
      - path: /backend
        pathType: Prefix
        backend:
          service:
            name: backend-service
            port:
              number: 5001

在这里,如您所见,我将前端服务的路径指定为

/frontend
,将后端服务的路径指定为
/backend
。奇怪的是,如果我尝试打开
http://localhost/frontend
,它似乎会找到链接,但页面似乎是空的,即使浏览器选项卡标题似乎正确更改,并且浏览器中的开发模式似乎也发生了变化。显示一些默认模板反应代码。 但是,如果我只是将
path: /
用作前端的
path: /frontend
,页面会正确加载。
如果我为其设置空路径,后端也可以正常工作,但我无法为这两个服务设置相同的路径。我该如何解决这个问题以便我可以正确访问两者?

我正在使用minikube。如果您需要它,这里是我的后端和前端部署和服务的配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - name: frontend
          image: cloud-frontend
          imagePullPolicy: Never
          ports:
            - containerPort: 3001
          env:
            - name: REACT_APP_API_URL
              value: "http://localhost"
            - name: PORT
              value: "3001"
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-service
spec:
  selector:
    app: frontend
  ports:
    - protocol: TCP
      port: 3001
      targetPort: 3001
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
        - name: backend
          image: cloud-backend
          imagePullPolicy: Never
          ports:
            - containerPort: 5001
          env:
            - name: PORT
              value: "5001"
            - name: DBLINK
              value: "mongodb://database-service:27017/TODO"
---
apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  selector:
    app: backend
  ports:
    - protocol: TCP
      port: 5001
      targetPort: 5001
  type: ClusterIP
reactjs kubernetes kubernetes-ingress nginx-ingress
1个回答
0
投票

@nicvampire 你好,是的,一周以来我一直在努力解决同样的问题。您找到解决此问题的方法了吗?请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.