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
相关产品推荐
相关产品推荐

