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

自建Kubernetes集群Ingress Controller安装失败:缺失ingress-nginx-admission Secret导致webhook-cert卷挂载错误

自建Kubernetes集群Ingress Controller安装失败:缺失ingress-nginx-admission Secret导致webhook-cert卷挂载错误

兄弟别慌,我之前刚踩过一模一样的坑!这个报错本质是Ingress Controller的准入Webhook组件依赖的认证Secret没被正确创建,咱们一步步来解决:

第一步:确认Secret确实缺失

先检查你的Ingress Controller所在命名空间(默认是ingress-nginx)里有没有目标Secret:

kubectl get secrets -n ingress-nginx

如果输出里找不到ingress-nginx-admission,那确实是这个Secret没生成,接下来手动创建它。

第二步:生成Webhook所需的证书和密钥

用openssl和Kubernetes自带的CA生成符合要求的证书文件:

# 1. 生成2048位的私钥
openssl genrsa -out tls.key 2048

# 2. 生成证书签名请求(CSR),注意CN要对应Webhook服务的域名,格式为「ingress-nginx-admission.你的命名空间.svc」
# 用默认命名空间的话直接执行这条:
openssl req -new -key tls.key -out tls.csr -subj "/CN=ingress-nginx-admission.ingress-nginx.svc"

# 3. 在K8s中创建CSR并批准签名
kubectl create csr ingress-nginx-admission --key tls.key --cert tls.csr --namespace ingress-nginx
kubectl certificate approve ingress-nginx-admission -n ingress-nginx

# 4. 导出K8s CA签名后的证书
kubectl get csr ingress-nginx-admission -n ingress-nginx -o jsonpath='{.status.certificate}' | base64 -d > tls.crt

第三步:创建缺失的Secret

用刚才生成的tls.key和tls.crt创建目标Secret:

kubectl create secret tls ingress-nginx-admission --key tls.key --cert tls.crt -n ingress-nginx

第四步:重启Ingress Controller Pod让配置生效

最后重启控制器Pod,让它重新挂载这个卷:

kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx

额外提示:用Helm安装的场景

下次安装时可以加上这两个参数,让Helm自动处理Secret的创建和证书签名,避免手动操作:

helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  --set controller.admissionWebhook.enabled=true \
  --set controller.admissionWebhook.patch.enabled=true

备注:内容来源于stack exchange,提问作者Tom Clerk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 13:23:11