如何授权default命名空间的Simply DNS Webhook访问cert-manager命名空间的资源?
如何授权default命名空间的Simply DNS Webhook访问cert-manager命名空间的资源?
嘿,我一看你的错误信息就知道问题出在哪了——你的Simply DNS Webhook用的是default命名空间里的my-simply-dns-webhook服务账号,但当前的权限绑定却只给了cert-manager命名空间的同名账号授权,这就导致权限不匹配,访问被拒绝啦!
咱们一步步来解决:
第一步:修正ClusterRoleBinding的服务账号关联
你现有的my-simply-dns-webhook:secret-access ClusterRoleBinding绑定的是cert-manager命名空间的服务账号,咱们把它改成default命名空间的:
- 编辑这个ClusterRoleBinding:
kubectl edit clusterrolebinding my-simply-dns-webhook:secret-access
- 在编辑器里找到
Subjects部分,把Namespace字段的值从cert-manager改成default,修改后应该是这样:
Subjects: Kind: ServiceAccount Name: my-simply-dns-webhook Namespace: default
- 保存并退出编辑器。
第二步:验证权限是否生效
咱们用kubectl auth can-i命令确认权限已经配置正确:
kubectl auth can-i get secrets -n cert-manager --as=system:serviceaccount:default:my-simply-dns-webhook
如果返回yes,说明权限已经搞定啦!
第三步:重新触发证书请求
现在需要让cert-manager重新处理你的证书申请,你可以选择删除现有的Challenge资源:
kubectl delete challenge test-certificate-1-1965387138-1295925723
或者干脆删除证书再重新部署:
kubectl delete -f certificate-test.yaml kubectl apply -f certificate-test.yaml
等一会儿再用kubectl describe certificate test-certificate看看状态,应该就能正常获取证书了。
备注:内容来源于stack exchange,提问作者Lasse Michael Mølgaard
相关产品推荐
相关产品推荐

