кластер на виртуалках, развернутый с помощью kubespray.
Поставил в кластер ingress с помощью этого файла
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml
Также в кластере есть несколько моих сервисов, я хочу чтобы они были доступны все по одному хосту, но с разными путями.
У каждого из сервисов есть некоторый набор эндпоинтов.
То есть что то типо того:
.../users/api/v1/getById/0
.../colors/api/v1/getById/12
и т.д
Для этого делаю как-то так
apiVersion: networking.k8s.io/v1kind: Ingress
metadata:
name: user-service-external-config
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "http"
nginx.ingress.kubernetes.io/use-regex: "true"
namespace: default
spec:
ingressClassName: nginx
tls:
- hosts:
- my-project.com secretName: ingress-tls
rules:
- host: my-project.com
http:
paths:
- path: /users(/|$)(.*)
pathType: Prefix
backend:
service:
name: user-service
port:
number: 8080
пробовал разные вариации записи path
/users(/|$)(.*)
/users/(.*)
/users/.*
что-то брал из документации отсюда, что-то с других мест
https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/
ни одна из вариаций не работает, если попытаюсь обратиться по адресу https://my-project.com/users/api/v1/getById/0 то получаю 404, более того получаю следующее предупреждение
Warning: path /user(/|$)(.*) cannot be used with pathType Prefix
хотя вроде как установлена аннотация nginx.ingress.kubernetes.io/use-regex: "true"
если оставить path пустым, то получается обратиться к одному сервису, который был задеплоин первым, то есть сам сервис работает
Кто-нибудь может подсказать в чем проблема?
Rewrite нужен почти наверняка
Проверю, спасибо
Pathtype оставить имплементейшн специфик и оставить регексп
просто замена prefix на ImplementationSpecific не сработало, а вот rewrite сработал
Обсуждают сегодня