Jenkins 可以很好地与 Kubernetes 集成,不管是控制器(controller)还是构建节点(agent),都能以 Pod 的形式运行在 Kubernetes 上。 熟悉 Jenkins 的用户,都知道 Jenkins 支持多种类型的构建节点,例如:固定配置、动态配置。而节点与控制器连接的方式, 又包括:JNLP、SSH 等。对于已经在全面拥抱容器技术的用户,大多数是通过连接 Kubernetes 集群并动态启动、销毁 Pod 的方式来使用构建节点。 而随着构建节点的种类、数量增多后,如何更有效地维护这些基于 Kubernetes 的节点,则逐渐成为一个问题。而在这篇文章中, 我将会介绍一种 基于配置即代码的方案 来管理、维护构建节点。
配置即代码(Configuration as Code,简称为:CasC),是一个非常赞的思路,它使得 Jenkins 用户不需要再一次次地打开 UI 界面去修改系统配置。 通过 UI 修改配置的优点是:借助页面上配置项的描述信息,可以相对容易地理解其含义。但相对应的缺点也是非常明显的:难以复用, 即便是完全相同的配置,也需要手动地在其他环境上再次操作;无法追踪修改过程;发生错误时无法快速回滚。借助 CasC 的能力, 我们可以把 Jenkins 的系统配置保存到一个 Git 代码仓库中,以及 GitOps 工具(例如:Argo CD),最终使得修改 Jenkins 系统配置, 成为一件 可控、便捷的工作 。
不过,当 Jenkins 的变得配置复杂以后,对应的 YAML 配置文件也可能会变得越来越大&#x