chore: build
ci-api / test (push) Successful in 23m32s
ci-web / test (push) Successful in 14m7s

This commit is contained in:
Xor290
2026-09-20 18:52:09 +02:00
parent 9e11f01c2c
commit 8d857faa45
66 changed files with 3673 additions and 1564 deletions
@@ -0,0 +1,58 @@
{{- if not .Values.host }}
{{- fail "ingressroute: .Values.host est requis (ex: vitrine-abc12.vitrine-omnex.club)" }}
{{- end }}
# Routage HTTPS. Le certificat est celui de `tls.secretName` (SNI) ; sans
# secretName, Traefik retombe sur le certificat par défaut du TLSStore
# partagé. Le redirect HTTP -> HTTPS est géré au niveau de l'entrypoint
# Traefik (pas dupliqué ici).
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: {{ .Release.Namespace }}-routes
namespace: {{ .Release.Namespace }}
labels:
{{- include "ingressroute.labels" . | nindent 4 }}
spec:
entryPoints:
- websecure
routes:
# API backend — WAF + headers + rate limit (middlewares partagés, définis
# dans le namespace du Traefik commun, référencés cross-namespace).
- match: Host(`{{ .Values.host }}`) && (PathPrefix(`/api/`))
kind: Rule
priority: 20
middlewares:
- name: waf-chain
namespace: {{ .Values.traefikNamespace }}
services:
- name: {{ include "ingressroute.backendService" . }}
port: {{ .Values.backend.servicePort }}
# Fichiers uploadés — WAF désactivé dans les règles Coraza pour ce path
- match: Host(`{{ .Values.host }}`) && PathPrefix(`/uploads/`)
kind: Rule
priority: 15
middlewares:
- name: security-headers
namespace: {{ .Values.traefikNamespace }}
services:
- name: {{ include "ingressroute.backendService" . }}
port: {{ .Values.backend.servicePort }}
# Frontend SPA — WAF + headers + rate limit
- match: Host(`{{ .Values.host }}`)
kind: Rule
priority: 1
middlewares:
- name: waf-chain
namespace: {{ .Values.traefikNamespace }}
services:
- name: {{ include "ingressroute.frontendService" . }}
port: {{ .Values.frontend.servicePort }}
{{- if .Values.tls.secretName }}
tls:
secretName: {{ .Values.tls.secretName }}
{{- else }}
tls: {}
{{- end }}