cert-manager 0.1: Automated TLS for Kubernetes Workloads

K8s Guru
2 min read
cert-manager 0.1: Automated TLS for Kubernetes Workloads

Introduction

On July 17, 2017, Jetstack released cert-manager 0.1 (the successor to kube-lego), introducing a Kubernetes-native controller to request and renew TLS certificates from ACME providers like Let’s Encrypt. With cert-manager, ingress TLS stops being a manual chore and becomes a declarative resource.


Core Capabilities

Kubernetes Custom Resources

  • Defines Certificate and Issuer CRDs to represent certificate requests and issuers.
  • Supports cluster-wide ClusterIssuer objects for multi-namespace reuse.
  • Stores signed certificates as Kubernetes secrets ready for ingress controllers.

ACME Automation

  • Implements the ACME v1 challenge flow for HTTP-01 and DNS-01.
  • Automatically provisions solver pods and cleans them up after validation.
  • Handles proactive renewals before expiration, minimizing outage windows.

Extensible Providers

  • Works with Let’s Encrypt, HashiCorp Vault, and self-signed issuers from day one.
  • Exposes a pluggable issuer interface paving the way for Venafi and Google CAS integrations.
  • Ships with ready-to-use examples for NGINX Ingress and Traefik.

Getting Started

  1. Install CRDs and the controller deployment:

    kubectl apply -f cert-manager.yaml
    
  2. Create a ClusterIssuer for Let’s Encrypt staging:

    apiVersion: certmanager.k8s.io/v1alpha1
    kind: ClusterIssuer
    metadata:
      name: letsencrypt-staging
    spec:
      acme:
        server: https://acme-staging.api.letsencrypt.org/directory
        email: [email protected]
        privateKeySecretRef:
          name: letsencrypt-staging
        http01: {}
    
  3. Annotate your ingress with certmanager.k8s.io/cluster-issuer: letsencrypt-staging.

  4. Watch cert-manager create solver pods, issue the certificate, and populate the target secret.


Practical Tips (Avoid ACME Surprises)

  • Use Let’s Encrypt staging first (as shown) to validate your HTTP-01/DNS-01 flow without tripping production rate limits.
  • For HTTP-01, make sure your ingress controller can actually route /.well-known/acme-challenge/ to solver pods (rewrites and global redirects are common culprits).
  • For DNS-01, expect a different class of failures: slow DNS propagation and missing IAM permissions are more common than Kubernetes issues.
  • Keep issuer credentials tightly scoped; an Issuer that can update “any DNS record in the company” tends to become an incident later.

Ecosystem Fit

  • Secures frontends published by ExternalDNS 0.1 and Traefik 1.4.
  • Complements Istio 0.1 by automating mesh gateways that terminate TLS.
  • Integrates with Kubernetes 1.7 RBAC for scoped certificate issuance.

Summary

AspectDetails
Release DateJuly 17, 2017
Key InnovationsCertificate CRDs, ACME automation, pluggable issuers
Why it MattersTurns TLS provisioning into a declarative, GitOps-friendly workflow

cert-manager 0.1 set the foundation for pervasive, automated TLS across Kubernetes clusters, removing the toil of manual certificate renewal cycles.

Need help with Kubernetes in production?

Health Check, Launch, or Managed Support — clear packages for SMB teams. Or tell us what is on fire.