背景:
紧跟 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
按住 ctrl+ v 进入 VISUAL BLOCK 模式 选中要正文的行的#,按 d 键删除正文符(secondaryx 相干的其实不须要去掉 …… 具体参照上面代码块配置!)
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/
注:图只截取了一部分,具体的去看文档!
###! **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
特别强调 EOF 要去掉正文
加载配置文件
重置加载配置:
sudo gitlab-ctl reconfigure
重启 gitlb 服务:
sudo gitlab-ctl restart
恩小彩蛋命令百度来的:
sudo gitlab-rake gitlab:ldap:check
ldap 用户登陆 gitlab
浏览器登陆 gitlab 地址,呈现如下 ldap 登陆框并登陆用户
登陆进入用户配置页面:
貌似强制要求输出邮箱 ………
傻傻的我认为登陆管理员 root 能够敞开邮件告诉就能够?后果发现不是这样的 ……
老老实实配置 smtp 吧 ……..
gitlab 集成 mail 配置
编辑 gitlab.rb 开启 smtp 配置
编辑 /etc/gitlab/gitlab.rb 文件
vi /etc/gitlab/gitlab.rb
当然了因为应用 qq 邮箱先登陆邮箱 设置 - 账户这里
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务 生成受权码
将明码 参数替换到配置文件,如下:
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'
加载配置并重启服务
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
测试邮件发送性能
进入 console 控制台
[root@gitlab gitlab]# gitlab-rails console
发送测试邮件:
Notify.test_email('820042728@qq.com', 'zhangpengnihao', '张鹏').deliver_now
邮箱接管到测试邮件,测试通过!
恩胜利了持续尝试一下用户的登陆
ldap 用户登陆绑定邮箱
因为 zhangpeng 用户之前输出了 820042728@qq.com 邮箱了,这里只能刷新一下 点击 mail 上面的从新发送了!弹出如下界面,从新发送激活邮件
邮箱受到激活邮件点击激活:
从新登陆 zhangpeng 用户 or 刷新 setting 配置页面的 continue 就进入了 gitlab 控制台:
尝试一下 huozhonghao 用户:
gitlab 登陆
输出 mail 邮箱 475602333@qq.com(邮箱不能与之前用户的反复,貌似一个邮箱只能绑定一个用户)
登陆邮箱激活用户:
登陆 huozhonghao 用户如下:
恩 我还批改了此用户的个人头像!
总结
- 这里实现了 gitlab 与 ldap mail 的整合,ldap 并没有进行更严格的匹配形式,mail 也没有自定义配置
- 接下来要思考 gitlab 项目组权限?各种配置
- 还有怎么能导入其余 gitlab 的仓库?
- 罕用的命令:sudo gitlab-ctl reconfigure sudo gitlab-ctl restart gitlab-rails console sudo gitlab-rake gitlab:ldap:check 等等