使用Jenkins cron任务运行Selenium及K8s时kubeconfig配置咨询
Jenkins对接本地K8s集群实现Selenium Grid定时测试任务配置指南
前置准备
- 验证本地K8s集群可用:在集群主控节点执行
kubectl get nodes能正常返回所有节点状态即为正常,拷贝~/.kube/config文件备用;如果文件内apiserver地址写的是127.0.0.1,替换为Jenkins服务可访问的集群内网IP,避免后续连接失败 - 提前在Jenkins插件管理中安装
Kubernetes plugin、Kubernetes CLI Plugin,安装完成后重启Jenkins生效
Kubeconfig文件存放配置(核心)
不要在单个任务的构建环境中重复配置kubeconfig,全局配置一次所有任务可复用:
- 进入Jenkins主页 -> Manage Jenkins -> Credentials -> System -> Global credentials (unrestricted)
- 点击Add Credentials,凭证类型选择
Kubernetes configuration (kubeconfig) - kubeconfig录入方式选择
Enter directly,将提前准备好的kubeconfig完整内容粘贴到输入框,ID字段自定义填写方便识别的标识(比如local-k8s-cluster),填写后保存即可
不推荐选择文件上传方式录入,容易因Jenkins运行用户的文件系统权限问题导致凭证读取失败,直接粘贴内容稳定性最高
K8s云对接全局配置
- 进入Manage Jenkins -> Manage Nodes and Clouds -> Configure Clouds
- 点击Add a new cloud,选择Kubernetes类型
- Kubernetes地址填写kubeconfig中对应的apiserver地址,格式一般为
https://[集群内网IP]:6443 - 本地测试环境可直接勾选
Disable https certificate check跳过证书校验,生产环境建议从kubeconfig的certificate-authority-data字段提取证书内容填入 - 凭证下拉选择之前创建的
local-k8s-cluster,点击Test Connection,正常返回集群版本信息即为连接成功 - Jenkins URL填写Jenkins服务的内网可访问地址(比如
http://[Jenkins内网IP]:8080/),供K8s集群内启动的构建Pod回传日志、拉取任务资源使用
Cron定时测试任务配置
你提到的构建环境多选项的配置界面如下:
按以下规则配置即可:
- 新建Freestyle或Pipeline类型任务,构建触发器选择
Build periodically,按照定时规则填写Cron表达式即可,例如工作日晚8点执行测试填0 20 * * 1-5 - 构建环境配置:
- Freestyle类型任务:勾选
Add Kubernetes CLI configuration,下拉选择之前创建的全局kubeconfig凭证,后续构建步骤中可直接执行kubectl指令操作集群、管理Selenium Grid任务 - Pipeline类型任务:直接在Pipeline语法中指定K8s构建Pod模板即可,无需单独勾选构建环境选项
- Freestyle类型任务:勾选
- 构建步骤中直接写入自动化测试执行脚本即可,Selenium Grid地址建议直接使用K8s集群内Service域名访问,无需走外部暴露端口,连接稳定性更高
常见问题避坑
- 若K8s插件拉起的构建Pod一直处于Pending状态,优先检查集群是否能正常拉取默认jnlp镜像,可在K8s云配置中替换为国内镜像源的jnlp镜像地址
- 定时任务执行频率不要设置过高,提前评估本地集群资源余量,避免任务排队或Selenium Grid资源不足导致测试失败
- 若执行测试时无法连接Selenium Grid,检查Grid所在命名空间和测试Pod命名空间是否一致,跨命名空间访问需要拼接完整Service域名
内容的提问来源于stack exchange,提问作者The Ops
相关产品推荐
相关产品推荐

