Вход Kubernetes не работает с редиректом по какому-либо пути, например "/myapp", но работает только для "/"
У меня есть контейнер, работающий по URL- адресу, например http://localhost:8000/ps/app/ui/?pid=201. Контейнер развернут в kubernetes и открыт для службы как "ps-app-ui:8000". Я хочу создать вход, который может быть доступен извне. Входной шаблон выглядит так:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ps-ingress
spec:
rules:
- http:
paths:
- path: /myapp/
backend:
serviceName: ps-app-ui
servicePort: 8000
Проблема в том, что он не работает с этим входом. Я также попытался добавить "ingress.kubernetes.io/rewrite-target: /", но безуспешно. Может ли кто-нибудь помочь мне сделать мое приложение доступным через " http://ingress-ip/myapp/ps/app/ui/?pid=201 "
Буду очень благодарен.
2 ответа
Версия Ingress 0.22.0 или выше изменила способ работы rewrite-target. Вам нужно будет сопоставить путь с регулярным выражением и добавить его в цель перезаписи.
nginx.ingress.kubernetes.io/rewrite-target: /$2
...
...
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /something(/|$)(.*)
Я думаю
- path: /myapp/
соответствует вашему приложению в http://myapp/myapp/
Так что, если у меня есть определение:
- host: app.example.com
http:
paths:
- path: /myapp
Это было бы http://app.example.com/myapp
Если вы хотите использовать http://myapp/ps/app/ui/?pid=201
вам нужно:
- убедитесь, что ваша операционная система переводит
myapp
на IP-адрес, где слушает ваш входной контроллер - добавить
host
myapp
к входу - вы можете оставить путь пустым (при условии, что ваше приложение обрабатывает полный
/ps/app/ui/?pid=201
дорожка)
Это приводит к
rules:
- host: myapp
http:
paths:
- backend:
serviceName: ps-app-ui
servicePort: 8000
Этот вход будет перенаправлять весь трафик на хост myapp
к вашим услугам