#amazon-web-services #kubernetes #amazon-eks #aws-application-load-balancer
#amazon-веб-сервисы #kubernetes #amazon-eks #aws-application-балансировщик нагрузки
Вопрос:
У меня есть один вход (пример, www.a.com ). Я сопоставил корень со службой, например:
- backend:
serviceName: ui-svc
servicePort: 80
path: /
Это перенаправляет к правильной службе при переходе к www.a.com . Я хочу подключить другую службу в / api, например:
- backend:
serviceName: api-svc
servicePort: 80
path: /api
Маршрутизация к www.a.com/api работает нормально, однако любые конечные конечные точки получают 404’d (и т. Д www.a.com/api/swagger , даже если эта конечная точка смонтирована в самом приложении (spring application)). Ранее, используя Traefik, я использовал rewriteTarget: /
аннотацию, чтобы исправить это, однако ALB это не поддерживает. Есть ли собственный способ kubernetes, которым я могу решить эту проблему?
Я использую kubernetes 1.17 и EKS в качестве своей платформы kubernetes.
Ответ №1:
Вы можете использовать регулярные выражения для сопоставления пути
- backend:
serviceName: api-svc
servicePort: 80
path: /api/.*
Это можно включить, установив эту аннотацию в развертывании ingress:
nginx.ingress.kubernetes.io/use-regex: "true"
дополнительная информация https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching /
Комментарии:
1. К сожалению, я не использую nginx в качестве входа (используя alb), поэтому это правило недоступно.
2. Вы все еще можете использовать
*
in the path, верно? kubernetes-sigs.github.io/aws-load-balancer-controller/guide/…
Ответ №2:
С тех пор это было исправлено путем добавления
server.servlet.context-path=/*relvantPathName*
В качестве переменной среды для контейнеров. Это специфичная для spring вещь, где для работы необходимо переписать корень.