У меня есть кластер K8s с несколькими развернутыми службами, и я хотел бы использовать один Ingress для направления каждого входящего запроса в соответствующую службу через уникальное имя хоста DNS.
В настоящее время мне удалось разрешить запрос только при использовании корневого пути, то есть service-123.app.com.
Как только я пытаюсь сделать запрос с путем, он не разрешается. Пути являются допустимыми путями к каждой службе. Например, приложение ожидает service-123.app.com/page/12345.
Возможно, я не совсем понимаю, как должны работать правила K8s Ingress, но я надеялся, что они будут соответствовать только на основе имени хоста и просто пересылать по пути к соответствующему сервису.
Я пропустил что-то очень простое здесь? Любая помощь горячо приветствуется. Спасибо!
Вот мои файлы конфигурации.
Ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
......
name: app-name
namespace: default
spec:
rules:
- host: service-123.app.com
http:
- path: "/*"
backend:
serviceName: service-123
servicePort: 80
- host: service-456.app.com
http:
paths:
- path: "/*"
backend:
serviceName: service-456
servicePort: 80
сервис.yaml
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
app: service-123
name: service-123
namespace: default
spec:
ports:
- name: port8080
port: 80
targetPort: 8080
selector:
app: service-123
type: NodePort

Не уверен, какой K8 и входной контроллер вы используете, но в более поздних версиях K8 вы можете указать pathType, который лучше обрабатывает подстановочные знаки пути.
У вас будет что-то вроде этого:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
......
name: app-name
namespace: default
spec:
rules:
- host: service-123.app.com
http:
- path: /
pathType: Prefix
backend:
serviceName: service-123
servicePort: 80
- host: service-456.app.com
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: service-456
servicePort: 80
Если вы используете входящий контроллер nginx, хороший способ увидеть правильную конфигурацию nginx — посмотреть на фактическую nginx.conf, сгенерированную входным контроллером.
$ kubectl cp <nginx-ingress-controller-pod>:nginx.conf nginx.conf
$ cat nginx.conf
Привет пользователь 2252867. Какую версию Kubernetes вы используете?