Skip to main content
Manual TLS certificate handling does not scale: someone must create the certificate object, store it in a Secret, track expiry, and rotate it before traffic breaks. cert-manager models this workflow as Kubernetes resources and runs a controller to reconcile them: you create custom resources (Issuer, Certificate) and the operator performs key generation, signing, Secret creation, and renewal. This guide shows how to:
  • Install cert-manager from a release manifest
  • Create a self-signed Issuer
  • Request a Certificate resource
  • Verify cert-manager created the TLS Secret
Prerequisite: ensure your cluster can access the cert-manager release manifest URL and that kubectl is configured to talk to the target cluster.

1) Verify the cert-manager manifest URL

Confirm the release manifest URL is set in your environment:

2) Install cert-manager

Apply the approved cert-manager release manifest. The manifest installs the CRDs for cert-manager (Certificate, Issuer, etc.) and deploys the cert-manager controller, webhook, and CA injector into the cert-manager namespace.
Wait for cert-manager deployments to become available before creating Issuer or Certificate resources. The API server contacts the cert-manager webhook on resource creation; if the webhook is not ready, the API server may reject valid objects.
Wait for the cert-manager deployments (controller, webhook, cainjector) to be ready:

3) Create a self-signed Issuer

An Issuer is a namespaced resource that defines how certificates are signed. For demos or local testing, a self-signed Issuer is convenient because it does not require an external CA. issuer.yaml:
Apply the Issuer and wait for it to become Ready:
Use a ClusterIssuer when you want an issuer available cluster-wide. For simple demos and per-namespace control, a namespaced Issuer is preferable.

4) Request a Certificate

Create a Certificate resource which tells cert-manager:
  • the Secret name to write
  • the DNS names the certificate should cover
  • which Issuer to use to sign the certificate
certificate.yaml:
Apply the Certificate and wait for it to be ready:
Check the Certificate resource to see the Secret name, readiness, and age:

5) Inspect the TLS Secret

cert-manager writes the signed certificate and key into a Kubernetes Secret of type kubernetes.io/tls. The Secret usually contains these keys: tls.crt, tls.key, and often ca.crt.
You can view a specific key (base64-decoded) or mount this Secret into an Ingress, Pod, or any Kubernetes resource that accepts TLS credentials:

Quick reference: resources and use cases

What cert-manager automates

  • Private key generation
  • Creating CertificateRequest objects
  • Submitting CSR to the chosen Issuer
  • Storing signed certificate and key in a Secret
  • Automatic renewal before expiry (operator reconciles resources)
This pattern — “custom resources in, operator-managed result out” — avoids writing controller logic and leverages the operator model in Kubernetes.

References

That completes an end-to-end cert-manager flow: Issuer + Certificate in, TLS Secret out, and renewal handled by the operator.

Watch Video