Возможна ли настройка ingress rules под keycloak в k8s с несколькими backend service?
Задача состоит в том, чтобы развести на уровне ingress обращения между несколькими сервисами. Столкнулся с тем, что keycloak не работает при настройке обращения через my-service.my-url.com/keycloak.
Пример ingress.yaml:
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: my-ing
namespace: my-ns
spec:
rules:
- host: my-service.my-url.com
http:
paths:
#c keycloak пробрасываем на нужный сервис
- path: /keycloak(/|$)(.*)
pathType: Prefix
backend:
service:
name: keycloak
port:
number: 8090
# все остальные запросы на наш основной сервис
- path: /
pathType: Prefix
backend:
service:
name: my-main-service
port:
number: 8080
В итоге ingress отрабатывает штатно, но после первого обращения к сервису keycloak он возвращает url для авторизации c /auth:
my-service.my-url.com/auth
Cоответсвенно ingress пробрасывает этот запрос уже по второму правилу на основной сервис, который ничего не знает про /auth...
Если же привести к виду
- host: my-service.my-url.com
http:
paths:
#c keycloak пробрасываем на нужный сервис
- path: /auth(/|$)(.*)
pathType: Prefix
backend:
service:
name: keycloak
port:
number: 8090
# все остальные запросы на наш основной сервис
- path: /
pathType: Prefix
backend:
service:
name: my-main-service
port:
number: 8080
то сваливаемся в рекурсию: ingress убирает /auth, keycloak снова его дописывает, ingress убирает и т.д.
Соответственно вопрос - есть ли, в принципе, возможность реализовать такое правило?
Естественно можно просто сделать правило на два url вида:
rules:
- host: my-service.my-url.com
http:
******
- host: my-keycloak.my-url.com
http:
******
будет работать. Но такой вариант, к сожалению, не подходит.
Также пытался настроить через задание base url в настройках самого keycloak:

После этого сам keycloak перестает отвечать после редиректа:

Подскажите пожалуйста - есть ли вообще варианты такой настройки под keycloak? Спасибо!