kubectl apply部署Ingress时报webhook调用失败x509证书错误
报错根因
你遇到的x509: certificate signed by unknown authority错误,核心是Kubernetes API Server调用ingress-nginx的准入校验webhook时,无法信任webhook服务端返回的TLS证书,通常是ingress-nginx安装过程中证书自动签发失败、证书过期,或者webhook配置里预置的CA根证书和服务端实际使用的证书不匹配导致的。
排查修复步骤
- 先确认ingress-nginx组件运行状态
执行命令查看ingress-nginx命名空间下的Pod运行情况:kubectl get pods -n ingress-nginx
如果存在Pod处于Pending、CrashLoopBackOff等非Running状态,优先排查对应Pod的异常(常见原因是镜像拉取失败、节点资源不足),组件正常运行是后续操作的基础。 - 校验webhook配置的CA证书
执行命令导出ingress-nginx的准入校验webhook配置:kubectl get validatingwebhookconfiguration ingress-nginx-admission -o yaml > webhook-check.yaml
打开导出的文件,定位到clientConfig.caBundle字段,该字段存储的是API Server访问webhook时用来校验服务端证书合法性的CA根证书,若该字段为空、内容和实际签发webhook证书的CA不匹配,就会触发当前报错。 - 重新同步webhook证书(通用修复方案)
如果你是通过YAML清单安装的ingress-nginx,按以下操作修复:- 删除旧的、执行失败的证书生成任务:
kubectl delete job ingress-nginx-admission-create -n ingress-nginx - 重新执行你安装ingress-nginx时使用的原始清单apply命令,安装流程会自动重新创建证书生成任务,将正确的CA根证书自动更新到webhook配置中。
如果你是通过Helm安装的ingress-nginx,携带你原有安装参数执行helm upgrade操作,即可自动同步正确的证书配置到webhook。
- 删除旧的、执行失败的证书生成任务:
- 测试环境临时绕过方案(禁止生产环境使用)
如果是本地测试环境需要快速验证应用功能,可以临时删除准入校验webhook跳过证书校验:kubectl delete validatingwebhookconfiguration ingress-nginx-admission
注意:该操作会关闭Ingress资源的语法合法性校验,提交格式错误的Ingress配置可能导致ingress-nginx控制器运行异常,生产环境严禁使用该方案。 - 修复验证
完成上述操作后,重新执行Ingress资源创建命令:kubectl apply -f ./overlays/stg/bookinfo-ingress.yaml
命令执行无报错即代表修复完成,可正常通过Ingress发布应用。
内容的提问来源于stack exchange,提问作者heiyo
相关产品推荐
相关产品推荐

