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

Certmanager集群内HTTPS调用因自签名证书失败,能否切换为HTTP?

解决cert-manager内部HTTPS调用因自签名证书失败的问题

问题原因

cert-manager的准入webhook默认使用HTTPS通信,启动自检时会调用webhook,但此时集群还未信任webhook的自签名证书,导致出现x509: certificate signed by unknown authority错误。

解决方案

1. 临时禁用webhook(仅测试用,不推荐生产)

安装cert-manager时添加参数禁用webhook:

helm upgrade --install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.16.2 \
  --set crds.enabled=true \
  --set webhook.enabled=false

注意:禁用webhook会丢失cert-manager的校验和自动注入功能,生产环境禁止使用。

2. 让集群信任cert-manager的自签名CA证书

cert-manager默认会生成自签名CA签发webhook证书,只需让集群kube-apiserver信任该CA即可:

  • 导出cert-manager生成的CA证书:
kubectl get secret cert-manager-webhook-ca -n cert-manager -o jsonpath='{.data.ca\.crt}' | base64 -d > cert-manager-webhook-ca.crt
  • 将CA证书添加到集群信任根(GKE环境):
kubectl create configmap trusted-ca -n kube-system --from-file=cert-manager-webhook-ca.crt
kubectl patch deployment kube-apiserver -n kube-system --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt"}, {"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--cluster-signing-key-file=/etc/kubernetes/pki/ca.key"}, {"op": "add", "path": "/spec/template/spec/volumes/-", "value": {"name": "trusted-ca", "configMap": {"name": "trusted-ca"}}}, {"op": "add", "path": "/spec/template/spec/containers/0/volumeMounts/-", "value": {"name": "trusted-ca", "mountPath": "/etc/ssl/certs/trusted-ca", "readOnly": true}}]'
  • 重启kube-apiserver使配置生效:
kubectl rollout restart deployment kube-apiserver -n kube-system

3. 使用GKE自带CA签发webhook证书(生产环境推荐)

GKE提供集群根CA,配置cert-manager用它签发webhook证书,可直接避免信任问题:

helm upgrade --install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.16.2 \
  --set crds.enabled=true \
  --set webhook.caBundle=$(kubectl get configmap kube-root-ca.crt -n kube-system -o jsonpath='{.data.ca\.crt}' | base64 -w0)

验证

执行命令检查cert-manager组件状态,所有Pod处于Running状态则问题解决:

kubectl get pods -n cert-manager

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:40:53