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

Kubebuilder项目配置webhook后提示找不到tls.crt文件如何解决

报错信息:

2021-12-06T12:37:06.624Z    ERROR    setup    problem running    manager    {"error": "open    /tmp/k8s-webhook-server/serving-certs/tls.crt: no such file or    directory"}
报错原因

该错误表示Kubebuilder webhook服务启动时,无法在默认加载路径找到TLS证书文件,webhook需要TLS证书完成和Kubernetes API Server的加密通信。

解决方案

分两种场景处理:

场景1:本地开发调试

  • 临时关闭webhook(仅用于不需要测试webhook逻辑的场景):启动operator时添加启动参数 --enable-webhook=false,即可跳过证书校验直接运行。
  • 手动生成临时自签证书:
    1. 先创建证书存放目录:
      mkdir -p /tmp/k8s-webhook-server/serving-certs
      
    2. 用openssl生成有效期365天的自签证书:
      openssl req -x509 -newkey rsa:4096 -keyout /tmp/k8s-webhook-server/serving-certs/tls.key -out /tmp/k8s-webhook-server/serving-certs/tls.crt -days 365 -nodes -subj "/CN=localhost"
      
  • 如果你是运行Kubebuilder自带的集成测试,不需要手动生成证书,testenv框架会自动处理证书生成和加载逻辑。

场景2:集群内正式部署

  • 确认集群已安装cert-manager:Kubebuilder默认依赖cert-manager自动为webhook签发证书,未安装的话先部署对应版本的cert-manager。
  • 检查证书签发状态:执行命令 kubectl get certificates -n <operator部署命名空间>,确认对应证书的STATUS为Ready,如果状态异常可以kubectl describe certificate <证书名称>排查签发失败原因。
  • 检查Deployment挂载配置:确认operator的Deployment配置中,已经将cert-manager生成的serving-cert Secret挂载到了/tmp/k8s-webhook-server/serving-certs路径,挂载路径和Secret名称配置错误也会导致找不到证书文件。
其他排查点
  • 如果你修改过webhook的默认证书加载路径,检查main.go中webhook server的CertDir配置是否和实际挂载路径一致。
  • 确认operator运行时的用户对证书目录有读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:01