chore: update
ci-api / test (push) Successful in 24m53s

This commit is contained in:
Nuxgrid
2026-07-31 13:25:03 +02:00
parent ac8bdbcab7
commit dce80908e3
31 changed files with 740 additions and 155 deletions
@@ -0,0 +1,6 @@
apiVersion: v2
name: gestion-ingressroute
description: Routage Traefik d'une démo (Host dynamique -> Services de son propre namespace) — installé une fois par démo, pointe vers le Traefik partagé (deploy/chart-gestion/traefik)
type: application
version: 0.1.0
appVersion: "1.0.0"
@@ -0,0 +1,14 @@
{{- define "ingressroute.labels" -}}
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{- define "ingressroute.backendService" -}}
{{- .Values.backend.serviceName | default (printf "%s-backend-gestion-backend" .Release.Namespace) }}
{{- end }}
{{- define "ingressroute.frontendService" -}}
{{- .Values.frontend.serviceName | default (printf "%s-frontend-gestion-frontend" .Release.Namespace) }}
{{- end }}
@@ -0,0 +1,53 @@
{{- if not .Values.host }}
{{- fail "ingressroute: .Values.host est requis (ex: demo-abc123.demo.demo-uber.club)" }}
{{- end }}
# Routage HTTPS de cette démo. Le TLS n'est pas précisé : Traefik utilise
# automatiquement le certificat wildcard par défaut du TLSStore partagé
# (voir deploy/chart-gestion/traefik/templates/tlsstore.yaml). 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/`) || PathPrefix(`/webhook/`))
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 }}
tls: {}
@@ -0,0 +1,21 @@
# Sous-domaine complet de la démo, ex: demo-abc123.demo.demo-uber.club
# (doit correspondre au wildcard *.demo.demo-uber.club émis par cert-manager
# et à l'URL calculée par le control-plane pour cette démo — voir
# control-plane/api/internal/demos/service.go).
host: ""
# Namespace où tourne le Traefik partagé et ses Middlewares (waf-chain,
# rate-limit, coraza-waf, security-headers) — voir deploy/chart-gestion/traefik.
traefikNamespace: traefik
# Services de CE namespace de démo (mêmes noms que ceux générés par les
# charts backend/frontend : <namespace>-backend-gestion-backend, etc.)
# Laissés vides par défaut : calculés automatiquement à partir de
# .Release.Namespace dans le template si non surchargés ici.
backend:
serviceName: ""
servicePort: 8080
frontend:
serviceName: ""
servicePort: 80