проблема префикса API входящей маршрутизации - PullRequest
0 голосов
/ 02 ноября 2019
paths:
  - backend:
      serviceName: booknotes-front-end-service
      servicePort: 80
    path: /
  - backend:
      serviceName: booknotes-back-end-service
      servicePort: 3000
    path: /api

Вот правила в моем ресурсе ingres-nginx. Я пытаюсь перенаправить весь трафик, который начинается с /api, на мой бэкэнд-сервис, который работает правильно, но если какой-то маршрут в моем бэкэнде будет похож на / api / users, он не работает, мой ответ на отправку бэкэнда не найденКогда я запускаю его локально, этот маршрут работает правильно. Также я попытался удалить префикс / api из моей маршрутизации koa и изменить его на /users, а затем я также изменил path: /api на path: /users, и этот материал работает правильно. Что я должен сделать, чтобы исправить это? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать!

Ответы [ 3 ]

2 голосов
/ 02 ноября 2019

Какую версию nginx-ingress вы используете? Они изменили способ определения пути.

https://kubernetes.github.io/ingress-nginx/examples/rewrite/

Начиная с версии 0.22.0, входные определения используют аннотацию nginx.ingress.kubernetes.io/rewrite-targetне обратно совместимы с предыдущими версиями. В версии 0.22.0 и более поздних версиях любые подстроки в URI запроса, которые необходимо передать переписанному пути, должны быть явно определены в группе захвата.

Например, вы можете использовать такое определение.

kind: Ingress
metadata:
  name: some-ingress-name
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - http:
        paths:
        - path: /?(.*)
          backend:
            serviceName: booknotes-front-end-service
            servicePort: 80
        - path: /api/?(.*)
          backend:
            serviceName: booknotes-back-end-service
            servicePort: 3000

0 голосов
/ 02 ноября 2019

Это потому, что он ищет файл /api/users, который, вероятно, не существует.

Поместите файл в /api/users/, в бэкэнды службы booknotes-back-end-service, скажем user1и сделайте реквизат явно: /api/users/user1.

Там вы должны получить 200.

0 голосов
/ 02 ноября 2019

https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer, раздел шаг6 попробуйте заменить путь / api на / api / * и / на / *

...