问题描述
在Kubernetes集群中部署了Jenkins,并使用Kubernetes插件动态启动Jenkins的从节点。然而,某些构建需要一个具有GNU make和特定内核包的特定构建机器,因此用户有一个专用的静态虚拟机。用户想知道如何自动将静态虚拟机添加到Jenkins作为永久节点,这样当Jenkins pod关闭并重新启动时,它会自动连接到静态从节点。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
用户可以使用Jenkins Configuration as Code(JCasC)插件来配置静态从节点的附加。以下是使用JCasC插件配置静态从节点的示例:
- 打开Jenkins的values.yaml文件,该文件用于安装/升级Jenkins的helm chart。
- 在values.yaml文件中找到JCasC部分,并将defaultConfig设置为true,以启用JCasC插件。
- 在configScripts部分的credentials字段中,添加静态从节点的凭据配置。例如,可以添加一个用户名/密码凭据,用于连接到静态从节点。
- 在configScripts部分的permanent-nodes字段中,添加静态从节点的配置。包括节点名称、远程文件系统路径、执行器数量、标签等信息。
- 在launcher字段中,使用SSH作为启动器,并配置连接静态从节点所需的主机、端口和凭据。
以下是一个示例values.yaml文件的片段:
JCasC:
defaultConfig: true
configScripts:
credentials: |
credentials:
system:
domainCredentials:
- credentials:
- usernamePassword:
scope: GLOBAL
id: "CentOS_7.1_k4.14.11_ssh_password"
username: 'jenkins'
password: ${decodeBase64:BASE64ENCODEDPASSWD}
description: "Username/Password Credentials for CentOS_7.1_k4.14.11"
permanent-nodes: |
jenkins:
nodes:
- permanent:
name: "CentOS 7.1 k4.14.11"
remoteFS: "/home/jenkins"
numExecutors: 2
labelString: "CentOS_7.1_k4.14.11"
mode: EXCLUSIVE
retentionStrategy: "always"
launcher:
SSH:
jvmOptions: "-Xms256m -Xmx1024m -XX:MaxPermSize=1024m"
credentialsId: "CentOS_7.1_k4.14.11_ssh_password"
host: "10.1.66.120"
port: 22
sshHostKeyVerificationStrategy:
manuallyTrustedKeyVerificationStrategy:
requireInitialManualTrust: false
在上面的示例中,我们使用JCasC插件配置了静态从节点的凭据和节点信息。每当重新部署或升级Jenkins的helm chart时,它都会自动配置这些凭据并添加静态从节点。
方案2
使用脚本或工具来管理静态从节点的启动顺序可能会增加复杂性,并且需要确保静态从节点与Jenkins和Kubernetes之间的依赖关系正确设置。
另一种方法是编写脚本或使用工具来控制静态从节点的启动顺序。用户可以将静态虚拟机作为Kubernetes节点运行,并使用taints和tolerations来确保它仅用于适当的作业。这样,用户就不需要担心静态从节点的问题。
请注意,使用脚本或工具来管理静态从节点的启动顺序可能会增加复杂性,并且需要确保静态从节点与Jenkins和Kubernetes之间的依赖关系正确设置。
以上是将静态虚拟机添加为运行在Kubernetes中的Jenkins的永久节点的解决方案。根据用户的具体情况和需求,可以选择适合自己的方案。