# Kuboard Proxy - Auth Proxy

Kuboard Proxy 提供了 Auth Proxy 的功能,本文以 Grafana 为例,介绍如何使用 Kuboard Proxy 实现 Grafana 与 Kuboard 的单点登录。

参考 Grafana Auth Proxy Authentication (opens new window) ,我们知道 Grafana 支持多种认证登录方式(Auth Proxy、LDAP、OAuth、Goole、Azure AD、GitHub、GitLab、SAML 等),Auth Proxy 是其中的一种。

一般来说,使用 Auth Proxy,需要在反向代理服务器(Nginx、Apache等)上配置复杂的参数。本文描述了,如何使用 Kuboard Proxy 的功能配置 Grafana Auth Proxy 的步骤。

# 前提

# 安装 Grafana

  • 创建 grafana-ns namespace;

    参考 名称空间管理

  • 在名称空间 grafana-ns 中创建 grafana-pvc 存储卷声明;

    参考 创建存储卷声明

  • 在名称空间 grafana-ns 中创建 grafana 工作负载;

    点击 创建工作负载 按钮,并填写如下表单:

    区块 字段名称 填写内容 字段说明
    基本信息 服务类型 Deployment
    服务分层 监控层
    服务名称 monitor-grafana
    服务描述 Grafana
    副本数量 1
    数据卷 数据卷名称 grafana-volume
    数据卷类型 存储卷声明
    存储卷名称 grafana-pvc
    工作容器 容器名称 grafana
    镜像 grafana/grafana:6.6.2
    环境变量 GF_SERVER_ROOT_URL=
    /proxy/http/grafana-ns/monitor-grafana/:/3000/
    Kuboard Proxy 代理后的 web 路径
    环境变量 GF_AUTH_PROXY_ENABLED=true 为 Grafana 启用 Auth Proxy 认证方式
    环境变量 GF_SECURITY_ADMIN_USER=kuboard-user kuboard-user 设置为 Grafana 的默认管理用户
    挂载点 -> 容器内路径 /var/lib/grafana 将 grafana 产生的数据存储到数据卷中,避免 grafana 重启后,配置的随容器的销毁而丢失
    挂载点 -> 数据卷 grafana-volume
    挂载点 -> 数据卷内子路径 grafana
    访问方式 Service类型 ClusterIP
    Port -> 协议 TCP
    Port -> 服务端口 3000
    Port -> 容器端口 3000 Grafana 的默认端口为 3000

    Kuboard Proxy 代理后的路径格式如下:

    /proxy/<protocol>/<namespace>/<service-name>/:/<port>/

    • protocol: 为容器内应用所接受的传输协议,可选值为 http / https;
    • namespace:被代理对象所在的名称空间;
    • service-name:被代理 Service 的名称;
    • port:目标端口

    截图如下所示:

    image-20200308101542457

# 配置 Kuboard Proxy

  • 完成 Grafana 的部署以后,进入到 monitor-grafana 的工作负载查看界面;

  • 在工作负载查看页面点击 访问方式 Service 区域中的 代理 按钮;

  • 点击 代理配置信息 后的 修改 按钮,修改 Kuboard Proxy 的代理配置;

    填写表格:

    字段名称 填写内容 填写说明
    用户名添加到 Header X-WEBAUTH-USER Grafana Auth Proxy 从请求头中的 X-WEBAUTH-USER获取到当前登录用户的信息;填写此字段后,Kuboard Proxy 会始终将当前登录 Kuboard 的用户名写入到发现后端服务的 HTTP 请求头中,因此,可实现从 Kuboard 到 Grafana 的单点登录
    组名添加到 Header X-WEBAUTH-GROUPS 同上,但是用于从 KuboardProxy 向 Grafana 传递用户所属分组的信息。
    Grafana 只在企业版中处理此字段,请参考 Team Sync (opens new window)
    Cookie TTL 空白 默认使用环境变量 KUBOARD_PROXY_COOKIE_TTL 的取值,或者 36000
    禁用 Rebase 禁用 Grafana 系统中配置了环境变量 GF_SERVER_ROOT_URL ,并且 Grafana 可以正确处理 web 上下文因此,无需在 Kuboard Proxy 中做 Rebase

    由于 Grafana 只在企业版中处理 X-WEBAUTH-GROUPS 字段,如果您使用的是 Grafana 社区版,请自行在登录后的 Grafana 中配置 Teams 信息。

    截图如下所示:

    image-20200308102538049

  • 填写完成后,点击 确定 按钮,保存表单。

    KuboardProxy 的配置信息存储在 Service 的注解 annotation 中。

# 访问 Grafana

  • 完成 Grafana 的部署以后,进入到 monitor-grafana 的工作负载查看界面;

  • 在工作负载查看页面点击 访问方式 Service 区域中的 代理 按钮;

  • 点击 在浏览器窗口中打开 按钮,即可在新窗口中打开 Grafana 界面。

    如果您使用 kuboard-user 登录,则您在 Grafana 中是系统管理员的角色,可以对 Grafana 做任何配置,截图如下所示:

    image-20200308105924109

# 直接导入

本文所创建的 Grafana 部署可以直接导入:

更新时间: 2022-01-03 18:32:47