运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Jenkins 集成k8s 运行Jenkins slave

运维开发网 https://www.qedev.com 2021-05-18 14:26 出处:51CTO 作者:运维点滴
Jenkins 集成k8s 运行Jenkins slave,

需求:公司为了节省资源、降低Jenkins master压力,打算把Jenkins jobs在kubernetes上运行,jobs构建完成kubernetes上的pod删除。

1、Jenkins基础配置

系统管理--全局安全设置

需要开启代理协议、然后代理端口在我们后面agent连接需要用到

Jenkins 集成k8s 运行Jenkins slave

2、安装Kubernetes插件

系统管理–插件管理

Jenkins 集成k8s 运行Jenkins slave

3、创建Kubernetes Namespace与Service Account

创建Namespace

在Kubenates的上创建jenkins-slave命名空间,用于Jenkins使用

kubectl create namespace jenkins-slave

创建Service Account

在Kubernetes上为Jenkins构建创建有Cluster Admin权限的Service Account jenkins:

kubectl create clusterrolebinding jenkins --clusterrole cluster-admin --serviceaccount=jenkins-slave:jenkins

4、生成调度凭证

生成Kubernetes的 server certificate key和Client P12 Certificate File

这个步骤主要是生成P12 Certificate File提供给jenkins Master去调用Kubenetes,具体步骤如下:

Kubernetes Master上,打开~/.kube/config文件,复制相对应的内容,运行以下命令分别生成生成ca.crt, client.crt, client.key

cat ~/.kube/config

# 复制certificate-authority-data的内容,运行以下命令生成client.crt

echo "

再根据前面步骤生成的ca.crt, client.crt和client.key来生成PKCS12格式的cert.pfx

以下命令运行时,需要输入4位以上的密码

openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt

Jenkins 集成k8s 运行Jenkins slave

5、在Jenkins上集成Kubernetes

在Jenkins上配置Kubernetes Credential

将上面生成的cert.pfx复制出来备用

添加cert.pfx到Jenkins Global Credential

如下图:

Jenkins 集成k8s 运行Jenkins slave

6、构建jenkins-agent所需的镜像

cat dockerfileFROM reg.chinaedu.net/init/jenkins-slave

LABEL label=k8s-slave

ADD agent.jar /home/

ADD cmd.sh /home

RUN chmod a+x /home/cmd.sh

CMD /home/cmd.sh

cat cmd.sh	# cmd.sh里的内容

/usr/local/openjdk-8/bin/java -jar /home/agent.jar -jnlpUrl http://10.52.59.31:8080/jenkins/computer/${JENKINS_AGENT_NAME}/jenkins-agent.jnlp -secret ${JENKINS_SECRET} -workDir ${JENKINS_AGENT_HOME}

然后把构建好的镜像发送到仓库

agent.jar可以从Jenkins中下载

系统管理–>节点管理–>新建节点 --> 输入test,选择固定节点 --> 远程工作目录输入 /home --> 启动方式选择通过java web启动代理后点击保存

这里这个节点是不在线的,点击后提示如下:

Jenkins 集成k8s 运行Jenkins slave

Jenkins 集成k8s 运行Jenkins slave

7、在Jenkins上配置Kubernetes Cloud

系统管理- -节点管理- -Configure Clouds- -Add a new cloud- -Kubernetes

输入Name,比如kubernetes

复制上面步骤生成的ca.crt文件内容到Kubernetes server certificate key

输入上面创建的Kubernetes Namespace,jenkins-slave

选择刚刚配好的Credential

点击“Test Connection"按钮测试Jenkins是否可以成功连接Kubernetes。

Pod Retention选择Never,这样每次Jenkins构建结束后(无论成功和失败)都会销毁Pod,达到动态创建和运行Jenkins Build Agent的目的。

Jenkins 集成k8s 运行Jenkins slave

在Jenkins上配置Kubernetes Pod Template

Jenkins 集成k8s 运行Jenkins slave

8、验证

预期效果:Jenkins构建Jobs然后Kubernetes启动一个Pod namespace属于jenkins-slave,Jobs构建成功容器删除

Jenkins 集成k8s 运行Jenkins slave

主要的是就需要注意这里需要指定刚刚写的label

Jenkins 集成k8s 运行Jenkins slave

Jenkins 集成k8s 运行Jenkins slave

Jenkins 集成k8s 运行Jenkins slave

↑可以看到流水线已经成功了

查看Kubernetes, 可以看到跟我们预想的是一样的

Jenkins 集成k8s 运行Jenkins slave

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号