Как настроить контроллер входа Kubernetes для поддержки двух сервисов?
У меня есть две службы, веб-служба работает на порту 80, а администраторская служба работает на порту 8000. Мне бы хотелось, чтобы все запросы http /admin были проксированы для службы администрирования:8000 и все другие запросы для перехода на веб-службу. обслуживание:80. Я попробовал приведенную ниже конфигурацию, но она не работает. Я также использую Google Kubernetes Engine.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-rules
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/redirect-to-https: "True"
spec:
tls:
- secretName: tls-secret
rules:
- http:
paths:
- path: /admin
backend:
serviceName: admin-service
servicePort: 8000
- path: /
backend:
serviceName: web-service
servicePort: 80
Есть идеи, что я могу делать не так?
2 ответа
Выглядит хорошо, но... ваша служба администратора отвечает на GET /admin
? причина, если вы не используете ingress.kubernetes.io/rewrite-target: /
аннотации на входе, вам нужно поддерживать URI в вашем сервисе поддержки
Способ указать бэкэнд по умолчанию находится вне rules
,
Я думаю, что вы должны вывести веб-сервис за пределы раздела правил, как указано здесь: виртуальный хостинг на основе имени (ищите "Бэкенды по умолчанию")
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-rules
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/redirect-to-https: "True"
spec:
tls:
- secretName: tls-secret
backend:
serviceName: web-service
servicePort: 80
rules:
- http:
paths:
- path: /admin
backend:
serviceName: admin-service
servicePort: 8000