我已经创建了使用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的值对您来说看起来合适吗??
提前谢谢您
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
端点。