# Setzt einen bereits im Cluster laufenden Ingress-Controller voraus (z.B. # ingress-nginx) sowie optional cert-manager fuer automatisches TLS. Host # unten anpassen (muss zu NEXT_PUBLIC_SITE_URL in 01-configmap.yaml passen). # # X-Forwarded-For: ingress-nginx setzt den Header standardmaessig korrekt # (verwirft einen vom Client mitgeschickten Wert), lib/rate-limit.ts vertraut # genau darauf — bei einem ANDEREN Ingress-Controller/zusaetzlichen Proxy # davor unbedingt pruefen, dass er sich genauso verhaelt, siehe Kommentar in # lib/rate-limit.ts. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wabenhain namespace: wabenhain annotations: # Nur relevant, falls cert-manager installiert ist — sonst diese beiden # Zeilen und den "tls:"-Block unten entfernen und Host per HTTP betreiben # oder TLS auf andere Weise terminieren. cert-manager.io/cluster-issuer: letsencrypt-prod nginx.ingress.kubernetes.io/ssl-redirect: "true" # ingress-nginx laesst ohne diese Annotation standardmaessig nur 1 MB pro # Request durch — weit unter dem Bild- (25 MB, lib/uploads.ts # MAX_UPLOAD_BYTES) und erst recht dem Video-Limit (100 MB, lib/uploads.ts # MAX_UPLOAD_VIDEO_BYTES) der Admin-Uploads. Ohne diese Zeile bricht # nginx jeden Upload jenseits von 1 MB vor der App ab (Verbindungsabbruch # ohne verwertbare Fehlermeldung im Browser) — 110m deckt das groessere # der beiden Limits (100 MB) plus etwas Spielraum fuer den # multipart/form-data-Overhead ab. nginx.ingress.kubernetes.io/proxy-body-size: "110m" # Ohne diese drei Annotationen wartet ingress-nginx nur 60 Sekunden je # Phase und liefert danach eine eigene HTML-Fehlerseite (504) aus. Der # Video-Upload braucht regelmaessig laenger: erst muessen bis zu 100 MB # ueber die Leitung, danach rechnet ffmpeg das Video fuers Web um (siehe # lib/video-transcode.ts). Im Browser kam davon nur an, dass die Antwort # kein JSON war ("Unexpected token '<', "