Я пытаюсь настроить входной балансировщик нагрузки.
По сути, у меня есть один бэкэнд-сервис с несколькими путями.
Допустим, имя моей внутренней службы NodePort - hello-app. Модуль, связанный с этим сервисом, предоставляет несколько путей, таких как / foo и / bar. Ниже приведен пример
Служба NodePort и соответствующее развертывание
apiVersion: v1
kind: Service
metadata:
name: hello-app
spec:
selector:
app: hello-app
type: NodePort
ports:
- protocol: "TCP"
port: 7799
targetPort: 7799
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app
labels:
app: hello-app
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: us.gcr.io/hello-app:latest
Теперь при выполнении запроса, как показано ниже, я сталкиваюсь с ошибкой 404.
http://{ingress-address:port}/foo
http://{ingress-address:port}/bar
В качестве альтернативы я попробовал следующие конфигурации входа, но в обоих случаях это не помогло.
Входная конфигурация 1
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: basic-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: hello-app
servicePort: 7799
Входная конфигурация 2
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: basic-ingress
spec:
backend:
serviceName: hello-app
servicePort: 7799
Сообщение об ошибке
10.88.16.10 - - [20 / Jan / 2019 08:50:55] "GET / HTTP / 1.1" 404 -
[2019-01-20 08:50:55] [INFO] [_internal] [_log] 10.88.16.10 - - [20 / Jan / 2019 08:50:55] "GET / HTTP / 1.1" 404 -
Я рассмотрел пример упоминания в этой ссылке, но предполагается, что разные пути относятся к разным внутренним сервисам. В моем случае несколько путей принадлежат одному и тому же внутреннему сервису.
Похоже, что полный путь не пересылается нисходящему бэкэнд-сервису от входа, что приводит к неверному запросу.
Может кто-нибудь подсказать, как правильно настроить вход для вышеуказанного требования?