I have set up Vault inside kubernetes, and a ClusterIssuer that works as expected.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: vault-cluster-issuer
namespace: cert-manager
spec:
vault:
path: pki/sign/my-issuer
server: http://vault.vault.svc.cluster.local:8200
auth:
kubernetes:
role: cert-manager
mountPath: /v1/auth/kubernetes
secretRef:
name: issuer-token
key: token
How to reproduce
Create ingress for test.example.com with cluster-issuer: vault-cluster-issuer. Server certificate is created as expected. Go into vault ui and revoke server certificate. Delete certificate in k8s. Cluster Issuer recreates server certificate in k8s, even though it has been revoked. Message is "Certificate is up to date and has not expired" which is... technically true. If I add the CRL to the ClusterIssuers secret (as ca.crl), it recognizes the server certificate as revoked and issues a new one using Vault.
Question: why is the revoked certificate reused in step 4 above? Isn't ClusterIssuer contacting Vault? Is vault sending the certificate even though it has been revoked? Does k8s have some cache which makes it not contact Vault and just reuse/recreate the one it had? (I have deleted the certificate from k8s).