Developer errors

Fixing Kubernetes Ingress Certificate Not Renewing

When a cert-manager-issued certificate stops renewing in a Kubernetes cluster, the specific reason is almost always recorded in cert-manager's own logs or in the status of the relevant Certificate resource — checking there directly is far more effective than guessing.

kubectl describe certificate yourcert-name -n yournamespace
kubectl logs -n cert-manager deploy/cert-manager

Common causes

What to check first when cert-manager isn't renewing as expected

Checking the specific Certificate resource's status conditions via kubectl, along with cert-manager's own controller logs, typically reveals the specific validation or configuration issue preventing renewal, rather than needing to guess based on the Ingress resource's behavior alone.

How RBAC permission issues can silently block cert-manager's renewal process

If cert-manager's service account lacks the specific Kubernetes RBAC permissions needed to update Certificate resources or access DNS provider credentials stored as secrets, renewal can fail silently without an obviously certificate-related error message — checking cert-manager's controller logs specifically for permission-denied messages catches this less obvious cause.

What specific kubectl commands help diagnose a stuck certificate renewal

Running `kubectl describe certificate ` and `kubectl describe certificaterequest` shows detailed status and event information for the specific resources involved, typically revealing the exact validation or configuration issue preventing successful renewal.

How to manually trigger a certificate renewal for testing purposes in cert-manager

Deleting the associated Kubernetes Secret resource (not the Certificate resource itself) prompts cert-manager to detect the missing secret and automatically attempt reissuance, a common technique for manually testing or forcing a renewal attempt outside the normal automatic schedule.

A final note on proactive monitoring

Setting up monitoring specifically on cert-manager's own health and certificate status, integrated with your cluster's broader observability tooling, catches a renewal problem proactively rather than only discovering it once a certificate has actually expired and started affecting live traffic.

What specific kubectl commands reveal the most diagnostic detail quickly

Running kubectl get certificate -A to see status across every namespace, then kubectl describe certificate -n for detailed event history on a specific problematic certificate, gives a fast, comprehensive view of exactly what's happening across your cluster's certificate resources.

How cert-manager's webhook component can itself become a point of failure

cert-manager's webhook component, responsible for validating its own custom resources, can occasionally become unavailable or misconfigured independently of the rest of cert-manager — checking the webhook pod's own status and logs specifically, not just the main controller, is worth doing if certificate resources seem to be rejected or stuck unexpectedly.

A quick closing checklist

A quick closing checklist covers checking Certificate and CertificateRequest resource status directly, reviewing cert-manager's controller and webhook logs, and confirming RBAC permissions are correctly configured for cert-manager's service account.

Why cert-manager version upgrades deserve careful testing given the pace of the project's development

cert-manager is an actively developed project with periodic breaking changes between major versions — testing any cert-manager upgrade in a non-production cluster first, rather than upgrading directly in production, avoids an upgrade-related renewal disruption.