@@ -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
|
||||
Reference in New Issue
Block a user