# fleet/cert-manager — TLS for the cluster cert-manager + ACME ClusterIssuers. Installs via the **k3s built-in Helm controller** (no Helm CLI needed), then defines `letsencrypt-staging` and `letsencrypt-prod` (HTTP-01 through the bundled Traefik). ## Apply order (matters — issuers need the CRDs first) ```bash # 1) Install cert-manager kubectl apply -f cert-manager.yaml # 2) Wait until it's up (CRDs + webhook ready) kubectl -n cert-manager rollout status deploy/cert-manager-webhook --timeout=180s kubectl -n cert-manager get pods # 3) Create the issuers kubectl apply -f cluster-issuer.yaml kubectl get clusterissuer # both should report READY=True ``` ## Notes - ACME email is `info@dezky.eu` — change in `cluster-issuer.yaml` if needed. - **Test with `letsencrypt-staging` first** (set an Ingress annotation `cert-manager.io/cluster-issuer: letsencrypt-staging`) to avoid burning the strict prod rate limits, then switch the apps to `letsencrypt-prod`. - HTTP-01 requires each hostname's DNS A record → `46.4.78.187` and port 80 open (already true). A cert won't issue until DNS resolves. - The app Ingresses (`fleet/apps/`) already reference `letsencrypt-prod`.