1. 升级
在生产环境中,需要定期维护Jenkins,如Jenkins TLS版本升级,插件版本升级!虽然升级可能代理一定的不稳定性,但是能大幅度提升安全性,建议定期维护!
Jenkins 升级操作手册 : https://www.jenkins.io/doc/upgrade-guide/
升级完毕后,也建议升级所有可以升级的插件
2. 权限管理
Jenkins的权限管理确定了Jenkins的安全性,安装完毕Jenkins后需要做一些降低的配置,稍微提升下安全性!
2.1. Jenkins 全局安全配置
2.2. RBAC
针对用户的权限设置,推荐使用RBAC体系去实现,需要安装插件 Role-based Authorization Strategy
2.2.1. 配置角色
- 配置授权方式: 【系统管理】—>【授权策略】—>选择 Role-Based Strategy
- 配置角色:【系统管理】—>【Manage and Assign Roles】—>【Manage Roles】
全局角色一般中小公司可以划分两个即可,一个是管理员,一个是查看者,一个项目创建者
item角色的划分看公司的权限粒度而定,建设不同的部门使用一个Jenkins Master,那么可以根据部门划分,如下面devops部门。
另外根据环境不同,又分为生产环境和测试环境,生产环境比较敏感,建议区分管理员和执行员。
节点角色一般可以不用细分,统一由管理员管理即可。
- 解决安全警告提示
配置完毕后,如果出现以下报错,可以安装 Authorize Project Plugin 解决
安装完毕后,【系统管理】—>【全局安全配置】—>添加以下配置:
2.2.2. 授权
- 创建用户
【系统管理】—>【管理用户】—>【新建用户】
为了模拟,创建以下用户
用户名 | 姓名 | 角色 | 权限 |
---|---|---|---|
tanghezheng | 汤和正 | devops 部门老大 | devops 所有项目权限 |
zhengleyong | 郑乐咏 | devops 主程 | devops 测试环境执行权限 |
duyuanzhou | 杜元洲 | devops 运维 | devops 生产环境编辑/执行权限 |
caijunjie | 蔡俊捷 | devops 运维 | devops 生产环境执行权限 |
pengyingzhe | 彭英哲 | 其他人员 | 无项目权限 |
- 分配角色
【系统管理】—>【Manage and Assign Roles】—>【Assign Roles】
2.2.3. 权限测试
请自行验证!
3. 备份和恢复
Jenkins 没有使用外部的数据库,仅仅使用自己 jenkins home 目前进行存储,所有的文件都是持久化到本地磁盘,因此备份Jenkins一般就是备份该目录下的文件即可。
Jenkins 目录下各个文件功能:
workflow-libs // 共享库
users // 用户数据
userContent // 用户数据, 本Jenkins 中为空
updates // 插件下载地址配置
secrets // 密钥信息
remoting.jar // agent启动时需要的jar文件
remoting // agent的缓存和日志信息
nodes // 节点信息
jobs // job信息
fingerprints // 用户的操作记录信息
*.xml // 配置信息
logs // 日志信息,不需要备份
caches // 缓存目录,不需要备份
workspace // 工作空间,无需备份
3.1. 使用插件备份(推荐)
使用 ThinBackup 备份的优势:
- 操作简单: 在Jenkins界面操作备份和恢复
- 支持增量备份和全量备份的计划任务
- 支持选择备份核心数据
- 可以轻松恢复到指定时间点的数据备份
-
3.1.1. 配置备份
【系统管理】—>【ThinBackup】—> 【settings】
3.1.2. 恢复备份
【系统管理】—>【ThinBackup】—> 【Resotre】
需要注意的事情:如果 Jenkins Home被彻底删除,那么可以恢复Job任务,部分文件没有备份,所有无法恢复!比较适合用户对流水线误操作而进行恢复的场景!3.2. 使用git备份(不推荐)
这种备份方式每次都是增量备份,可以恢复到任何一次的备份数据。实际操作中,需要注意以下三个方面:
并不是所有的目录都需要备份,选择性备份数据
- 如果当前有任务在进行,可能会导致该次备份数据异常
-
3.3. 直接全量备份jenkins home(推荐)
每次全量备份 Jenkins home 目录是最简单也是最暴力的,主要特点:
没有增量备份,会导致备份文件比较大
- 即使整个Jenkins Home 被删除也能快速恢复,建议 nextBuildNumber 不要备份
4. 监控
Jenkins监控比较简单,使用插件导出Jenkins指标,并且让Prometheus采集即可。具体操作如下:
- 安装Prometheus监控插件
- 配置Prometheus ```yaml [root@duduniao ~]# cat /opt/apps/prometheus/prometheus.yml global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting: alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: ‘prometheus’
static_configs:
- targets: [‘localhost:9090’]
- job_name: ‘jenkins’
metrics_path: ‘/prometheus/‘
file_sd_configs:
- files:
- ‘conf.d/jenkins.yml’
- files:
[root@duduniao ~]# cat /opt/apps/prometheus/conf.d/jenkins.yml
targets:
- ‘jenkins.ddn.com’ ```
配置grafana面板
此处仅作演示,生产中应当根据需求配置面板:
https://grafana.com/grafana/dashboards/9524/revisions