文章目录

  • 一、Jenkins 安装与使用
  • 1. 在服务器上安装 jdk
  • 2.访问jenkins网站
  • 3.Jenkins密码遗忘处理
  • 4. Jenkins 插件管理
  • 5.下载中文汉化插件
  • 二、Jenkins用插件管理用户权限
  • 1.开启权限全局安全配置
  • 2.添加以下三个角色:
  • 3.创建用户
  • 4.给用户分配角色
  • 三、Jenkins凭证管理
  • 1. 安装Credentials Binding插件
  • 2.安装Git插件和Git工具
  • 4.用户密码类型
  • 4.1创建凭证
  • 4.2测试凭证是否可用
  • 4.3 点击构建”Build Now“ 开始构建项目
  • 5.SSH密钥类型
  • 5.1使用root用户生成公钥和私钥
  • 5.2把生成的公钥放在Gitlab中
  • 5.3Jenkins中添加凭证,配置私钥
  • 5.4测试凭证是否可用


一、Jenkins 安装与使用

1. 在服务器上安装 jdk

  • Jenkins需要依赖JDK,所以先安装JDK1.8 ,安装目录为:/usr/lib/jvm
yum install java-1.8.0-openjdk* -y
  • 获取jenkins安装包
下载页面:https://jenkins.io/zh/download/ 
安装文件:jenkins-2.277.4-1.1.noarch.rpm
  • 把安装包上传到192.168.66.101服务器,进行安装
rpm -ivh jenkins-2.277.4-1.1.noarch.rpm
  • 修改Jenkins配置
vim /etc/sysconfig/jenkins
修改内容如下:注意:如果用户使用默认,则需要在系统上创建jenkins用户
JENKINS_USER="root" 
JENKINS_PORT="8888"

k8s Devops方案 devops k8s 部署流程_运维

  • 启动Jenkins
systemctl start jenkins

2.访问jenkins网站

  • 打开浏览器访问http://192.168.74.8:8888

  • 获取并输入admin账户密码
[root@jenkins ~]#cat /var/lib/jenkins/secrets/initialAdminPassword

k8s Devops方案 devops k8s 部署流程_运维_02

  • 跳过插件安装
    因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装
  • 添加一个管理员账户,并进入Jenkins后台

3.Jenkins密码遗忘处理

  • 修改配置文件安全功能禁用
vim /var/lib/jenkins/config.xml
<useSecurity>false</useSecurity>   
//重启jenkins服务
systemctl restart jenkins
可以直接登录修改账号密码

修改jenkins中已有的用户名和ID
vim /var/lib/jenkins/users/users.xml

4. Jenkins 插件管理

Jenkins 本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。

这里建议先把jenkins先升级到最新版本

k8s Devops方案 devops k8s 部署流程_Jenkins_03

修改 Jenkins 插件下载地址 ,Jenkins 国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
Jenkins->Manage Jenkins->Manage Plugins,点击Available 在服务器中修改

cd /var/lib/jenkins/updates
sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
  • 最后,Manage Plugins 点击 Advanced,把Update Site改为国内插件下载地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

k8s Devops方案 devops k8s 部署流程_运维_04

  • Sumbit后,在浏览器输入: http://192.168.74.8:8888/restart ,重启Jenkins。

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_05

5.下载中文汉化插件

Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_06

k8s Devops方案 devops k8s 部署流程_devops_07

重启Jenkins后,就看到Jenkins汉化了,但可能部分菜单汉化不成功

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_08

二、Jenkins用插件管理用户权限

  • 我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限安装Role-based Authorization Strategy插件
    Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"role"
  • k8s Devops方案 devops k8s 部署流程_Jenkins_09


1.开启权限全局安全配置

k8s Devops方案 devops k8s 部署流程_Jenkins_10

k8s Devops方案 devops k8s 部署流程_devops_11

完成后会出现一个标志

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_12


点击进去

k8s Devops方案 devops k8s 部署流程_devops_13

k8s Devops方案 devops k8s 部署流程_jenkins_14

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色):针对某个或者某些项目的角色
Slave roles(奴隶角色):节点相关的权限

2.添加以下三个角色:

baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑 定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
role1:该角色为项目角色。使用正则表达式绑定"apple.",意思是只能操作apple开头的项目。
role2:该角色也为项目角色。绑定"orange.
",意思是只能操作orange开头的项目。

k8s Devops方案 devops k8s 部署流程_运维_15

3.创建用户

在系统管理页面进入 Manage Users

k8s Devops方案 devops k8s 部署流程_Jenkins_16


分别创建两个用户:jack和lisi

k8s Devops方案 devops k8s 部署流程_Jenkins_17

4.给用户分配角色

系统管理页面进入Manage and Assign Roles,点击Assign Roles

绑定规则如下: kali用户分别绑定baseRole和role1角色jack用户分别绑定baseRole和role2角色

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_18


k8s Devops方案 devops k8s 部署流程_devops_19

k8s Devops方案 devops k8s 部署流程_运维_20


k8s Devops方案 devops k8s 部署流程_k8s Devops方案_21

结果为:
jack用户登录,只能看到apple01项目lisi用户登录,只能看到orange01项目

三、Jenkins凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

1. 安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

k8s Devops方案 devops k8s 部署流程_Jenkins_22

可以添加的凭证有5种:

k8s Devops方案 devops k8s 部署流程_devops_23

凭证

说明

Username with password:

用户名和密码

SSH Username with private key:

使用SSH用户和密钥

Secret file:

需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。

Secret text:

需要保存的一个加密的文本串,如钉钉机器人或Github的api token

Certificate:

通过上传证书文件的方式

常用的凭证类型有:Username with password(用户密码)和SSH Username with privatekey(SSH 密钥)

接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。

2.安装Git插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。

k8s Devops方案 devops k8s 部署流程_Jenkins_24


服务器上要安装git

yum install git -y 安装
git --version 安装后查看版本

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_25

4.用户密码类型

4.1创建凭证

Jenkins->凭证->系统->全局凭证->添加凭证

k8s Devops方案 devops k8s 部署流程_jenkins_26

k8s Devops方案 devops k8s 部署流程_devops_27


k8s Devops方案 devops k8s 部署流程_运维_28


k8s Devops方案 devops k8s 部署流程_Jenkins_29

4.2测试凭证是否可用

创建一个FreeStyle项目:新建Item->FreeStyle Project->确定

k8s Devops方案 devops k8s 部署流程_Jenkins_30

  • 找到"源码管理"->“Git”,在Repository URL复制Gitlab中的项目URL


    保存配置
4.3 点击构建”Build Now“ 开始构建项目

k8s Devops方案 devops k8s 部署流程_运维_31


k8s Devops方案 devops k8s 部署流程_k8s Devops方案_32


查看/var/lib/jenkins/workspace/目录,发现已经从Gitlab成功拉取了代码到Jenkins中。

k8s Devops方案 devops k8s 部署流程_jenkins_33

5.SSH密钥类型

SSH免密登录示意图:

k8s Devops方案 devops k8s 部署流程_jenkins_34

5.1使用root用户生成公钥和私钥
ssh-keygen -t rsa

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_35

  • 在/root/.ssh/目录保存了公钥和使用
id_rsa:私钥文件
id_rsa.pub:公钥文件
用cat命令查看
5.2把生成的公钥放在Gitlab中

以root账户登录gitlab->点击头像->Settings->SSH Keys 复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"

k8s Devops方案 devops k8s 部署流程_devops_36


k8s Devops方案 devops k8s 部署流程_k8s Devops方案_37

k8s Devops方案 devops k8s 部署流程_devops_38

5.3Jenkins中添加凭证,配置私钥

在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来

k8s Devops方案 devops k8s 部署流程_k8s Devops方案_39

5.4测试凭证是否可用

新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证

k8s Devops方案 devops k8s 部署流程_运维_40

k8s Devops方案 devops k8s 部署流程_devops_41


构建后成功了

k8s Devops方案 devops k8s 部署流程_运维_42