记录k8s中部署jenkins静态节点的过程
创建固定节点
#创建后获取到相关信息
#在命令行中启动节点
java -jar agent.jar -jnlpUrl http://172.16.77.64:8081/computer/k8s%2D01/jenkins-agent.jnlp -secret effca158c86e53a1fcfee124af778966e9701d5cdbae2a3cbd14f7fb96c8d152 -workDir "/home/jenkins"
Run from agent command line, with the secret stored in a file:
echo effca158c86e53a1fcfee124af778966e9701d5cdbae2a3cbd14f7fb96c8d152 > secret-file
java -jar agent.jar -jnlpUrl http://172.16.77.64:8081/computer/k8s%2D01/jenkins-agent.jnlp -secret @secret-file -workDir "/home/jenkins"
在k8s创建对应pod
---
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: jenkinsagent
name: jenkinsagent
namespace: devops
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: jenkinsagent
template:
metadata:
labels:
k8s-app: jenkinsagent
namespace: devops
name: jenkinsagent
spec:
containers:
- name: jenkinsagent
image: jenkins/inbound-agent
securityContext:
privileged: true
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 500m
memory: 512Mi
env:
- name: JENKINS_URL
value: http://172.16.77.64:8081
- name: JENKINS_SECRET
value: effca158c86e53a1fcfee124af778966e9701d5cdbae2a3cbd14f7fb96c8d152
- name: JENKINS_AGENT_NAME
value: k8s-01
- name: JENKINS_AGENT_WORKDIR
value: /home/jenkins/workspace
如果遇到了agent启动时的链接问题,可以参考在yaml中加上这个变量。即使用websocket的方式链接
- name: JENKINS_WEB_SOCKET
value: true
示例
创建一个测试的 pipeline 项目,然后填写 Jenkinsfile 内容。
pipeline {
agent {
node { label "k8s-01"} //注意,这里是填写的agent的lable,可以和agent名字不一样
}
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
执行状态为:
注意,这个agent pod里面是没有mvn这些构建工具的,可以使用卷的形式挂载进去。或者使用这个镜像作为基础镜像将工具打入到这个镜像里面更加方便。