在 kubesphere 2.1.0 发布之后,有部分用户遭遇到 jenkins 中权限规则丢失的情况(其中现象为:只有admin用户可以看见流水线,其他用户都不再拥有流水线的任何操作权限)
其中问题原因为 Jenkins 的初始化存在严重漏洞,在一些特殊条件下可能会导致 Jenkins 内部的配置发生数据丢失的情况。
ref: https://issues.jenkins-ci.org/browse/JENKINS-51856
https://github.com/jenkinsci/configuration-as-code-plugin/issues/280
https://github.com/jenkinsci/jenkins/pull/4171
https://github.com/jenkinsci/configuration-as-code-plugin/pull/1204
修复情况:
目前在 jenkins core v2.199中已经合入了保护性代码,并且在 next LTS 当中也带有此修复
并且在 casc 的next release 当中也将包含此代码的修复方案。
我们将在 kubesphere 2.1.1 版本中包含修复方案
目前恢复方法:
kubesphere 存储在 jenkins 当中的权限规则,在 mysql 数据库中拥有相应的备份,我们可以借助工具来恢复 jenkins 当中的权限规则。
下载恢复程序 curl -Ok https://139.198.5.33/tools/jenkins-role-recover_linux_amd64 -u kubesphere:Qcloud@123
执行恢复程序 ./jenkins-role-recover_linux_amd64 --database-connection "root:password@tcp(192.168.0.4:31029)/devops" --jks-address http://192.168.0.2:30180 --jks-username admin --jks-password P@88w0rd
其中 192.168.0.4:31029 为 kubesphere mysql 的本地可访问地址
http://192.168.0.2:30180 为 jenkins 的本地可访问地址
jks-username 与 jks-password 为目前拥有 jenkins管理权限的用户名以及密码