qqshfox / cert-manager-webhook-dnspod

DNSPod Webhook for Cert Manager
Apache License 2.0
56 stars 34 forks source link

k8s-v1.18.4-tke.37 + dnspod-0.3.3 自动续费免费证书遇到问题了,创建的certificate一直为false状态! #16

Open helong1997 opened 11 months ago

helong1997 commented 11 months ago

我的k8s版本为 v1.18.4-tke.37 ,dnspod版本为 0.3.3,cert-manager版本为1.7.0 想实现k8s证书的自动续期,域名是dnspod上申请的,但是创建的certificate一直为false状态(中间换了cert-manager几个版本都不行)。 image

helong1997 commented 11 months ago

这是certificate日志,请帮我分析下可能是什么问题?? image

xlh001 commented 5 months ago

请问该问题你已经解决了吗? @helong1997

BetaCat0 commented 5 months ago

需要去看一下自定义资源(CRD) acme.cert-manager.io/v1 下的 Challenge 的状态,还需要结合下 cert-manager 服务本身的运行日志判断当前问题。 我在 cert-manager 1.9.1 + k8s 1.28.3-aliyun.1 + 这个 repo 的 master 版本把 ACME (DNS01) 跑起来了。 分享下我遇到的状况:

...

配置完成后,重试流程。发现这次是 cert-manager 报权限错误,原因是 cert-manager 下的 `cert-manager-webhook-dnspod` 这个 serviceaccount 没有权限读取我配置的 secret (就是 webhook.config.config.apiTokenSecretRef.name 指向的这个 secret)。
检查了相关的 role 和 rolebinding,我把 role 换到了 clusterrole,rolebinding 也换到了 clusterrolebinding。当然这块可以灵活处理,在相应的 namespace 下创建新的 role,再创建和 cert-manager 下的 `cert-manager-webhook-dnspod` 的  rolebinding 也是 ok 的。最后可以通过运行

kubectl -n <目标命名空间> auth can-i get secrets --as=system:serviceaccount:cert-manager:cert-manager-webhook-dnspod

检查是否具备权限。
顺便一提我把 role 中的 rules 权限改成了可以 get 所有 secret,和安装配置不太一样:

... rules:

BetaCat0 commented 4 months ago

更新:在ingress侧使用 cert-manager.io/cluster-issuer: cert-manager-webhook-dnspod-cluster-issuer就没有前面说的权限问题了,配置了其他 issuer 了我才恍然大悟 x x