# Cert Manager

> Kubernetes certificate management debugging and configuration. This skill should be used when troubleshooting cert-manager issues, configuring private CA issuers (SelfSigned, CA, Vault), integrating with Traefik IngressRoute TLS, diagnosing Certificate/CertificateRequest/Issuer problems, or debugging webhook connectivity issues.

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

---


# cert-manager

Kubernetes-native TLS certificate lifecycle management. Automates issuance, renewal, and rotation from private CAs.

## Debugging Workflow

When certificates fail, debug the resource chain in order:

```
Certificate → CertificateRequest → Issuer/ClusterIssuer
```

**First commands to run:**
```bash
kubectl get certificate,certificaterequest,issuer,clusterissuer -A
kubectl describe certificate <name> -n <namespace>
```

For detailed debugging steps, see `references/troubleshooting-workflow.md`.

## Private CA Configuration

This skill focuses on self-hosted issuers (no Let's Encrypt):

| Issuer Type | Use Case |
|-------------|----------|
| SelfSigned | Bootstrap CA hierarchy, testing |
| CA | Sign with existing CA credentials in Secret |
| Vault | Sign via HashiCorp Vault PKI engine |

### Quick Bootstrap (SelfSigned → CA)

```yaml
# Creates self-signed root, then CA issuer for leaf certs
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: selfsigned-issuer
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: root-ca
  namespace: cert-manager
spec:
  isCA: true
  commonName: root-ca
  secretName: root-ca-secret
  issuerRef:
    name: selfsigned-issuer
    kind: ClusterIssuer
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: ca-issuer
spec:
  ca:
    secretName: root-ca-secret
```

For complete issuer configuration, see `references/private-ca-issuers.md`.

## Traefik Integration

Create Certificate resource, reference secret in IngressRoute:

```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: myapp-tls
spec:
  secretName: myapp-tls-secret
  dnsNames: ["myapp.example.com"]
  issuerRef:
    name: ca-issuer
    kind: ClusterIssuer
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
spec:
  entryPoints: [websecure]
  routes:
    - match: Host(`myapp.example.com`)
      kind: Rule
      services:
        - name: myapp-service
          port: 80
  tls:
    secretName: myapp-tls-secret
```

For wildcard certs and Ingress annotations, see `references/traefik-integration.md`.

## Common Issues

| Symptom | Likely Cause | Reference |
|---------|--------------|-----------|
| Certificate stuck Pending | Issuer not ready, CertificateRequest failed | troubleshooting-workflow.md |
| Webhook connection refused | Pod not running, network policy | webhook-issues.md |
| x509 unknown authority | CA bundle not injected | webhook-issues.md |
| Secret not created | Issuer configuration error | troubleshooting-workflow.md |
| Vault permission denied | Vault policy/role misconfigured | private-ca-issuers.md |

## References

- `references/troubleshooting-workflow.md` - Step-by-step debugging
- `references/private-ca-issuers.md` - SelfSigned, CA, Vault configuration
- `references/traefik-integration.md` - IngressRoute TLS setup
- `references/webhook-issues.md` - Webhook connectivity problems

