Ingress route - маршрут на основе пути к другому приложению React - PullRequest
4 голосов
/ 23 апреля 2019

У меня есть разные реагирующие приложения и его бэкэнд-сервис, независимо развернутый в Openshift. Среди них есть одно приложение, в которое пользователи входят и переходят в другие приложения, используя ссылки, предоставленные в этом приложении.

В настоящее время ссылка каждого приложения указывает непосредственно на «Openshift Route» (аналогично Kube Ingress) приложения реакции.

Но для производственных регионов мы должны изменить способ работы. Существует один публичный домен, скажем, apps.mydomain.com. Мы должны сделать ссылки на каждое из приложений таким образом, чтобы он загружался по этому пути, apps.mydomain.com/reactapp1 должен загружатьactapp1, а реактивный2 должен быть загружен в apps.mydomain.com/reactapp2 и так далее.

Итак, настроен один вход, настроенный с путями

rules:
- host: apps.mydomain.com
  http:
    paths:
      - backend:
          serviceName: home
          servicePort: 8080
        path: /
      - backend:
          serviceName: react-app-1
          servicePort: 8080
        path: /reactapp1
      - backend:
          serviceName: app-1-api
          servicePort: 8080
        path: /app1/api
      - backend:
          serviceName: react-app-2
          servicePort: 8080
        path: /reactapp2
      - backend:
          serviceName: app-2-api
          servicePort: 8080
        path: /app2/api

Когда я нажимаю на ссылку https://apps.mydomain.com, он загружает приложение home, после входа в систему при нажатии на ссылку приложения приложение не загружается. Хотя я мог видеть, что название браузера изменилось на навигационное приложение, я получаю эту ошибку Uncaught SyntaxError: Unexpected token <.

После многих поисков я считаю, что приложение реакции должно быть настроено иначе, если его нужно развернуть не из root.

Чего мне не хватает? Где я делаю не так? Входить или реагировать на сборку приложения? Могу ли я иметь разные Ingress с тем же доменом, но с разными путями для каждого реагирующего приложения и его API-интерфейса сервера?

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Для этого вы можете использовать маршруты openshift вместо входа, вы можете проверить в документации, как его применить https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#path-based-routes

Одна деталь, на которую следует обратить внимание, если ваше приложение получит относительный путь, оно не исключено из вашего запроса, например:

apps.mydomain.com/app2/api ---> app-2-api.svc:8080/app2/api

0 голосов
/ 23 апреля 2019

Я не думаю, что это можно решить с помощью Openshift Router (см. эту проблему ).

С Nginx Ingress это можно легко сделать с помощью аннотации nginx.ingress.kubernetes.io/rewrite-target: /

...