gitlab与ldap集成

背景:

紧跟gitlab 15.8 on rocky 8,准备将gitlab与ldap打通,后续jenkins也是。方便用户的统一管理,现在的用户管理都是单独的,用户的离职和管理很是麻烦,正好借这次条例流程尝试全部打通,统一管理一下!关于ldap的搭建可以参考:Kuberneters 搭建openLDAP

gitlab ldap集成

gitlab开启并配置ldap

编辑gitlab.rb配置文件

打开编辑gitlab.rb配置文件:

vi /etc/gitlab/gitlab.rb 

image.png
按住ctrl+v进入VISUAL BLOCK模式 选中要注释的行的# ,按d键删除注释符(secondaryx相关的其实不需要去掉......具体参照下面代码块配置!)
image.png
gitlab_rails['ldap_enabled'] = true 开启ldap

 gitlab_rails['ldap_enabled'] = true
# gitlab_rails['prevent_ldap_sign_in'] = false

gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
EOS 为ldap相关配置,请参照个人ldap服务器进行相关配置。具体参数可以参照官方文档https://docs.gitlab.com/ee/administration/auth/ldap/

image.png
注:图只截取了一部分,详细的去看文档!



###! **remember to close this block with 'EOS' below**
 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'LDAP'  ###可以自定义gitlab登陆况显示的名词
     host: '10.0.4.25' ###ldap服务器地址
     port: xxxx  ###ldap端口(我是k8s中搭建的故不是默认的389)
     uid: 'cn'  ###ldap登陆的用户名
     bind_dn: 'cn=admin,dc=xxxx,dc=com'  #绑定的用户的完整 DN
     password: 'xxxxxxxx'                ##绑定用户的密码
     encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
     verify_certificates: false
     smartcard_auth: false
     active_directory: flase
     allow_username_or_email_login: false  ###邮箱用户是否可以登陆
     lowercase_usernames: false
     block_auto_created_users: false   ####不允许用户注册
     base: 'ou=devops,dc=xxxx,dc=com'    ###用户的搜索域
     user_filter: ''      
     ## EE only
#     group_base: ''
#     admin_group: ''
#     sync_ssh_keys: false
#
#   secondary: # 'secondary' is the GitLab 'provider ID' of second LDAP server
#     label: 'LDAP'
#     host: '_your_ldap_server'
#     port: 389
#     uid: 'sAMAccountName'
#     bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
#     password: '_the_password_of_the_bind_user'
#     encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
#     verify_certificates: true
#     smartcard_auth: false
#     active_directory: true
#     allow_username_or_email_login: false
#     lowercase_usernames: false
#     block_auto_created_users: false
#     base: ''
#     user_filter: ''
#     ## EE only
#     group_base: ''
#     admin_group: ''
#     sync_ssh_keys: false
EOS

image.png
特别强调EOF要去掉注释
image.png

加载配置文件

重置加载配置:

sudo gitlab-ctl reconfigure

image.png
重启gitlb服务:

sudo gitlab-ctl restart

image.png
恩小彩蛋命令百度来的:

sudo gitlab-rake gitlab:ldap:check

image.png

ldap用户登陆gitlab

浏览器登陆gitlab地址,出现如下ldap登陆框并登陆用户
image.png
登陆进入用户配置页面:
image.png
貌似强制要求输入邮箱.........
image.png
傻傻的我以为登陆管理员root可以关闭邮件通知就可以?结果发现不是这样的......
image.png
image.png
老老实实配置smtp吧........

gitlab 集成mail配置

编辑gitlab.rb 开启smtp配置

编辑/etc/gitlab/gitlab.rb文件

vi /etc/gitlab/gitlab.rb 

image.png
当然了由于使用qq邮箱先登陆邮箱 设置-账户这里
image.png
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 生成授权码
image.png
将密码 参数替换到配置文件,如下:

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.qq.com"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "75430361@qq.com"
 gitlab_rails['smtp_password'] = "xxxxxx"
 gitlab_rails['smtp_domain'] = "smtp.qq.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = true
 gitlab_rails['smtp_pool'] = false

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
# gitlab_rails['smtp_openssl_verify_mode'] = 'none'

# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"

### Email Settings

# gitlab_rails['gitlab_email_enabled'] = true

##! If your SMTP server does not like the default 'From: gitlab@gitlab.example.com'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '75430361@qq.com'

image.png

加载配置并重启服务

sudo gitlab-ctl reconfigure

image.png

sudo gitlab-ctl restart

image.png

测试邮件发送功能

进入console控制台

[root@gitlab gitlab]# gitlab-rails console

发送测试邮件:

Notify.test_email('820042728@qq.com', 'zhangpengnihao', '张鹏').deliver_now

image.png
邮箱接收到测试邮件,测试通过!
image.png
恩成功了继续尝试一下用户的登陆

ldap用户登陆绑定邮箱

由于zhangpeng用户之前输入了820042728@qq.com邮箱了,这里只能刷新一下 点击mail下面的重新发送了!弹出如下界面,重新发送激活邮件
image.png
邮箱受到激活邮件点击激活:
image.png
重新登陆zhangpeng用户 or 刷新setting配置页面的continue就进入了gitlab控制台:
image.png
尝试一下huozhonghao用户:
image.png
gitlab登陆
image.png
输入mail邮箱475602333@qq.com(邮箱不能与之前用户的重复,貌似一个邮箱只能绑定一个用户)
image.png
image.png
登陆邮箱激活用户:
image.png
登陆huozhonghao用户如下:

image.png
恩 我还修改了此用户的个人头像!

总结

  1. 这里完成了 gitlab 与ldap mail的整合,ldap并没有进行更严格的匹配方式,mail也没有自定义配置
  2. 接下来要考虑gitlab项目组权限?各种配置
  3. 还有怎么能导入其他gitlab的仓库?
  4. 常用的命令: sudo gitlab-ctl reconfigure sudo gitlab-ctl restart gitlab-rails console sudo gitlab-rake gitlab:ldap:check 等等

29 声望
9 粉丝
0 条评论
推荐阅读
Ubuntu20.4 docker运行stable diffusion webui
环境前提系统环境ubuntu20.04 {代码...} nvida cuda显卡驱动默认已经安装成功 {代码...} 安装配置dockerupgrade系统更新系统依赖: {代码...} 卸载之前的Docker环境确认是否之前安装过docker并卸载: {代码...} ...

对你无可奈何阅读 84

关于openLDAP的进一步了解(@Id与@DnAttribute)
前言:本周主要对gitlabWebhook转github的项目写了写前台部分扫了扫尾,并没有遇到什么问题,所以就上周LDAP中的疑问进行了进一步的了解。承接上文中的问题:@Id和@DnAttribute之间是什么关系。为什么在ldapAdmin...

李明4阅读 908

引入钉钉机器人通知 Gitlab CI/CD 的构建状态
本篇是之前写的《利用 Gitlab CI/CD 实现自动构建,自动部署》的续篇。我们知道 Gitlab 的 Pipeline 中的 Job 执行成功或者失败之后,对应 Job 状态会改变为 passedorfailed,当 Job 的状态改变之后, 我们需要再...

陆同学1阅读 4.6k

封面图
写一个Vue DevTools,让开发体验飞一会
近年来,人们越来越关注开发者体验 (DX)。工具和框架也一直在努力改进 DX,比如这两年光速发展的Vite。在大多数人的印象中,Vite的特点是快,但是在我看来让它发展迅速并在前端构建工具占据一席之地的主要原因是...

null仔2阅读 919

封面图
Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.5k

一个令人惊艳的ChatGPT项目,开源了!
最近在GitHub上发现了一个爆火的开源项目。好家伙,凑近一看,居然还是由微软开源,并且和最近炙手可热的ChatGPT息息相关。项目的名字叫做:Visual ChatGPT。[链接]这个项目最早是3月上旬微软开源的,项目宣布开...

CodeSheep2阅读 1.9k

封面图
github 和 gitlab 之自定义首页样式
🎈 个性首页相信很多小伙伴在逛 github 和 gitlab 的时候会发现很多开发者的首页异常的炫酷,如 [链接]🎈 制作步骤是不是立马想拥有一个属于自己的高大上主页了从上图中我们可以看出,其实它展示的一个 readme 里面...

tiny极客3阅读 1.9k评论 4

封面图
29 声望
9 粉丝
宣传栏