4

我无法找到更新我的 keycloak 网守边车的基本 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

我的问题是能够为 sidecar 设置不同的基本 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。

编辑:

我的目标是能够保护多个 Prometheus 并限制对它们的访问。我也在寻找一种解决方案来设置有关领域或客户端的权限。我的意思是,一些 keycloak 用户应该能够,例如,验证和查看 /prometheus-dev 的内容,但不能查看 /prometheus-prod 的内容。

编辑2:

我错过了参数“base_uri”。当我将其设置为“/prometheus”并尝试连接到“ https://monitoring.example.com/prometheus/ ”时,我收到了良好的重定向“ https://monitoring.example .com/prometheus/oauth/authorize?state=XXXXXXX " 但不起作用。在keycloak中,日志为:

“消息:请求中未找到会话,重定向授权,错误:未找到身份验证会话”

4

2 回答 2

2

在 Gatekeeper 版本 7.0.0 中,您可以使用以下选项之一:

  • --oauth-uri
  • --base-uri

但是目前如果你使用,那么在(ie )之后会在回调 url 中添加--base-uri一个尾随。但对我来说,它适用于./baseUri/baseUri//oauth/callbackoauth-uri=/baseUri/oauth

于 2019-10-10T14:12:00.190 回答
0

如果您在浏览器的 307 响应上重写位置标头,就可以做到这一点。如果您在 nginx 入口后面,请添加这些注释。

nginx.ingress.kubernetes.io/proxy-redirect-from: /
nginx.ingress.kubernetes.io/proxy-redirect-to: /prometheus/
于 2020-09-21T06:11:56.873 回答