背景:

紧跟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: falseEOS


特别强调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用户如下:


恩 我还批改了此用户的个人头像!

总结

  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 等等