前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8s部署Grafana:OpenLDAP分组授权详解

K8s部署Grafana:OpenLDAP分组授权详解

作者头像
公众号: 云原生生态圈
发布2024-03-22 13:53:28
1400
发布2024-03-22 13:53:28
举报
文章被收录于专栏:云原生生态圈云原生生态圈

作为一名热衷于探索云原生技术的老手,我今天要分享下如何使用openLDAP分组授权Grafana的用户角色。我们将一起在 k8s 集群上部署 Grafana v10.2.2,并通过 Helm、OpenLDAP 认证以及 nginx-ingress 代理来完成这个实验。

背景

在现代的微服务架构中,监控工具对于确保服务的稳定性和性能至关重要。Grafana 提供了丰富的数据可视化功能,支持多种数据源,但它默认的认证机制可能不满足企业级安全要求。OpenLDAP 提供了一种灵活且广泛支持的身份验证解决方案,通过将其与 Grafana 集成,我们可以确保用户访问控制的一致性和安全性。

版本信息

组件

版本号

Grafana

v10.2.2

Kubernetes

v1.26.3

Helm

最新稳定版

Ingress

nginx 1.26

? 启程前的准备

在我们开始这段旅程之前,确保你已经安装了 Helm,这是我们航行的指南针。如果你的集群中还没有 Helm,可以参考官方文https://helm.sh/ 进行安装。

? 配置 Grafana:Helm 的妙用

首先,我们需要添加 Grafana 的 Helm 仓库,这是我们获取 Grafana Helm chart 的起点:

代码语言:javascript
复制
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm search repo grafana

接下来,我们将使用 Helm 来部署 Grafana。我们会选择版本 7.0.21 的 chart,这是一个稳定且功能丰富的版本,我们先下载 chart 到本地,稍后我们还需要自定义 grafana 的配置文件实现角色绑定。

在使用grafana的时候,使用注销账号会遇到502的问题,因此选择了10.2.2版本

代码语言:javascript
复制
helm fetch grafana/grafana --version 7.0.21 --untar

? 强化认证:OpenLDAP 的配置

为了保证后续 Grafana 配置顺利的使用,我们将配置 OpenLDAP 认证。首先,我们需要准备好 openLDAP 用户组的划分,这样可以基于 openLDAP 不同的组,来实现分配 user 在 grafana 里面拥有不同的角色,这里看下openLdap的分组信息:

配置好 openldap 的分组后,编辑刚刚下载下来的 grafana chart,修改目录中的 values.yaml 文件

  1. 修改 ingress 部分
  1. 修改管理员密码
代码语言:javascript
复制
# Administrator credentials when not using an existing secret (see below)
adminUser: admin
adminPassword: nicaicai #云原生生态圈管理员密码初始化
  1. 修改 grafana.ini 的基础配置
  1. 启用 ldap 认证
代码语言:javascript
复制
 auth.ldap:
   enabled: true
   allow_sign_up: true
   config_file: /etc/grafana/ldap.toml
   loglevel: debug
  1. openldap 组与 grafana 权限的绑定
代码语言:javascript
复制
ldap:
 enabled: true
 # `existingSecret` is a reference to an existing secret containing the ldap configuration
 # for Grafana in a key `ldap-toml`.
 existingSecret: ""
 # `config` is the content of `ldap.toml` that will be stored in the created secret
 config: |-
   verbose_logging = true

   [[servers]]
   host = "openldap.devopsman.cn"
   port = 389
   use_ssl = false
   start_tls = false
   ssl_skip_verify = true
   bind_dn = "cn=ldap,ou=People,dc=openldap,dc=devopsman,dc=com"
   bind_password = "nicaicai"
   timeout = 10
   search_filter = "(uid=%s)"
   search_base_dns = ["ou=people,dc=openldap,dc=devopsman,dc=com"]
   group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
   group_search_base_dns = ["ou=tech,ou=Group,dc=openldap,dc=devopsman,dc=com"]
   group_search_filter_user_attribute = "uid"


   [servers.attributes]
   email = "mail"
   name = "givenName"
   surname = "sn"
   username = "cn"

   [[servers.group_mappings]]
   group_dn = "cn=superadmins,ou=tech,ou=Group,dc=openldap,dc=devopsman,dc=com"
   org_role = "Admin"
   grafana_admin = true # Available in Grafana v5.3 and above
   org_id = 1

   [[servers.group_mappings]]
   group_dn = "cn=admins,ou=tech,ou=Group,dc=openldap,dc=devopsman,dc=com"
   org_role = "Admin"
   org_id = 1

   [[servers.group_mappings]]
   group_dn = "cn=grafana-editor,ou=tech,ou=Group,dc=openldap,dc=devopsman,dc=com"
   org_role = "Editor"
   org_id = 1

   [[servers.group_mappings]]
   group_dn = "*"
   org_role = "Viewer"
   org_id = 1

这里我们就完成 grafana 启用 openLDAP 认证的配置了。

? 扬帆起航:安装 Grafana

代码语言:javascript
复制
helm upgrade --namespace qa-logging --version 7.0.21 -f ./grafana.values.yaml loki-grafana ./grafana

? 日志查看

代码语言:javascript
复制
helm list -n qa-logging |grep grafana
kubectl logs -n qa-logging -f -l app.kubernetes.io/name=grafana

? 通过 nginx-ingress 代理访问 Grafana

前面我们配置了 nginx-ingress,这里解析完成 DNS 之后,就可以直接访问了。顺便验证一下不同的 group_mapping 中的用户权限是否一致,我们在 cn=numbers 组中添加了用户 marionxue, 在 grafana 配置中匹配 到group_dn = "*"了,因此 marionxue 在 grafana 中的身份就是 viewer 权限。

从上图可知,该结果与我们的预期是保持一致的。

? 总结

通过上述过程,我们成功地在 Kubernetes 集群中部署了 Grafana,并集成了 OpenLDAP 认证,绑定了openLDAP组与Grafana的角色。实现通过管理openLDAP用户就能统一管理Grafana的认证和平台角色Role,减少了基于OpenLDAP认证的服务的维护复杂度,Jenkins+openLDA集成也是能达到此种效果,非常类似。好了希望这篇文章能够帮助你在你自己的云原生旅程中有所帮助。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-21,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 版本信息
  • ? 启程前的准备
  • ? 配置 Grafana:Helm 的妙用
  • ? 强化认证:OpenLDAP 的配置
  • ? 扬帆起航:安装 Grafana
  • ? 日志查看
  • ? 通过 nginx-ingress 代理访问 Grafana
  • ? 总结
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com