I have created Clusterissuer that uses Vault and then issued certificate through it but the Ready status of the certificate is blank. There is nothing appearing in the events and cert-manager pod logs. It has not created a secret as well.
kubectl get cert
NAMESPACE NAME READY SECRET AGE
default example-com example-com 139mclusterissuer.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: secretIdThe role name mentioned in the Path is the same as the role created in the Vault under 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
Since it is not generating any message or logs so I am not sure from where to start troubleshooting.
Does the value of path in clusterissuer.yaml looks right to you..?
Thank you in advance
CertificateConditionReady indicates that a certificate is ready for use.
This is defined as:
The target secret exists
The target secret contains a certificate that has not expired
The target secret contains a private key valid for the certificate
The commonName and dnsNames attributes match those specified on the Certificate
I think the issue is in wrong dnsNames defined in certificate.yaml file:
Your certificate configuration file:
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 field should have value: www.abc.example.com not abc.example.com
Final version should looks like:
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
Also remember that path field is the Vault role path of the PKI backend and server is the Vault server base URL. The path MUST USE the vault sign endpoint.
Please take a look: issuer-vault-setup, cert-clusterissuer.