DevOps—Jenkins的kubernetes插件使用

概述

Jekins的体系架构是为分布式的构建环境而设计的。它允许我们为每一个构建项目使用不同的环境,并且在多个代理中以并发的方式运行作业以平衡工作负载。

Jenkins的控制器是Jenkins安装中的初始节点。Jenkins控制器负责管理这些代理节点,并且为这些代理编排任务,包括在代理上调度及监控任务。

代理工作的前提是该计算机上运行有Java环境;网络上代理节点能够与控制器节点进行互通。

Jenkins的控制器可以运行在单独的主机上,Docker容器中,甚至是Kubernetes的POD上。那么代理节点呢,也是同样的,既可以运行在单独的主机上,也可以使用Kubernetes的POD来进行管理。而且,使用Kubernetes来管理代理节点,可以很方便的根据构建的负载情况动态的调节代理节点的数量,以加快构建速度。

前提

本实例假设你已经安装了Jenkins的控制节点,无论这个控制节点是使用什么方式进行安装(Kubernetes或单个主机)。要求控制节点与kubernetes的mon的某个或各个节点的网络之间互通。

本文主要介绍,如何使用Jenkins的Kubernetes插件来创建代理POD,并分配任务给这些POD来构建项目。

安装插件

安装完插件后,需要重新启动控制节点的Jenkins服务。

配置插件

注意,上图中有一个凭证的选项,默认的情况下是–无–,这是我们Jenkins连接kubernetes集群的身份密钥,需要自行创建。由于是开发环境,本人直接使用kubernetes集群的控制节点(k8s1)的root用户下的密钥进行操作。

#在kubernetes的控制节点上执行
SECRET_NAME=$(kubectl get serviceaccount jenkins-admin  -o=jsonpath='{.secrets[0].name}' -n devops-tools)

#本条语句会打印出密钥的字符串,一定要保存好,后续我们会使用
kubectl get secrets $SECRET_NAME  -o=jsonpath='{.data.token}' -n devops-tools | base64 -d

接下来我们接着在Jenkins中配置凭证。

连接kubernetes集群后,我们需要继续配置Jenkins控制服务器的地址。如果你的Jenkins主节点是运行在kubernetes集群中的,那么这个地址你可以使用kubernetes集群中的Jenkins服务端点来作为Jenkins的URL。因为代理pod可以通过内部的服务DNS来找到控制服务器。

我们先查看kubernetes集群中jenkins的service的名称是什么:

Jenkins控制服务的URL格式如下:

格式:http://<service-name>.<namespace>.svc.cluster.local:8080

根据上面输出的service名称,则其URL为:

http://jenkins-service.devops-tools.svc.cluster.local:8080

然后我们配置pod Labels,

由插件启动的所有pod的标签。匹配这些标签的pod计入并发限制。如果没有配置,默认情况下,所有pod将使用jenkins=slave创建。

接下来,我们配置pod Templates

  • 镜像地址:jenkins/inbound-agent:4.3-4

输入上述信息后,可以直接点击Save按钮保存就可以了。

编译测试

创建一个自由风格的软件项目

点击构建进行测试即可。

注意:在使用pipeline的过程中会直接使用agent模式。不需要进行单独设置。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注