我创建了使用Vault的Clusterissuer,然后通过它发行了证书,但是证书的“就绪”状态为空。事件和证书管理器pod日志中没有任何内容。它也没有创造一个 secret 。
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后端的保险柜角色路径,而服务器是保险柜服务器基本URL。 path
必须使用Vault sign
端点。请看一下:issuer-vault-setup,cert-clusterissuer。
关于kubernetes - Kubernetes-证书经理-Hashicorp Vault-证书的就绪状态为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61362899/