# Cert Manager

> Emisión y renovación automática de certificados TLS en Kubernetes usando Let's Encrypt

- Skill: `davidcastagnetoa/cert-manager` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add davidcastagnetoa/cert-manager`
- Raw SKILL.md: https://api.skillmd.com/api/skills/davidcastagnetoa/cert-manager/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: davidcastagnetoa (https://skillmd.com/u/davidcastagnetoa)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/davidcastagnetoa/cert-manager

---


# cert_manager

cert-manager automatiza el ciclo de vida de los certificados TLS: solicitud, validación, emisión y renovación. Integrado con Let's Encrypt, garantiza que los certificados nunca expiran y elimina el trabajo manual de gestión de TLS.

## When to use

Usar en el cluster Kubernetes de producción para todos los servicios expuestos externamente (Nginx Ingress) e internamente (comunicaciones entre microservicios si no se usa Istio).

## Instructions

1. Instalar cert-manager en Kubernetes:
   ```bash
   kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
   ```
2. Crear `ClusterIssuer` para Let's Encrypt:
   ```yaml
   apiVersion: cert-manager.io/v1
   kind: ClusterIssuer
   metadata:
     name: letsencrypt-prod
   spec:
     acme:
       server: https://acme-v02.api.letsencrypt.org/directory
       email: security@company.com
       privateKeySecretRef:
         name: letsencrypt-prod-key
       solvers:
         - http01:
             ingress:
               class: nginx
   ```
3. Añadir anotación en el Ingress de Nginx:
   ```yaml
   annotations:
     cert-manager.io/cluster-issuer: "letsencrypt-prod"
   spec:
     tls:
       - hosts: [api.kyc.company.com]
         secretName: kyc-api-tls
   ```
4. cert-manager renueva automáticamente 30 días antes de expiración.
5. Verificar estado: `kubectl get certificates -A` y `kubectl describe certificate kyc-api-tls`.
6. Para comunicaciones internas mTLS sin Istio, usar `ClusterIssuer` con CA propia (SelfSigned o Vault PKI).

## Notes

- Let's Encrypt tiene rate limits — en staging usar `letsencrypt-staging` para pruebas.
- Para dominios internos (`.svc.cluster.local`), usar una CA interna gestionada por Vault PKI Engine.
- Alertar con Prometheus si algún certificado expira en menos de 14 días (fallo del proceso de renovación).
