|
| 1 | +# Changelog |
| 2 | + |
| 3 | +## [0.7.0] - 2026-03-31 |
| 4 | + |
| 5 | +### Breaking Changes |
| 6 | + |
| 7 | +- **`caddy.ingress/plain-http` annotation removed** — Ingresses without `spec.tls` are now plain HTTP automatically. No annotation needed; remove it from existing Ingresses. |
| 8 | +- **`k8sIngress.enabled` removed** — the chart is the ingress controller; the flag no longer exists. Remove it from your `values.yaml`. |
| 9 | +- **Global `:80 → https` redirect removed** from the Caddyfile template — it conflicted with HTTP-only Ingresses. Add an explicit `ssl-redirect` annotation per Ingress if needed. |
| 10 | + |
| 11 | +### TLS Model Overhaul |
| 12 | + |
| 13 | +The TLS model has been completely redesigned around `spec.tls` as the authoritative signal: |
| 14 | + |
| 15 | +- **`spec.tls` is required for HTTPS.** Ingresses without it are served over plain HTTP. There is no automatic TLS. |
| 16 | +- New **`caddy.ingress/tls`** annotation declares which handler manages the certificate: |
| 17 | + - `certmagic` — CertMagic issues the cert via ACME proactively (within seconds of Ingress creation, no `secretName` needed) |
| 18 | + - `cert-manager` — cert-manager creates the Secret in `spec.tls.secretName`; caddy-k8s loads and watches it |
| 19 | +- TLS Secrets must exist in the **same namespace as the Ingress**. |
| 20 | + |
| 21 | +### New Features |
| 22 | + |
| 23 | +- **Per-Ingress on-demand TLS** (`caddy.ingress/tls-ondemand: "true"`) — issue the cert on the first TLS connection instead of proactively. Requires `caddy.ingress/tls: certmagic`. Global `ask` URL and rate limits (configured in Helm values) still apply. |
| 24 | +- **Per-Ingress custom CA** (`caddy.ingress/tls-ca: "<url>"`) — use a different ACME CA for a specific Ingress (e.g. ZeroSSL, Google Trust Services) while others use the global default. |
| 25 | +- **Per-Ingress EAB credentials** (`caddy.ingress/tls-ca-secret: "<name>"`) — reference a K8s Secret (same namespace) containing `key_id` and `mac_key` for CAs that require External Account Binding. |
| 26 | + |
| 27 | +### Improvements |
| 28 | + |
| 29 | +- WAF setup clarified: `plugins.coraza.enabled: true` loads the Coraza module and configures the OWASP ruleset; `k8sIngress.security.waf: true` injects the handler into every Ingress route. Both are required. Per-route override via `caddy.ingress/waf: "off"|"on"|"detection"`. |
| 30 | +- New example files: `cert-manager.yaml`, `certmagic.yaml`, `ondemand-tls.yaml`, `zerossl.yaml` — each explains both global and per-Ingress usage. |
| 31 | +- All app examples (`nextcloud`, `mailu`, `gitea`, `grafana`, `jellyfin`, `vaultwarden`, `authelia`, `azuracast`) updated with `cert-manager.io/cluster-issuer` annotation and `spec.tls.secretName`. |
| 32 | + |
| 33 | +--- |
| 34 | + |
| 35 | +## [0.6.0] - 2026-02-xx |
| 36 | + |
| 37 | +### New Features |
| 38 | + |
| 39 | +- Built-in config reloader (`k8s_config_reloader`) — watches the Caddyfile ConfigMap and calls `POST /load` on change; no pod restart needed. |
| 40 | +- Optional Redis store for persistent Ingress → route ID tracking across Caddy restarts. |
| 41 | +- `spec.tls` support — caddy-k8s loads `kubernetes.io/tls` Secrets and watches them for renewals. |
| 42 | +- `caddy.ingress/plain-http` annotation for HTTP-only Ingresses (superseded in 0.7.0). |
| 43 | +- CertMagic ACME with on-demand TLS, EAB, and DNS-01 challenge support added to Helm values. |
| 44 | +- `caddy-security` plugin for authentication and SSO. |
| 45 | +- `caddyfile.extraGlobalOptions` escape hatch for custom global Caddyfile directives. |
| 46 | +- `caddy-kubernetes-storage` and `caddy-storage-redis` for CertMagic cert persistence. |
0 commit comments