
Table of Contents
By Khimananda Oli | Last reviewed: August 2026
Managing TLS certificates manually in production clusters is a reliability risk and an audit failure waiting to happen. You need cert-manager: Automate Kubernetes TLS to eliminate expired certificate outages and ensure continuous compliance without operational toil. This guide walks you through the exact configuration patterns I use to manage thousands of certificates across multi-cloud environments securely.
How do you install and configure cert-manager for Kubernetes TLS automation?
The most reliable installation method in 2026 is Helm with explicit namespace isolation and resource quotas. Before installing, ensure your cluster meets the prerequisites: Kubernetes 1.28+, RBAC enabled, and network policies allowing outbound HTTPS to your chosen issuer endpoints. For teams managing ingress controllers, cert-manager integrates directly via annotations or Gateway API references.
Install cert-manager with Helm
helm repo add jetstack https://charts.jetstack.io --force-update
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.17.2 \
--set crds.enabled=true \
--set prometheus.enabled=true \
--set webhook.timeoutSeconds=30 Always set crds.enabled=true in production. Separating CRD management from the main chart prevents accidental deletion during upgrades. The webhook timeout is critical; default values cause failures on slow API servers or when network latency exists between control plane components.
Create a ClusterIssuer for Let's Encrypt
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: [email protected]
privateKeySecretRef:
name: letsencrypt-prod-account-key
solvers:
- http01:
ingress:
class: nginx
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
selector:
dnsZones:
- "internal.example.com" This dual-solver configuration handles public domains via HTTP-01 validation while routing internal zones through DNS-01. Store the Cloudflare API token in a sealed secret or external secrets operator — never commit it to Git. For SOC 2 compliance, restrict the token to Zone.DNS edit permissions only.
How does cert-manager handle certificate renewal and prevent outages?
Certificate renewal failures are the #1 cause of cert-manager-related incidents. Understanding the renewal window mechanics prevents 3 AM pages. cert-manager defaults to renewing at 2/3 of the certificate lifetime (typically 30 days before expiry for 90-day Let's Encrypt certs). This buffer accounts for transient ACME failures, rate limits, and network issues.