У меня есть кластер EKS, и в настоящее время я использую маршрутизацию на основе пути. Я ранее публиковал эту ветку, поэтому вся моя конфигурация там: Kubernetes: 502 (Плохое бегство)
Мой контроллер входящего трафика находится оттуда: https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/mandatory.yaml
Вот мой вход:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: simple-fanout-example
namespace : default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: domain.com
http:
paths:
- path: /bleble(/|$)(.*)
backend:
serviceName: bleble-svc
servicePort: 8080
- path: /hello-world
backend:
serviceName: hello-world-svc
servicePort: 8080
Это работает абсолютно нормально, пока вы не попытаетесь пойти куда-нибудь, кроме domain.com/bleble или domain.com/hello-world. Службы должны ссылаться друг на друга, а запрашиваемый ими uri - это просто domain.com, что, очевидно, не работает, потому что служба находится по адресу domain.com/nameoftheservice.
Две проблемы:
- Имя сервиса bleble, поэтому мы решили, что путь должен быть / bleble. Я видел в этой документации (kubernetes.github.io/ingress-nginx/examples/rewrite), что добавление (/|$)(.*) позволило бы перезаписать. Мы хотим использовать url как domain.com/bleble/swagger или domain.com/bleble/clients, ... Но когда мы их набираем, он возвращает к тому, что было на / bleble
- Мне нужен bleble, чтобы получить информацию от hello-world. Прямо сейчас, вместо перехода с domain.com/bleble на domain.com/hello-world, он переходит с domain.com/bleble на domain.com. кажется, что он может вызывать только имя хоста, а не путь.
Я пробовал использовать один входящий ресурс и получил nginx.ingress.kubernetes.io/app-root : /bleble
, но это не работает. Я тоже пробовал аннотацию nginx.ingress.kubernetes.io/rewrite-target: /coretest
Спасибо за помощь!
/bleble(/|$)(.*)
- очень странное регулярное выражение;$
всегда должен быть завершающим символом, но ваш говорит match / bleble, конец строки, а затем все, что идет после конца строки; возможно, вы имели в виду/bleble(?:/(.*))$
, а затем изменили цель перезаписи на$1
? - person mdaniel   schedule 07.06.2019kubectl exec -it $POD_NAME -- /nginx-ingress-controller --version
- person A_Suh   schedule 25.06.2019