Возможна ли настройка 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 setup

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

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


Ответы (0 шт):