DevOps实战之部署Jenkins

目标

  1. 搭建Jenkins服务
  2. 配置LDAP登录

环境及镜像版本说明

基础环境

  • CentOS 7.6
  • Kubernetes 1.18.15
  • Docker 19.03.9

    Docker Image版本

    jenkins/jenkins:lts-jdk11

部署

创建NFS

资源清单

jenkins资源清单

启动Jenkins

1
2
cd ~/jenkins
kubectl apply -f .

访问Web页面

访问入口:http://[NodeIp]:30002/

初次访问时,需要使用initialAdminPassword中的字符串进行登录,由于配置了共享存储,可不用进入容器中查询,直接到相应的挂载目录下查找。

cat [共享存储路径]/secrets/initialAdminPassword

安装推荐插件,或自定义选择插件安装。

配置ldap登录

创建LDAP组和用户

  1. 使用cn=admin,dc=example,dc=org登录LDAP
  2. 创建Posix Group,ldap
  3. 在Posix Group下创建User Account,admin

配置Jenkins

管理员登录jenkins后,进入Manage Jenkins,点击Security下的Configure Global Security

Configure Global Security页面下,配置安全域,选择LDAP方式。

配置详细信息

  1. Server: LDAP服务器地址,使用ldap的Service名称+端口号ldap://ldap-service:389。因创建的ldap的Service类型是NodePort,也可以使用节点ip:port。
  2. User search base: dc=example,dc=org
  3. User search filter: uid={0}
  4. Group search base: dc=example,dc=org
  5. Manager DN: cn=admin,dc=example,dc=org
  6. Manager Password: admin

配置完LDAP相关信息后,点击Test LDAP settings

配置LDAP后无法登录Jenkins问题

由于配置不当导致Jenkins无法登录时,可以修改config.xml,去除ldap认证

  1. cd到NFS挂载的路径下,备份config.xml
  2. 在配置文件中找到
1
2
3
<securityRealm class="hudson.security.LDAPSecurityRealm" plugin="ldap@1.20">
……
</securityRealm>

并将其修改为

1
2
3
4
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>