使用Jenkins kubernetes插件在kubernetes中运行Jenkins流水线
前言之前我们介绍过如何使用Jenkins kubernetes CD插件部署k8s的资源文件。除了部署kubernetes资源文件以外,我们希望利用kuberntes中的资源去动态注册Jenkins agent,这样可以利用kubernetes自动伸缩的特性来实现更灵活的流水线管理。我们之前也介绍过通过docker动态的生成agent并注册到Jenkins master节点之上的文章。而kub..
devopscube,Devops魔方为个人公众号,主要用于一些有关Devops,容器,kubernetes,自动化运维,以及敏捷开发相关的分享。同时也会不定期的分享一些个人心得,比如推荐一些个人使用的办公小软件,对一些事件的评论等。欢迎大家关注交流。
前言
之前我们介绍过如何使用Jenkins kubernetes CD插件部署k8s的资源文件。
除了部署kubernetes资源文件以外,我们希望利用kuberntes中的资源去动态注册Jenkins agent,这样可以利用kubernetes自动伸缩的特性来实现更灵活的流水线管理。我们之前也介绍过通过docker动态的生成agent并注册到Jenkins master节点之上的文章。而kubernetes插件实现的功能类似,只是这次换到了在kubernetes平台之上实现此类功能。
该插件是依托于kuberntes的Pod来实现。一个pod下面可以配置不同的container来实现不同的功能需求。所有的container都挂载到相同的volume之上,实现Jenkins workspace的共享来协同处理流水线生成的中间产物。
Jenkins master可以运行在集群中,也可以运行在集群之外。
准备
首先要安装jenkins,具体的操作请参见我的历史文章:
部署好kubernetes集群,用于流水线部署。
使用jenkins安装kubernetes插件
配置
下面我们配置具体的kuberntes信息,配置的位置和之前的一篇关于Docker slave的文章配置位置相同,只是我们在“Add a new cloud”的时候选择kubernetes, 文章链接: https://blog.csdn.net/weixin_36938307/article/details/105577769
下面我们配置kuberntes信息:
我们可以看到需要我们配置两个部分的内容: kuberntes cloud details 和 pod templates
本文不通过UI的方式配置pod template,而是通过流水线script指定。 我们在本文的“测试”部分进行展示。
首先配置kuberntes clouds details,配置如下,需要配置kubernrtes api server的地址,配置相应的凭据,以及Jenkins的地址(注意是kubernets内部能够访问到的地址,用于动态的jnlp slave注册使用)。
凭据部分我们使用的kubeconfig的方式,需要手动添加一个全局的凭据供选择。kubernets插件支持的凭据方式有用户名密码方式、kubeconfig方式,x509证书方式,本文使用kubeconfig的方式进行测试。
点击界面的“连接测试”按钮测试是否与集群连通。
测试
此时我们已经有了最基础的环境,我们需要创建自己流水线测试它。
我们配置相应的script
podTemplate(cloud: 'kubernetes',
containers: [
containerTemplate(name: 'jnlp', image: '192.168.100.3:5000/jenkins/jnlp-slave:cicd', ttyEnabled: true),
],
){
node(POD_LABEL) {
container('jnlp'){
stage('hello'){
sh 'echo helloworld'
}
}
}
}
这里我们指定了jnlp,即动态的agent节点的container信息,主要是容器名称和image名称。
在执行流水线的部分通过container('jnlp')
指定不同的容器运行该命令。
总结
本文只是使用非常简单的例子运行了该插件,下一次文章我将会分享相应的更为复杂的例子,来给大家介绍kuberntes插件的详细用法。
devopscube,Devops魔方为个人公众号,主要用于一些有关Devops,容器,kubernetes,自动化运维,以及敏捷开发相关的分享。同时也会不定期的分享一些个人心得,比如推荐一些个人使用的办公小软件,对一些事件的评论等。欢迎大家关注交流。
更多推荐
所有评论(0)