У меня есть сервис kube с ресурсом /customers
, который вернет всех клиентов. Он также может вернуть указанного клиента c по номеру /customers/1
. Я настроил вход Traefik следующим образом:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
traefik.frontend.rule.type: PathPrefix
name: customerd
namespace: video
spec:
rules:
- host: custd.kube
http:
paths:
- backend:
serviceName: customerd
servicePort: http
path: /customers
- backend:
serviceName: customerd
servicePort: http
path: /custdhealth
- backend:
serviceName: customerd
servicePort: http
path: /metrics
- backend:
serviceName: customerd
servicePort: http
path: /sleeper
Обратите внимание, что присутствует следующая аннотация: traefik.frontend.rule.type: PathPrefix
. Из документации Traefik:
Используйте сопоставитель * Prefix *, если ваш бэкэнд прослушивает определенный базовый путь, но также обслуживает запросы по подпутям. Например, PathPrefix: / products будет соответствовать / products, а также / products / shoes и / products / shirts. Поскольку путь пересылается как есть, ожидается, что ваш бэкэнд прослушивает /products.
Проблема заключается в том, что когда я отправляю запрос на /customers/1
, ответ - 404. подтвердил, что запрос не доходит до сервиса. Если я изменю PathPrefix
на PathPrefixStrip
, запросы на /customers
вернут 404, как и ожидалось, поскольку служба не прослушивает /
. Похоже, я правильно использую аннотацию.
Есть идеи, что я делаю неправильно, или дальнейшие шаги по устранению неполадок?