Grafana openshift 监控 OAuth 代理:请求缺少必需参数

Geo*_*rey 5 oauth openshift-origin kubernetes

我正在使用全新安装的 openshift:

oc v3.11.0+62803d0-1
kubernetes v1.11.0+d4cacc0
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://master.mydomain.fr:8443
openshift v3.11.0+2bcedfc-77
kubernetes v1.11.0+d4cacc0
Run Code Online (Sandbox Code Playgroud)

我有3个节点:

[root@master centos]# oc get node
NAME                 STATUS    ROLES     AGE       VERSION
master.mydomain.fr   Ready     master    1d        v1.11.0+d4cacc0
node1.mydomain.fr    Ready     infra     1d        v1.11.0+d4cacc0
node2.mydomain.fr    Ready     compute   1d        v1.11.0+d4cacc0
node3.mydomain.fr    Ready     compute   1d        v1.11.0+d4cacc0
node4.mydomain.fr    Ready     compute   1d        v1.11.0+d4cacc0
Run Code Online (Sandbox Code Playgroud)

我成功配置了所有内容,但现在我正在尝试访问我的 Grafana 仪表板。我创建了一条路线:

grafana.mydomain.fr
Run Code Online (Sandbox Code Playgroud)

我被重定向到 OauthProxy 的登录按钮。当我点击登录时,我被重定向到一个带有 Json 的空白页面:

{"error":"invalid_request","error_description":"The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.","state":"7f3a18c95ae8237d39d35bf8ff317ae4:/"}
Run Code Online (Sandbox Code Playgroud)

这是我得到的 URI:

https://master.mydomain.fr:8443/oauth/authorize?approval_prompt=force&client_id=system%3Aserviceaccount%3Aopenshift-monitoring%3Agrafana&redirect_uri=https%3A%2F%2Fgrafana.mydomain.fr%2Foauth%2Fcallback&response_type=code&scope=user%3Ainfo+user%3Acheck-access&state=7f3a18c95ae8237d39d35bf8ff317ae4%3A%2F
Run Code Online (Sandbox Code Playgroud)

查看日志后,我得到:

no RBAC policy matched
Run Code Online (Sandbox Code Playgroud)

我很确定它与我的配置相关联(可能重定向 URI 不正确)但老实说我不知道​​如何配置它。你有想法吗 ?

提前致谢

Mos*_*ein 2

我在尝试公开 Prometheus (OpenShift 3.11) 时遇到了完全相同的问题,这就是我解决问题的方法。

由于问题没有明确说明路由名称,并且如果您创建的路由不是grafanaopenshift 附带的默认帐户。那么原因之一可能是路由名称,这是因为身份验证过程中使用的路由名称期望与根据以下部分serviceAccount命名的路由一起使用:grafana

# Taken from grafana's serviceAccount
metadata:
  annotations:
    serviceaccounts.openshift.io/oauth-redirectreference.grafana: '{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"grafana"}}'
Run Code Online (Sandbox Code Playgroud)

这使得身份验证专门针对名为 的路由进行grafana,因此请使用所需的域修改原始路由,或者使用您创建的新路由器修改此注释。