LADP打通Gitlab(全指南)

本文详细介绍如何使用Docker搭建LDAP服务器及GitLab,并实现两者的集成。通过具体步骤指导读者配置LDAP认证,使GitLab用户能够通过LDAP进行登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LDAP打通Gitlab认证

前言: 文章中适用读者了解或者掌握 docker、Ldap、phpLdapAdmin、Gitlab

介绍

LDAP是啥:LDAP一般指轻型目录访问协议。轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)。

Gitlab是啥:GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

要做成啥: 用户都存储在LDAP上,gitlab通过使用ldap方式登陆。解决了不同系统,各自独立用户的问题,方便了用户统一在LDAP上进行管理

搭建

操作系统无需多言,只要有docker、docker-compose环境,即可部署。
一台linux机器,部署服务
一个笔记本,访问浏览器界面

LDAP搭建

对LDAP进行部署

root@demo0323:~# mkdir ldap/
root@demo0323:~/ldap# vim docker-compose.yaml
version: '2'
services:
  ldapui:
    image: osixia/phpldapadmin
    environment:
      PHPLDAPADMIN_LDAP_HOSTS: ldap-host
    stdin_open: true
    tty: true
    links:
    - ldap:ldap-host
    ports:
    - 7443:443/tcp
  ldap:
    image: osixia/openldap
    environment:
      LDAP_ADMIN_PASSWORD: admin
      LDAP_DOMAIN: softc.com
      LDAP_ORGANISATION: Rancher
      LDAP_TLS: 'false'
      LDAP_READONLY_USER: 'true'
      LDAP_READONLY_USER_USERNAME: rancher
      LDAP_READONLY_USER_PASSWORD: rancher
    stdin_open: true
    tty: true
    ports:
    - 389:389/tcp
    - 636:636/tcp
root@demo0323:~/ldap# docker-compose up -d 

等待几分钟,拉取镜像创建容器后,就可以使用浏览器访问了

可通过如下信息,访问LDAP可视化管理页面

访问地址: https://192.168.120.217:7443/

访问账号:cn=admin,dc=softc,dc=com

访问密码: admin

image-20210325115516023

LDAP配置

台子搭建好了,总得手工配置几个用户, 之后用来登陆Gitlab使用。

一般推荐使用LDIF直接导入,单从学习角度来看,还是推荐用界面操作,界面操作如下

1、创建组

用户必须在某个组(Generic: Posix Group)下,所有先整一个组出来,操作如下截图

新建子实体
image-20210325120536452

选择组

image-20210325134630905

录入组名称,这里任意写了一个[group01],点击创建对象
image-20210325120627050
点击提交
image-20210325120727147

2、创建用户

在界面如下操作即可创建用户。

如果有创建多个用户的需求,下面的操作可以重复做几次,录入的用户信息不同即可。

  • 创建子实体
    2
  • 创建用户
    image-20210325121017996
  • 录入信息
    image-20210325121448068
  • 提交
    image-20210325121508045

上面用户添加好了,额外还有个属性“email”是必须要的,不然后面有坑

image-20210325121629599

image-20210325121706867

image-20210325121732099

image-20210325121743678

3、验证用户登陆

提前获得用户DN( Distinguished Name): cn=ab,dc=softc,dc=com

我设置的密码是: 123456

退出系统,在用新建用户登陆,登陆成功

image-20210325122354458

到此,我们LDAP部署和配置完成,有几个关键信息记录下来,再后续配置会使用到

LDAP地址:192.168.120.217 (部署ldap容器的主机地址)

LDAP端口:389 (上面部署时候映射出的端口)

LDAP管理用户: cn=admin,dc=softc,dc=com

LDAP管理用户密码: admin

LDAP自建用户: cn=ab,dc=softc,dc=com

LDAP自建用户密码: 123456

Gitlab搭建

搭建前,在搭建的linux机器添加hosts文件记录

访问界面的window机器,也同样添加hosts文件记录

192.168.120.217 gitlab.example.com

搭建测试使用http

root@demo0323:~# mkdir gitlab
root@demo0323:~/gitlab# vim docker-compose.yml 
web:
  image: 'gitlab/gitlab-ee:latest'
  restart: always
  hostname: 'gitlab.example.com'
  ports:
    - '1080:80'
    - '10443:443'
    - '1022:22'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'
root@demo0323:~/gitlab# docker-compose up -d

等待一会,就可以界面访问了

http://gitlab.example.com:1080/users/sign_in

第一次访问要设置八位数以上密码,之后root用户即可登陆
在这里插入图片描述

Gitlab支持LDAP配置

先关闭服务

root@demo0323:~/gitlab# docker-compose down

再修改gitlab.rb文件

#文件部署时候通过volume挂载出来了
root@demo0323:~# vim /srv/gitlab/config/gitlab.rb

取消掉文件中注释行 gitlab_rails[‘ldap_enabled’],并修改成true

gitlab_rails['ldap_enabled'] = true

文件中添加如下内容:

gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
    main:
      label: 'LDAP' #界面显示名称
      host: '192.168.120.217' #ldap部署的机器IP
      port: 389 #ldap部署的端口
      uid: 'uid' #这里选择uid
      bind_dn: 'cn=admin,dc=softc,dc=com' #LDAP管理用户
      password: 'admin' #LDAP管理用户密码
      encryption: 'plain'
      active_directory: true
      allow_username_or_email_login: true
      base: 'dc=softc,dc=com' #基准DN
      user_filter: ''
EOS

上述参数,更多含义请参考官方文档:

https://docs.gitlab.com/ee/administration/logs.html#applicationlog

重新开启服务

root@demo0323:~/gitlab# docker-compose up -d
登陆验证

服务启动成功后,我们打开浏览器访问:http://gitlab.example.com:1080/users/sign_in,有了一个新的登陆方式

image-20210325134245846

点击LDAP登陆,输入自建用户CN:[ab] 和密码[123456]

image-20210325134318010

登陆成功,可正常使用Gitlab

https://pv-bucket.oss-cn-hongkong.aliyuncs.com/typora/image-20210325134411263.png

上面是采用了 ab 来登陆的, 之前咱们也单独给ab 用户添加了一个邮箱【ab@qq.com】,同样也可以采用邮箱进行登陆

End .

过程总结

  • 搭建好以后,登陆不成功怎么办

登陆不成功有很多原因,要一步步排查问题,定位问题原因。
主要流程搭建LDAP,搭建Gitlab,配置Gitlab的LDAP,完成并验证

  • Gitlab登陆失败

最可能是配置Gitlab的LDAP没有配置成功,可以配置完成gitlab.rb文件后,进入容器验证

root@demo0323:~/gitlab# docker ps -a | grep gitlab
1a48e9fcc899 gitlab/gitlab-ee:latest “/assets/wrapper” 16 hours ago Up 16 hours (healthy) 0.0.0.0:1022->22/tcp, 0.0.0.0:1080->80/tcp, 0.0.0.0:10443->443/tcp gitlab_web_1

我这里容器ID是:1a48e9fcc899,进入容器

root@demo0323:~/gitlab# docker exec -it 1a48e9fcc899 bash
root@gitlab:/#

修改你的gitlab.rb文件,这个文件其实就是容器外主机中【/srv/gitlab/config/gitlab.rb】文件

root@gitlab:/# vim /etc/gitlab/gitlab.rb

修改完成gitlab.rb文件后,容器内重启服务

root@gitlab:/# gitlab-ctl reconfigure

使用rake验证ldap配置,如有显示【ab】用户,这此环节成功

root@gitlab:/# gitlab-rake gitlab:ldap:check
Checking LDAP …

LDAP: … Server: ldapmain
LDAP authentication… Success
LDAP users with access to your GitLab server (only showing the first 100 results)
DN: cn=ab,dc=softc,dc=com uid: ab
DN: cn=dd,dc=softc,dc=com uid: dd
DN: cn=ff,dc=softc,dc=com uid: ff
DN: cn=ee,cn=pg01,ou=ou01,dc=softc,dc=com uid: ee

Checking LDAP … Finished

  • 搭建总结

搭建过程并不顺利,主要卡在配置Gitlab的LDAP上, 网上文章虽然很多,但是前面的LDAP这块都给省略了。 (LDAP的结构体系可以去B站上直接搜到专题视频)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值