我已经创建了使用Vault的Clusterissuer,然后通过它发行了证书,但是证书的 Ready 状态为空白。事件和证书管理器pod日志中没有任何内容。它也没有创造一个秘密。
kubectl get cert
NAMESPACE NAME READY SECRET AGE
default example-com example-com 139m
clusterissuer.yaml
apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
name: vault-clusterissuer
spec:
vault:
path: pki_int/sign/<role name>
server: https://vault-cluster.example.com:8200
caBundle: <base64 encoded cabundle pem>
auth:
appRole:
path: approle
roleId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
secretRef:
name: cert-manager-vault-approle
key: secretId
路径中提到的角色名称与在Vault中在pki_init下创建的角色相同。
certificate.yaml
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: example-com
spec:
secretName: example-com
issuerRef:
name: vault-clusterissuer
kind: ClusterIssuer
commonName: abc.example.com
dnsNames:
- abc.example.com
由于它不会生成任何消息或日志,所以我不确定从哪里开始进行故障排除。
clusterissuer.yaml中的 path 的值对您来说是否合适??
提前谢谢
答案 0 :(得分:1)
CertificateConditionReady 表示已准备好使用证书。
这被定义为:
目标机密存在
目标机密包含尚未过期的证书
目标机密包含对证书有效的私钥
commonName
和dnsNames
属性与证书上指定的属性匹配
我认为问题出在dnsNames
文件中定义的错误certificate.yaml
中:
您的证书配置文件:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: example-com
spec:
secretName: example-com
issuerRef:
name: vault-clusterissuer
kind: ClusterIssuer
commonName: abc.example.com
dnsNames:
- abc.example.com
dnsNames
字段应具有值:www.abc.example.com
而不是abc.example.com
最终版本应为:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: example-com
spec:
secretName: example-com
issuerRef:
name: vault-clusterissuer
kind: ClusterIssuer
commonName: abc.example.com
dnsNames:
- www.abc.example.com
还请记住,path
字段是PKI后端的保险柜角色路径,而 server 是保险柜服务器的基本URL。 path
必须使用保管库sign
端点。