Jenkins在Kubernetes集群上的构建方法

116 阅读4分钟

jenkins build on kubernetes clusterjenkins build on kubernetes cluster

大家好,在这篇博客中,我们将学习如何在Kubernetes中以豆荚的形式运行Jenkins构建。

Jenkins是一个用java编写的开源工具,也有一个用于持续集成和构建自动化的插件。它有助于将软件开发中与构建、测试和部署有关的部分自动化,促进持续集成和持续交付。

Kubernetes是一个可移植的、可扩展的、开源的平台,用于管理容器化的工作负载和服务,它有利于声明性配置和自动化。

前提条件

  1. 在本地或作为docker容器运行的Jenkins主服务器。
  2. 在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插件。

kubernetes cloud setup on jenkinskubernetes cloud setup on jenkins

之后,你需要提供一些配置。

  1. 你可以手动添加所有的集群信息,如URL、密钥和命名空间,否则你可以添加一个存在于.kube 目录中的配置文件作为凭证。
  2. 对于凭证,你需要添加凭证作为一个秘密文件,并选择.kube/config ,这样它就会自动获得关于你的集群的所有信息。
  3. 然后点击测试连接,如果它显示版本细节,意味着连接成功了。
  4. 现在让每件事都保持默认。
  5. 现在根据你的使用情况添加pod标签,这样你就可以使用这些标签从CLI轻松访问这些pod。

pod template setuppod template setup

6.现在,点击Pod Template,给你的pod起一个有意义的名字。

pod template detailspod template details

7.7. 然后点击Pod Template details

pod template detailspod 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

所以现在创建一个新的自由式项目。

  1. 现在在常规设置中勾选Restrict where this project can be run ,并给出你在pod模板中给出的pod的标签。

pipeline labelspipeline labels

2.现在在这之后添加一个build step ,作为shell execute,并编写一个命令hostname ,然后保存项目。

jenkins pipelinejenkins pipeline

3.现在构建项目,你会看到一个新的pod被创建为slave,并在pod上执行构建步骤。

build statusbuild status

4.4.在构建步骤完成后,pod将自动终止。

控制台输出

jenkins console outputjenkins console output

在控制台输出中,我们也有相同的pod名称,用于jenkins构建。

总结

读完这篇博客后,你学会了如何在kubernetes上轻松有效地运行jenkins构建。我们也可以在任何kubernetes集群上轻松设置,比如gcp、eks等。

参考资料

plugins.jenkins.io/kubernetes/