大家好,在这篇博客中,我们将学习如何在Kubernetes中以豆荚的形式运行Jenkins构建。
Jenkins是一个用java编写的开源工具,也有一个用于持续集成和构建自动化的插件。它有助于将软件开发中与构建、测试和部署有关的部分自动化,促进持续集成和持续交付。
Kubernetes是一个可移植的、可扩展的、开源的平台,用于管理容器化的工作负载和服务,它有利于声明性配置和自动化。
前提条件
- 在本地或作为docker容器运行的Jenkins主服务器。
- 在minikube上运行的Kubernetes集群,用于运行Jenkins的构建。
在Kubernetes上运行Jenkins构建的概念
Jenkins支持主-代理架构(许多构建代理完成由主服务器安排的工作),使其具有高度可扩展性。主服务器的工作是安排构建作业,将作业分配给代理进行实际执行,监控代理,并获得构建结果。主服务器也可以直接执行构建作业。
代理的任务是构建主服务器发送的作业。一个作业可以被配置为在特定类型的代理上运行,或者如果没有特殊要求,Jenkins可以简单地选择下一个可用的代理。
Jenkins的可扩展性提供了许多好处。
- 使用豆荚并行运行许多构建计划
- 自动旋转和移除代理以节约成本
- 分散负载
设置东西
我假设你已经有jenkins服务器和minikube在运行。
在jenkins中安装Kubernetes插件
首先,我们需要登录到jenkins主服务器并安装kubernetes插件。为此,你需要遵循以下步骤。
manage jenkins> manage plugin > available >Kubernetes
然后安装kubernetes插件。
配置Kubernetes插件
现在,我们需要配置Kubernetes插件,以便我们的Jenkins构建可以在pod上运行。请按以下方法操作。
manage jenkins> configure system> cloud> add new cloud > kubernetes
如上所述,你会看到一个Kubernetes云的细节选项,点击它来配置Kubernetes插件。
之后,你需要提供一些配置。
- 你可以手动添加所有的集群信息,如URL、密钥和命名空间,否则你可以添加一个存在于
.kube目录中的配置文件作为凭证。 - 对于凭证,你需要添加凭证作为一个秘密文件,并选择
.kube/config,这样它就会自动获得关于你的集群的所有信息。 - 然后点击测试连接,如果它显示版本细节,意味着连接成功了。
- 现在让每件事都保持默认。
- 现在根据你的使用情况添加pod标签,这样你就可以使用这些标签从CLI轻松访问这些pod。
6.现在,点击Pod Template,给你的pod起一个有意义的名字。
7.7. 然后点击Pod Template details 。
8.现在提供pod模板规范,如名称、命名空间、标签(这里的标签是必要的,因为它是用来指定使用这些标签在kubernetes上构建Jenkins)。
9.然后,点击保存,你就成功设置了kubernetes插件。
10.你不需要指定任何容器和环境变量信息,因为这个插件已经为你设置了这些信息。它基本上使用jenkins/inbound-agent:4.3-4 的图像来设置pod上的slave。
*注:你还需要做一件事,在配置全局安全中,将tcp port for inbound agent 设置为50000。
配置Jenkins工作以使用kubernetes
所以现在创建一个新的自由式项目。
- 现在在常规设置中勾选
Restrict where this project can be run,并给出你在pod模板中给出的pod的标签。
2.现在在这之后添加一个build step ,作为shell execute,并编写一个命令hostname ,然后保存项目。
3.现在构建项目,你会看到一个新的pod被创建为slave,并在pod上执行构建步骤。
4.4.在构建步骤完成后,pod将自动终止。
控制台输出
在控制台输出中,我们也有相同的pod名称,用于jenkins构建。
总结
读完这篇博客后,你学会了如何在kubernetes上轻松有效地运行jenkins构建。我们也可以在任何kubernetes集群上轻松设置,比如gcp、eks等。