System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及容器和软件开发领域,具体涉及快速伸缩jenkins slave节点的方法及系统。
技术介绍
1、现有技术下,jenkins(一款开源ci&cd软件,用于自动化各种任务,包括构建、测试和部署软件)增加slave节点(从节点)方式可以大致分为两类:
2、第一种方案,通过配置服务器作为slave节点,步骤为:
3、a)提前准备一台服务器作为slave节点,并将服务器账号密码提前配置到jenkins的“credentials(凭据)”中;
4、b)在jenkins的节点配置页面填写slave节点的详细信息,包括名称、标签、描述、主机和凭证等信息;
5、c)配置成功后,点击“launchagent(启动代理)”,jenkins会通过ssh将agent.jar发送到服务器上并启动代理,服务器成为jenkinsslave节点。
6、第二种方案,通过jenkins的kubernetes(一种容器调度和编排软件)插件动态生成pod(在kubernetes中创建和管理的、最小的可部署的计算单元)作为slave节点,步骤为:
7、a)在插件配置中定义好kubernetes集群和pod模板,用于描述创建jenkinsslavepod节点所需的容器镜像、标签等信息;
8、b)当jenkins需要启动一个构建时,插件会根据需要创建一个新的pod,并将pod配置为slavepod节点;
9、c)构建完成后,插件会自动删除slave pod节点
10、以上第一种方案是手动在jenkins页面提前配置好slave服务器,该服务器是常驻slave节点。第二种方案是通过kubernetes插件在需要构建任务时动态创建slavepod节点,并在构建后会自动删除,该节点是一次性slave节点。
11、然而,第一种方案是基于传统的服务器实现,用户需要在jenkins页面提前配置好slave节点(从节点,是一种节点服务器)的node信息(节点配置信息)。然而,在需要快速扩容的场景下,无法快速响应。如果提前配置过多的slave节点,会导致资源利用率低下。
12、第二种方案是通过jenkins的kubernetes插件在kubernetes集群中按构建任务需要动态创建pod作为slave节点,在完成构建任务后自动销毁。这种方案的优点是资源利用率高,能够根据构建任务数量快速扩容slave节点。然而,在高并发的场景下,短时间频繁创建、销毁pod会对kubernetes集群造成高负载的影响,从而影响性能。以上方案需要增加kubernetes集群负载的前提下实现slave节点的伸缩。
技术实现思路
1、本方案旨在解决jenkinsmaster-slave架构下,无法在不增加kubernetes集群负载的前提下实现slave节点的自动化快速伸缩的问题。本专利技术目的在于提供快速伸缩jenkins slave节点的方法及系统,在不给kubernetes集群增加额外负载的情况下,实现了slavepod的自动化快速动态伸缩。
2、本专利技术通过下述技术方案实现:
3、第一方面,本专利技术提供了快速伸缩jenkins slave节点的方法,该方法包括:
4、确定jenkins的node节点配置所需参数,并创建一个shell脚本,可基于jenkinsapi创建jenkins的node节点配置;
5、根据shell脚本,创建shell镜像;
6、基于jenkins提供的代理agent.jar,创建agent镜像;
7、利用kubernetes的编排文件方式,首先以初始化容器initcontainer启动shell镜像,启动后执行镜像中shell脚本并完成jenkins的node节点配置创建;然后启动agent镜像,计算单元pod作为slave节点自动连接到jenkins。
8、进一步地,node节点配置所需参数包括slave节点名字、slave节点描述、slave节点最大并发构建数、slave节点标签名、基于tcp/ip协议的jenkinsip地址和端口。
9、进一步地,创建一个shell脚本,基于jenkinsapi创建jenkins的node节点配置,包括:
10、步骤11,创建一个shell脚本,在shell脚本里声明第一环境变量;读取第一环境变量以获得node节点配置所需参数;
11、步骤12,调用jenkinsapi创建jenkins的node节点配置。
12、进一步地,第一环境变量包括slave节点名字变量(jenkins_agent_name)、slave节点最大并发构建数变量(jenkins_slave_executors_num)、slave节点标签变量(jenkins_slave_labels)、jenkins通道变量(jenkins_tunnel)、jenkins用户变量(jenkins_user)和jenkins密码变量(jenkins_password);slave节点标签变量包括slave节点描述和slave节点标签名。
13、通过slave节点名字变量(jenkins_agent_name)对应获得slave节点名字,通过slave节点最大并发构建数变量(jenkins_slave_executors_num)对应获得slave节点最大并发构建数,通过slave节点标签变量(jenkins_slave_labels)对应获得slave节点描述和slave节点标签名,通过jenkins通道变量(jenkins_tunnel)对应获得基于tcp/ip协议的jenkinsip地址和端口,通过jenkins用户变量(jenkins_user)对应获得jenkins用户,通过jenkins密码变量(jenkins_password)对应获得jenkins密码。
14、进一步地,根据所述shell脚本,创建shell镜像,包括:
15、步骤21,在dockerfile文件中声明第二环境变量;所述第二环境变量包含slave节点名字、slave节点描述、slave节点最大并发构建数、slave节点标签名、基于tcp/ip协议的jenkinsip地址和端口;
16、步骤22,启动shell脚本;
17、步骤23,基于shell脚本和dockerfile文件,创建一个shell镜像。
18、进一步地,基于jenkins提供的代理agent.jar,创建agent镜像,包括:
19、步骤31,下载jenkins的代理agent.jar到本地;
20、步骤32,在dockerfile文件中声明第三环境变量;第三环境变量包括slave节点名字变量(jenkins_agent_name)、jenkins地址变量(je本文档来自技高网...
【技术保护点】
1.快速伸缩Jenkins Slave节点的方法,其特征在于,该方法包括:
2.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,所述Node节点配置所需参数包括Slave节点名字、Slave节点描述、Slave节点最大并发构建数、Slave节点标签名、基于TCP/IP协议的JenkinsIP地址和端口。
3.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,创建一个Shell脚本,基于JenkinsAPI创建Jenkins的Node节点配置,包括:
4.根据权利要求3所述的快速伸缩Jenkins Slave节点的方法,其特征在于,所述第一环境变量包括Slave节点名字变量、Slave节点最大并发构建数变量、Slave节点标签变量、Jenkins通道变量、Jenkins用户变量和Jenkins密码变量;所述Slave节点标签变量包括Slave节点描述和Slave节点标签名。
5.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,根据所述Shell脚本
6.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,基于Jenkins提供的代理agent.jar,创建Agent镜像,包括:
7.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,利用Kubernetes的编排文件方式,首先以initContainer启动Shell镜像,启动后执行镜像中Shell脚本并完成Jenkins的Node节点配置创建;然后启动Agent镜像,计算单元Pod作为Slave节点自动连接到Jenkins,包括:
8.根据权利要求7所述的快速伸缩Jenkins Slave节点的方法,其特征在于,所述步骤44具体为:
9.快速伸缩Jenkins Slave节点的系统,其特征在于,该系统使用如权利要求1至8中任一所述的快速伸缩Jenkins Slave节点的方法;该系统包括:
10.根据权利要求9所述的快速伸缩Jenkins Slave节点的系统,其特征在于,所述Slave节点自动连接单元的执行过程为:
...【技术特征摘要】
1.快速伸缩jenkins slave节点的方法,其特征在于,该方法包括:
2.根据权利要求1所述的快速伸缩jenkins slave节点的方法,其特征在于,所述node节点配置所需参数包括slave节点名字、slave节点描述、slave节点最大并发构建数、slave节点标签名、基于tcp/ip协议的jenkinsip地址和端口。
3.根据权利要求1所述的快速伸缩jenkins slave节点的方法,其特征在于,创建一个shell脚本,基于jenkinsapi创建jenkins的node节点配置,包括:
4.根据权利要求3所述的快速伸缩jenkins slave节点的方法,其特征在于,所述第一环境变量包括slave节点名字变量、slave节点最大并发构建数变量、slave节点标签变量、jenkins通道变量、jenkins用户变量和jenkins密码变量;所述slave节点标签变量包括slave节点描述和slave节点标签名。
5.根据权利要求1所述的快速伸缩jenkins slave节点的方法,其特征在于,根据所述she...
【专利技术属性】
技术研发人员:刘凯,朱涵颖,廖明乾,
申请(专利权)人:四川新网银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。