Jenkins 服务持续集成整合 Kubectl 用来管理 Kubernetes

2020-06-22 0 By admin

Jenkins 服务提供了多个用于整合 Kubernetes 服务的插件,通过这些插件可以实现 Jenkins 管理 Kubernetes;不过要梳理清楚这些插件的依赖关系和学习一下插件的使用方式。

一、Jenkins 服务有关 Kubernetes 的插件介绍

1.1、Kubernetes Credentials 认证插件

Jenkins 服务连接 Kubernetes 服务时,需要使用到的认证插件。通过这个插件,设置连接过程中使用到的信息,包括 Kubernetes Master 的链接地址、证书、用户名和命名空间等。其他插件会依赖这个插件使用。

1.2、Kubernetes CLI 管理插件

通过这个插件可以用于管理 Kubernetes 服务,这个插件可以结合上面的认证插件使用,也可以和 Jenkins 服务默认支持的认证方式结合使用。
这个插件是通过 kubectl 客户端来管理 Kubernetes 服务,但是这个插件并不会在 Jenkins 服务所在主机上安装 Kubectl 工具,所以你需要自行安装。
如果你是使用容器服务运行 Jenkins 服务,并计划做弹性伸缩的话,在容器中安装 Kubectl 就很不合适了。基于这种情况,我没有使用这个插件。

1.3、Kubernetes 插件

这个插件用于将 Jenkins 服务和 Kubernetes 服务结合起来;插件使用时,设置好 Kubernetes 服务的链接配置,并在 Pipeline 中使用相应的指令。
这个插件提供的指令有 PodTemplate 、slaveTemplates、kubernetes 等指令;而不是通过 Kubectl 客户端进行管理;这种方式使用起来有些费力,需要学习不同指令下,资源对象的配置细节。

二、使用远程命令执行插件

前面说到的插件,使用起来都比较费力;不建议使用。
通过直接在服务器上安装 Kubectl 客户端的方式的话,又需要对镜像设置好 kubeconfig,不太合适。
最后选择的方式是:设置一台服务器为 Kubernetes 服务的客户端,配置好 Kubectl 客户端;让 Jenkins 服务通过 SSH 方式连接到客户端,执行管理命令。

使用的插件:SSH Pipeline Steps;这个插件提供远程连接服务器,并执行命令的功能。通过这种方式,将管理命令发送的客户端 Kubectl 上。