Вход не перенаправляет angular

#angular #nginx #kubernetes #kubernetes-ingress

#angular #nginx #kubernetes #kubernetes-вход

Вопрос:

Я пытаюсь маршрутизировать приложение, сосуществующее с API, с помощью nginx-ingress. Мой входной контроллер nginx:

 -------------------------------------------------------------------------------
NGINX Ingress controller
  Release:       v0.41.2
  Build:         d8a93551e6e5798fc4af3eb910cef62ecddc8938
  Repository:    https://github.com/kubernetes/ingress-nginx
  nginx version: nginx/1.19.4

-------------------------------------------------------------------------------

  
  kubectl describe service -n ingress-nginx ingress-nginx-controller
Name:                     ingress-nginx-controller
Namespace:                ingress-nginx
Selector:                 app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
Type:                     NodePort
IP:                       10.233.38.239
Port:                     http  80/TCP
NodePort:                 http  30851/TCP
[... blabla...]
  

У меня есть два развертывания (API) с java и (TSP) угловое приложение, я ссылаюсь на них в этом входном ресурсе:

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: simple-fanout-example
  annotations:
    ingress.kubernetes.io/ssl-redirect: "false"
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/rewrite-target: /$2
    ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - host: "*.example.com"
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: sit-api
            port:
              number: 8080
      - path: /tsp/(/|$)(.*)
        pathType: Prefix
        backend:
          service:
           name: sit-web
           port:
              number: 8080

  

если я опишу вход ->

 Rules:
  Host                   Path  Backends
  ----                   ----  --------
  *.example.com
                         /api             sit-api:8080   10.233.90.13:8080,10.233.96.34:8080)
                         /tsp/(/|$)(.*)   sit-web:8080   10.233.92.13:80,10.233.96.36:80)
  

Здесь все в порядке, /api работает так, как должно. Но всякий раз, когда я пытаюсь получить что-либо из / tsp, я получаю 404:

  curl -I ctrlnginx.example.com:30851/tsp
HTTP/1.1 404 Not Found
----
 curl ctrlnginx.example.com:30851/api
{"200":"OK","message":"No message available","path":"/api"}
  

Я что-то упустил?

Комментарии:

1. Похоже, есть проблема с формулой перезаписи. Не могли бы вы изменить путь для tsp to: - path: /tsp(/|$)(.*) и скажите мне, помогло ли это? Тем временем я собираюсь подробнее проанализировать вашу проблему.

2. Привет! извините, но я нашел решение, мне просто нужно было изменить angular «—base-href», теперь он работает нормально! Спасибо за помощь

3. Не могли бы вы опубликовать ответ, объясняющий проблему и решение, которые сработали для вас?

Ответ №1:

Произошла тупая тупая опечатка … извините за поздний ответ. Строка с - path: /tsp/(/|$)(.*) указанием «/», которую пришлось удалить. Тогда к вашему сведению: ВХОДНЫЕ АННОТАЦИИ применяются ко всем путям внутри входа. Итак, если вам нужны разные аннотации для каждого пути, создайте один вход для каждого отдельного пути 🙂 спасибо всем!