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的方式进行测试。

点击界面的“连接测试”按钮测试是否与集群连通。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RfBv3SzQ-1588924105657)(使用jenkins kubernetes插件在kubernetes中运行Jenkins流水线.assets/image-20200508135912489.png)]

测试

此时我们已经有了最基础的环境,我们需要创建自己流水线测试它。

我们配置相应的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')指定不同的容器运行该命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40vTr6Vq-1588924105660)(使用jenkins kubernetes插件在kubernetes中运行Jenkins流水线.assets/image-20200508154536545.png)]

总结

本文只是使用非常简单的例子运行了该插件,下一次文章我将会分享相应的更为复杂的例子,来给大家介绍kuberntes插件的详细用法。

devopscube,Devops魔方为个人公众号,主要用于一些有关Devops,容器,kubernetes,自动化运维,以及敏捷开发相关的分享。同时也会不定期的分享一些个人心得,比如推荐一些个人使用的办公小软件,对一些事件的评论等。欢迎大家关注交流。
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐