当前位置:网站首页>Spinnaker调用Jenkins API 返回403错误
Spinnaker调用Jenkins API 返回403错误
2022-08-04 00:00:00 【Jerry00713】
感谢:
Spinnaker调用Jenkins API 返回403错误 - 走看看
https://www.jianshu.com/p/6c7ae50e1784
场景
前段时间,k8s生产环境中选择使用Spinnaker + Jenkins实现CI/CD,但是我在Spinnaker执行构建走到调用jenkins的时候出错

然后我去检查一下Jenkins的日志发现,出现以下报错:
[[email protected] ~]# kubectl logs -f jenkins-56d9fd55f9-xrtgz -n infra
WARNING hudson.security.csrf.CrumbFilter#doFilter: No valid crumb was included in request for /job/dubbo-demo-slave/buildWithParameters by admin. Returning 403.原因
因为Spinnaker是通过跨站的方式调用Jenkins,那么Jenkins默认是开启CSRF保护,所以jenkins就会返回一个403报错
解决
老版本解决方案:
把CSRF保护的勾取消即可。


新版本解决方案:
老版本Jenkins的CSRF保护功能只需要在 系统管理 > 全局安全配置 中便可进行打开或者关闭。让人头疼的是较高版本的Jenkins竟然在管理页面关闭不了CSRF,网上搜索到的资料有写通过 groovy代码 实现取消保护,但是笔者操作未成功,最后,Get到了一种成功的解决姿势。
在Jenkins启动前加入相关取消保护的参数配置后启动Jenkins,即可关闭CSRF,配置内容如下:
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
Jenkins若是跑在Tomcat下,只需在tomcat启动脚本中加入配置即可;若是以jar包形式部署的,只需在启动时加上配置参数即可。
笔者Jenkins是部署在k8s环境中,故启动参数配置在yaml文件中,如下:
cat dp.yaml |grep csrf -C5

整个配置文件:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: jenkins
namespace: infra
labels:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
name: jenkins
template:
metadata:
labels:
app: jenkins
name: jenkins
spec:
volumes:
- name: data
nfs:
server: hdss7-200
path: /data/nfs-volume/jenkins_home
- name: docker
hostPath:
path: /run/docker.sock
type: ''
containers:
- name: jenkins
image: harbor.od.com:180/infra/jenkins:v2.319.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
protocol: TCP
env:
- name: JAVA_OPTS
value: -Xmx512m -Xms512m -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
volumeMounts:
- name: data
mountPath: /var/jenkins_home
- name: docker
mountPath: /run/docker.sock
imagePullSecrets:
- name: harbor
securityContext:
runAsUser: 0
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
revisionHistoryLimit: 7
progressDeadlineSeconds: 600
边栏推荐
- rsync basic usage
- 北京电竞元宇宙论坛活动顺利召开
- [Miscellaneous] How to install the specified font into the computer and then use the font in the Office software?
- jav一键生成数据库文档
- corn表达式 具体详解与案例
- Apple told Qualcomm: I bought a new campus for $445 million and may plan to speed up self-development of baseband chips
- Pytest学习-skip/skipif
- V8中的快慢数组(附源码、图文更易理解)
- 【并发编程】ReentrantLock的lockInterruptibly()方法源码分析
- 我的祖国
猜你喜欢

电子邮件安全或面临新威胁!

用两个栈模拟队列

C# wpf使用ffmpeg命令行实现录屏

The world's first mass production, with the most fixed points!How does this AVP Tier1 lead?

孙宇晨受邀参加36氪元宇宙峰会并发表主题演讲

状态机实验

汉字风格迁移---结合本地和全局特征学习的中文字体迁移

In V8 how arrays (with source code, picture and text easier to understand)
![2022-08-03:以下go语言代码输出什么?A:2;B:3;C:1;D:0。 package main import “fmt“ func main() { slice := []i](/img/a9/6de3c2bae92d09b13b1c36e01f86c2.png)
2022-08-03:以下go语言代码输出什么?A:2;B:3;C:1;D:0。 package main import “fmt“ func main() { slice := []i

689. 三个无重叠子数组的最大和
随机推荐
FinClip, help smart TV more imagination
The world's first mass production, with the most fixed points!How does this AVP Tier1 lead?
逆波兰表达式求值
JS获得URL超链接的参数值
孙宇晨:Web3.0和元宇宙将协助人类更加全面地进入网络世界
JS get parameter value of URL hyperlink
2022-08-03: What does the following go code output?A: 2; B: 3; C: 1; D: 0.package main import "fmt" func main() { slice := []i
密码学基础以及完整加密通讯过程解析
超级完美版布局有快捷键,有背景置换
【杂项】通过Excel为字符串产生条码
HNUCM 您好中国
Shell 用法梳理总结
带你造轮子,自定义一个随意拖拽可吸边的悬浮View组件
SolidEdge ST8安装教程
小米--测试开发
米哈游--测试开发提前批
libnet
Using matlab to solve the linear optimization problem based on matlab dynamic model of learning notes _11 】 【
ros mavros stereo读取rosbag并记录IMU和图片到文件夹
20年将投资美国约2000亿美元,三星电子财大气粗的样子真好看