Error 403 No valid crumb was included in the request 报错解决 容器化jenkins关闭CSRF

现象

gitlab 连接 安装在容器中的jenkins时,如果使用的是高版本的 jenkins ,会出现403错误,Error 403 No valid crumb was included in the request

原因

实际上这是因为 jenkins 的防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)阻拦了请求
本来低版本的 jenkins 可以在界面把这个关掉,但是高版本的 jenkins 认为这个是必要的,直接把关闭这个的界面干掉了,orz…

解决办法

如果是在虚拟机上安装的 jenkins 很好解决,直接修改/usr/local/bin/jenkins.sh配置文件重启服务即可,但是容器化的 jenkins 已经在容器里了就比较尴尬,不过还是有办法的

1. 设置jenkins授权策略
在这里插入图片描述
在这里插入图片描述

2. 修改容器中的配置文件

修改容器配置文件,首先先想到的是 configMap ,但是 configMap 是用来修改容器进程配置文件的,只读权限没法执行 shell 脚本去修改文件,所以,只能进入容器手工改

进入容器有2种方式:

  • kubectl 命令进入
  • docker 命令

不要选择 kubectl 进入,进去之后会发现修改之后无法保存没有 root 权限,用 docker 命令进入(加上 root 权限参数)

# 注意是容器id不是 pod id,还有如果是多节点,那么容器调度到那个节点上就去那个节点上执行
$ docker exec -u root  -it <容器id>  bash

查看容器 id 的办法

# 首先查到pod中容器的名称
$ kubectl describe pod -n kube-ops < pod id >

# 通过名称查询容器id
docker ps -a | grep <容器名称>

在这里插入图片描述

无论那种方式进入,都会惊喜的发现没有 vim ,也没有 vi ,所以得先装一个,用 apt-get 还是 yum ,取决于你这个容器的基础镜像是 ubuntu 还是 centOS

# 我这是 ubuntu ,所以用 apt-get
$ apt-get install vim 

# 如果提示没有 vim 
$ apt-get upgrade

然后就可以改了,修改/usr/local/bin/jenkins.sh , 找到exec java那行,添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true,保存退出

# 最终效果
exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"

然后jenkins全局安全设置下就可以看到这个
在这里插入图片描述

gitlab 那边 webhook 测试就可以成功了
在这里插入图片描述

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值