fix(ingress): add HTTP→HTTPS redirect IngressRoute so bare-hostname http:// stops 404ing

This commit is contained in:
OdooSky v3
2026-05-05 12:01:16 +02:00
parent f6cf121966
commit 53ffb5a041

View File

@@ -7,7 +7,7 @@ TLS source resolution:
- Otherwise (multi-domain tenants deploying on a domain outside their
wildcard zone, e.g. `app.havari.me` when wildcard is
`*.tenants.4th.online`), cert-manager issues a per-host
Let's Encrypt cert via HTTP-01. The IngressRoute references that
Let's Encrypt cert via DNS-01. The IngressRoute references that
cert's Secret instead.
This logic lives at template render time so a single chart serves both
@@ -41,6 +41,42 @@ spec:
- {{ .Values.instance.domain }}
{{- end }}
---
# HTTP → HTTPS redirect. Browsers default a bare hostname to http://,
# but the only entrypoint serving Odoo is `websecure` — without this
# route plain-http requests fall through to Traefik's default backend
# and the user sees Traefik's "404 page not found" even though the
# instance is fully up. The Middleware lives in this same chart so a
# legacy cluster without a global redirect-to-https middleware works
# the same as a fresh one.
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: {{ include "instance.fullname" . }}-redirect-https
labels:
{{- include "instance.labels" . | nindent 4 }}
spec:
redirectScheme:
scheme: https
permanent: true
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: {{ include "instance.fullname" . }}-http
labels:
{{- include "instance.labels" . | nindent 4 }}
spec:
entryPoints:
- web
routes:
- match: Host(`{{ .Values.instance.domain }}`)
kind: Rule
middlewares:
- name: {{ include "instance.fullname" . }}-redirect-https
services:
- name: {{ include "instance.fullname" . }}-odoo
port: 8069
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata: