1. 升级

在生产环境中,需要定期维护Jenkins,如Jenkins TLS版本升级,插件版本升级!虽然升级可能代理一定的不稳定性,但是能大幅度提升安全性,建议定期维护!
Jenkins 升级操作手册 : https://www.jenkins.io/doc/upgrade-guide/
升级完毕后,也建议升级所有可以升级的插件


2. 权限管理

Jenkins的权限管理确定了Jenkins的安全性,安装完毕Jenkins后需要做一些降低的配置,稍微提升下安全性!

2.1. Jenkins 全局安全配置

image.png
image.png

2.2. RBAC

针对用户的权限设置,推荐使用RBAC体系去实现,需要安装插件 Role-based Authorization Strategy

2.2.1. 配置角色

  • 配置授权方式: 【系统管理】—>【授权策略】—>选择 Role-Based Strategy

image.png

  • 配置角色:【系统管理】—>【Manage and Assign Roles】—>【Manage Roles】

全局角色一般中小公司可以划分两个即可,一个是管理员,一个是查看者,一个项目创建者
item角色的划分看公司的权限粒度而定,建设不同的部门使用一个Jenkins Master,那么可以根据部门划分,如下面devops部门。
另外根据环境不同,又分为生产环境和测试环境,生产环境比较敏感,建议区分管理员和执行员。
节点角色一般可以不用细分,统一由管理员管理即可。
image.png

  • 解决安全警告提示

配置完毕后,如果出现以下报错,可以安装 Authorize Project Plugin 解决
2021-05-28_21-43-00.png
安装完毕后,【系统管理】—>【全局安全配置】—>添加以下配置:
image.png

2.2.2. 授权

  • 创建用户

【系统管理】—>【管理用户】—>【新建用户】
为了模拟,创建以下用户

用户名 姓名 角色 权限
tanghezheng 汤和正 devops 部门老大 devops 所有项目权限
zhengleyong 郑乐咏 devops 主程 devops 测试环境执行权限
duyuanzhou 杜元洲 devops 运维 devops 生产环境编辑/执行权限
caijunjie 蔡俊捷 devops 运维 devops 生产环境执行权限
pengyingzhe 彭英哲 其他人员 无项目权限
  • 分配角色

【系统管理】—>【Manage and Assign Roles】—>【Assign Roles】
image.png

2.2.3. 权限测试

请自行验证!


3. 备份和恢复

Jenkins 没有使用外部的数据库,仅仅使用自己 jenkins home 目前进行存储,所有的文件都是持久化到本地磁盘,因此备份Jenkins一般就是备份该目录下的文件即可。
Jenkins 目录下各个文件功能:

  1. workflow-libs // 共享库
  2. users // 用户数据
  3. userContent // 用户数据, 本Jenkins 中为空
  4. updates // 插件下载地址配置
  5. secrets // 密钥信息
  6. remoting.jar // agent启动时需要的jar文件
  7. remoting // agent的缓存和日志信息
  8. nodes // 节点信息
  9. jobs // job信息
  10. fingerprints // 用户的操作记录信息
  11. *.xml // 配置信息
  12. logs // 日志信息,不需要备份
  13. caches // 缓存目录,不需要备份
  14. workspace // 工作空间,无需备份

3.1. 使用插件备份(推荐)

使用 ThinBackup 备份的优势:

  • 操作简单: 在Jenkins界面操作备份和恢复
  • 支持增量备份和全量备份的计划任务
  • 支持选择备份核心数据
  • 可以轻松恢复到指定时间点的数据备份
  • 静默模式备份,保证了数据安全和完整性

    3.1.1. 配置备份

    【系统管理】—>【ThinBackup】—> 【settings】
    image.png

    3.1.2. 恢复备份

    【系统管理】—>【ThinBackup】—> 【Resotre】
    需要注意的事情:如果 Jenkins Home被彻底删除,那么可以恢复Job任务,部分文件没有备份,所有无法恢复!比较适合用户对流水线误操作而进行恢复的场景!

    3.2. 使用git备份(不推荐)

    这种备份方式每次都是增量备份,可以恢复到任何一次的备份数据。实际操作中,需要注意以下三个方面:

  • 并不是所有的目录都需要备份,选择性备份数据

  • 如果当前有任务在进行,可能会导致该次备份数据异常
  • 备份过程中,需要删除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’

[root@duduniao ~]# cat /opt/apps/prometheus/conf.d/jenkins.yml

  • targets:

    • ‘jenkins.ddn.com’ ```
  • 配置grafana面板

此处仅作演示,生产中应当根据需求配置面板:
https://grafana.com/grafana/dashboards/9524/revisions


05-2-4-Jenkins管理 - 图9