You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps Server 2020 Update 1 Kubernetes服务连接验证失败求助

解决Azure DevOps Server 2020 Update1 K8s服务连接验证失败问题

问题背景

在Azure DevOps Server 2020 Update1中通过KubeConfig创建Kubernetes服务连接时,点击Verify按钮出现验证失败:

Failed to query service connection API: 'https://ekm.mpu.cz/k8s/clusters/c-qmcrb/api/v1/nodes'. Error Message: 'An error occurred while sending the request.'

Kubernetes集群位于其他域,已尝试导入CA证书到以下位置但无效:

  • MMC的受信任发布者
  • JAVA_HOME下的cacerts
  • JAVA_HOME下的azureTrustsStore.jks

补充:直接保存服务连接后,流水线可正常连接并执行命令。

解决建议

1. 检查Azure DevOps Server服务账户的证书存储

验证操作由Azure DevOps Server的系统服务进程执行,使用的是服务账户的证书上下文,而非当前登录用户的:

  • 找到Azure DevOps Server运行的服务账户(通常是NT SERVICE\AzureDevOpsServer或自定义域账户)
  • 以该账户身份登录服务器,打开MMC证书管理单元,将CA证书导入到受信任的根证书颁发机构和中级证书颁发机构(而非仅受信任发布者)
  • 导入后重启Azure DevOps相关服务(如IIS应用池、Azure DevOps Job Agent)

2. 确认KubeConfig的CA证书配置

虽然流水线能正常运行,但验证逻辑可能对KubeConfig的证书格式更严格:

  • 检查KubeConfig中certificate-authority-data字段是否为Base64编码的完整CA证书内容,无换行或格式错误
  • 如果使用certificate-authority指定本地路径,确保Azure DevOps服务账户有权限访问该路径下的证书文件

3. 排查服务器系统代理或防火墙设置

跨域访问可能受代理/防火墙影响:

  • 确认Azure DevOps Server所在服务器的系统代理配置,是否将K8s集群域名加入了代理白名单
  • 检查防火墙是否允许Azure DevOps服务器访问K8s集群的API端口(默认443)
  • 若使用企业级防火墙,确认是否拦截了SSL握手过程中的证书验证

4. 查看Azure DevOps Server详细日志

获取更具体的错误信息以定位问题:

  • 查看Azure DevOps Server应用层日志(默认路径:C:\Program Files\Azure DevOps Server 2020\Application Tier\Web Services\Logs)
  • 查找验证请求对应的日志条目,重点关注SSL相关错误(如证书链不完整、不信任的根证书等)

5. 验证证书链完整性

确保导入的CA证书包含完整的信任链:

  • 用openssl s_client -connect ekm.mpu.cz:443 -showcerts命令获取K8s API的证书链
  • 对比本地导入的证书,确认所有中间证书和根证书都已导入到正确的存储位置

关键说明

既然直接保存后流水线可正常使用,说明服务连接的核心配置是正确的,问题仅出在Azure DevOps Server的验证环节——验证逻辑使用的证书信任上下文与流水线执行时不同(流水线通常使用自托管代理的执行账户或代理服务的证书存储)。

内容的提问来源于stack exchange,提问作者Ondrej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:45:34