【发布时间】:2020-01-05 14:53:52
【问题描述】:
我在 kubernetes 中运行 Grafana v6.2.4,使用基本身份验证。我想使用 k8s 代理进行测试(即kubectl proxy --port=8080)。我已将GF_SERVER_ROOT_URL 环境变量更改为:
{
"name": "GF_SERVER_ROOT_URL",
"value": "http://localhost:8080/api/v1/namespaces/my-namespace/services/grafana-prom:80/proxy/"
}
这使我可以通过浏览器http://localhost:8080/api/v1/namespaces/my-namespace/services/grafana-prom:80/proxy/ 登录并使用 Grafana。
但是,我想通过 API 使用它。如果我向http://localhost:8080/api/v1/namespaces/my-namespace/services/grafana-prom:80/proxy/api/dashboards/db 发送请求,我会返回
{
"message": "Unauthorized"
}
但是,如果我设置了一个 kubernetes 端口转发并将相同的请求发送到http://localhost:30099/api/dashboards/db,那么它会成功。
除了 GF_SERVER_ROOT_URL 之外,是否还有其他环境变量我应该更改,以便 API 服务器根通过 k8s 代理,即 http://localhost:8080/api/v1/namespaces/my-namespace/services/grafana-prom:80/proxy/api/dashboards/db?我看过here,但找不到。
否则通过k8s代理访问API的正确方法是什么?
我应该补充一点,我特别想使用kubetctl proxy 作为kubectl port-forward 的替代品,所以我希望在这里找到建议的替代品https://stackoverflow.com/a/45189081/1011724
【问题讨论】:
-
您是如何为 API 请求发送身份验证的?
-
基本身份验证,使用邮递员。我对代理和端口转发都使用了相同的方法,并且端口转发身份验证有效。
-
我的猜测:某些东西修改了
Authorization请求标头(可能添加了 Bearer 令牌),因此 Grafana 无法识别它。尝试在 Grafana pod 中嗅探请求并检查请求标头。
标签: kubernetes proxy grafana grafana-api