Keycloak gatekeeper: установить базовый URL
Я не могу найти способ обновить базовый URL-адрес моей коляски с привратником. Моя конфигурация хорошо работает со службами, для которых задан базовый URL(например: https://monitoring.example.com/), а не с настраиваемым базовым путем (например, https://monitoring.example.com/prometheus).
Мой конфиг yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: prometheus-deployment
spec:
replicas: 1
template:
metadata:
name: prometheus
spec:
containers:
- name: prometheus
image: quay.io/coreos/prometheus:latest
args:
- '--web.external-url=https://monitoring.example.com/prometheus'
- '--web.route-prefix=/prometheus
- name: proxy
image: keycloak/keycloak-gatekeeper:5.0.0
imagePullPolicy: Always
args:
- --resource=uri=/*
- --discovery-url=https://auth.example.com/auth/realms/MYREALM
- --client-id=prometheus
- --client-secret=XXXXXXXX
- --listen=0.0.0.0:5555
- --enable-logging=true
- --enable-json-logging=true
- --upstream-url=http://127.0.0.1:9090/prometheus
Моя проблема заключается в том, чтобы иметь возможность установить другой базовый URL-путь ("/prometheus") для коляски, поскольку при открытии https://monitoring.example.com/prometheus я получаю перенаправление 307 на https://monitoring.example.com/oauth/authorize?state=XXXXXXX Принимая во внимание, что это должен быть https://monitoring.example.com/prometheus/oauth/authorize?state=XXXXXXX
Я попытался с параметром "--redirection-url = https://monitoring.example.com/prometheus", но это все еще перенаправляет меня на тот же URL.
РЕДАКТИРОВАТЬ:
Моя цель - иметь возможность защитить несколько Прометей и ограничить доступ к ним. Я также ищу решение, чтобы установить разрешение относительно области или клиента. Я имею в виду, что некоторые пользователи Keycloak должны иметь возможность, например, авторизоваться и видеть содержимое / prometheus-dev, но не / prometheus-prod.
EDIT2:
Я пропустил параметр "base_uri". Когда я установил его на "/ prometheus" и попытался подключиться к " https://monitoring.example.com/prometheus/", я получил хорошее перенаправление " https://monitoring.example.com/prometheus/oauth/authorize?state=XXXXXXX", но не работает. В keycloak журнал выглядит так:
msgstr: сеанс не найден в запросе, перенаправление для авторизации, ошибка: сеанс аутентификации не найден
0 ответов
В Gatekeeper версии 7.0.0 вы можете использовать одну из следующих опций:
--oauth-uri
--base-uri
Но в настоящее время, если вы используете --base-uri
, затем замыкающий /
будет добавлен к URL обратного вызова после baseUri
(т.е. /baseUri//oauth/callback
). Но для меня он отлично работает сoauth-uri=/baseUri/oauth
.
Это можно сделать, если переписать заголовок местоположения в ответах 307 браузеру. Если вы находитесь за входом nginx, добавьте эти аннотации.
nginx.ingress.kubernetes.io/proxy-redirect-from: /
nginx.ingress.kubernetes.io/proxy-redirect-to: /prometheus/