Rancher2.6 Monitoring Grafana 对接 LDAP
作者简介
谢泽钦,SUSE Rancher 技术支持工程师,负责订阅客户的维护与售后技术支持服务,提供相关技术解决方案。拥有 CKA、CKS 官方认证,多年云计算领域经验,经历了从 OpenStack 到 Kubernetes 的技术变革,对底层操作系统、KVM 虚拟化和 Docker 容器等相关云原生技术拥有丰富的实践经验。
Rancher Monitoring 介绍
在 Rancher 管理平台上,我们可以很顺利地在任何支持管理的 Kubernetes 集群上启用 Rancher Monitoring,实现监控告警功能。Rancher Monitoring 默认使用 Prometheus 来提供相关系统和应用服务的监控,并通过 Grafana 的仪表盘可视化工具进行数据统计监控展示。
思考
默认情况下,Rancher 没有对访问 Grafana 的用户进行太多限制,我们可以使用 Anonymous 用户来查看 Rancher 部署的任何默认仪表盘展示界面。但更多情况下,我们需要通过 Grafana 来制定自定义的仪表盘,此时 Anonymous 用户的 ReadOnly 权限就无法满足我们的需求,但是登录 admin 用户又会对 Grafana 造成一定安全隐患。此时就需要这么一套用户管理系统来管理 Grafana 的用户,对访问的用户进行一定权限的限制与管控。
虽然我们可以使用 Grafana 自带的用户管理列表来对访问的用户进行一定的权限管理,但是这需要额外维护一套用户列表。那么,可不可以直接对接企业内部的 LDAP系统,从而减少维护用户的成本呢?
答案是肯定的。从 Rancher2.5 版本开始,监控架构进行了调整,允许用户自定义更多相关组件的配置。本文将介绍在 Rancher2.6 上,如何通过配置 Rancher Monitoring 来进行 Grafana 对接 LDAP 认证。
先决条件
- Rancher:2.6.4
- k8s:1.20.11
- monitoring:100.1.2+up19.0.3
- OpenLDAP:1.5.0
详细操作
Grafana 对接 LDAP
编辑 Monitoring Yaml 配置 LDAP
- 访问 Rancher explorer UI,进入 Apps & Marketplace,选择 Monitoring,在配置选项中选择 Edit YAML:
- 开启 LDAP 认证配置
在grafana.grafana.ini
层级下新增如下auth.ldap
配置信息开启 LDAP:
grafana: grafana.ini: auth.ldap: allow_sign_up: true config_file: /etc/grafana/ldap.toml enabled: true
rancher-2 3.在grafana
层级下,添加 LDAP 认证参数
grafana: ldap: config: | [[servers]] host = "test.zerchin.xyz" port = 389 use_ssl = false start_tls = false ssl_skip_verify = true bind_dn = "cn=admin,dc=rancherldap,dc=com" bind_password = 'Rancher123' search_filter = "(cn=%s)" search_base_dns = ["cn=group,ou=rancher,dc=rancherldap,dc=com"] [servers.attributes] name = "givenName" surname = "sn" username = "cn" member_of = "memberOf" email = "email" enabled: true
参数说明:
host
:LDAP 服务器地址(IP/Domain,指定多个地址空格分隔)。
port
:LDAP 端口,默认是 389,如果 use_ssl=true 则是 636。
use_ssl
:是否使用加密 TLS 连接。
start_tls
:STARTTLS 是一种明文通信协议的扩展,能够让明文的通信连线直接成为加密连线(使用 SSL/TLS 加密),而不需要使用另一个特别的端口来进行加密通信。
ssl_skip_verify
:是否跳过 SSL 证书验证。
bind_dn
:LDAP 服务账户用户名。
bind_password
:密码(如果密码包含#,则需要用三个括号引起来,例如:“”“#password;”“”)。
search_filter
:用户查询过滤字段,例如"(cn=%s)"
、"(sAMAccountName=%s)"
、 "(uid=%s)"
。
search_base_dns
:用户搜索起点。
- 配置好之后启动监控。
等待监控启动成功后,打开 Grafana UI 界面,默认账号密码为:admin/prom-operator
grafanar-1LDAP 验证
登录之后,左侧进入 Server Admin - LDAP,在 LDAP Connection 下可以看到连接的主机。
在 Test user mapping 下,搜索存在的 LDAP 用户,可以查到用户信息。
grafana-2并且可以使用 LDAP 用户登录访问 Grafana UI 界面。
grafana-3Grafana 基于 SSL 对接 LDAP
上述方法对接了 LDAP 的 389 端口,我们可以使用此端口进行 LDAP 连接。
但是该端口是非安全和未加密的连接,容易造成安全问题,暴露用户相关信息,一般建议389端口仅用在内网或者测试环境。
对于安全要求比较高的环境下,我们可以使用 LDAP 另一个 SSL 加密端口来对接LDAP 服务:636 端口。
创建证书 secret
在cattle-monitoring-system
命名空间下,新建一个名叫certs
的secret,其中ca.pem
写入 CA 证书,tls.crt
写入 LDAP 服务器证书,tls.key
写入 LDAP 服务器证书秘钥。
也可以通过命令行导入相关证书:
kubectl create secret generic certs -n cattle-monitoring-system --from-file=ca.pem --from-file=tls.crt --from-file=tls.key
LDAP SSL 认证配置
编辑 Monitoring yaml 配置
- 在
grafana
层级下,添加extraSecretMounts
挂载 secret 证书:
grafana: extraSecretMounts: - defaultMode: 440 mountPath: /opt/certs name: certs readOnly: true secretName: certs
- LDAP 开启 SSL 认证:
grafana: ldap: config: | [[servers]] host = "test.zerchin.xyz" port = 636 use_ssl = true start_tls = false ssl_skip_verify = false root_ca_cert = "/opt/certs/ca.pem" client_cert = "/opt/certs/tls.crt" client_key = "/opt/certs/tls.key" bind_dn = "cn=admin,dc=rancherldap,dc=com" bind_password = 'Rancher123' search_filter = "(cn=%s)" search_base_dns = ["cn=group,ou=rancher,dc=rancherldap,dc=com"] [servers.attributes] name = "givenName" surname = "sn" username = "cn" member_of = "memberOf" email = "email" enabled: true
port
设置为 636 SSL 加密端口use_ssl
设置为 true,ssl_skip_verify
设置为 false,开启 SSL 认证root_ca_cert
、client_cert
、client_key
配置证书路径
- 配置好之后启动监控。
LDAP SSL 验证
登录 Grafana,左侧进入 Server Admin - LDAP,在 LDAP Connection 下可以看到,已经连上了 636 SSL 加密端口。
并且在Test user mapping下,搜索存在的LDAP用户,可以查到用户信息。
grafana-ssl-1尝试用 LDAP 用户登录,可以正常登录查看数据。
grafana-ssl-2总结
通过上述配置,我们可以顺利对接企业内部的 LDAP 作为 Grafana 用户管理系统,从而能够直接利用现有的用户管理系统进行统一的用户管理和权限认证。当然我们也可以去对接其他的用户管理系统,例如 okta、saml、github、basic 等等,我们可以根据具体的需求参考 Grafana 官方文档进行配置即可。
Grafana 配置参考:https://grafana.com/docs/grafana/next/setup-grafana/configure-security/configure-authentication/ldap/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【超详细】手把手教你搭建MongoDB集群
MongoDB集群搭建 MongoDB集群简介 mongodb 集群搭建的方式有三种: 主从备份(Master - Slave)模式,或者叫主从复制模式。 副本集(Replica Set)模式 分片(Sharding)模式 其中,第一种方式基本没什么意义,官方也不推荐这种方式搭建。另外两种分别就是副本集和分片的方式。 Mongo分片高可用集群搭建 概述 为解决mongodb在replica set每个从节点上面的数据库均是对数据库的全量拷贝,从节点压力在高并发大数据量的场景下存在很大挑战,同时考虑到后期mongodb集群的在数据压力巨大时的扩展性,应对海量数据引出了分片机制。 什么是分片 分片是将数据库进行拆分,将其分散在不同的机器上的过程,无需功能强大的服务器就可以存储更多的数据,处理更大的负载,在总数据中,将集合切成小块,将这些块分散到若干片中,每个片只负载总数据的一部分,通过一个知道数据与分片对应关系的组件mongos的路由进程进行操作。 基础组件 其利用到了四个组件:mongos,config server,shard,replica set mongos 数据库集...
- 下一篇
Go 1.19 RC1 发布,正式版预计在 8 月推出
Go 1.19 发布了第一个 RC 版本,正式版预计在 8 月推出。 主要变化 针对“泛型”的 Bugfix 更新内存模型,与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致 Go 1.19 在启动时将默认提高打开文件的限制值 Go 1.19 race detector 将升级到 v3 版 thread sanitizer Go 1.19 增加"unix" build tag 在 Linux 上,Go 正式支持 64 位龙芯 CPU 架构 (GOOS=linux, GOARCH=loong64) Go 1.19 的 Go 编译器使用 jump table 重新实现了针对大整型数和 String 类型的 switch 语句,平均性能提升 20% 左右 Go 1.19 Release Notes|Go 1.19 Beta1
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题