chore: build
This commit is contained in:
@@ -11,3 +11,12 @@ metadata:
|
||||
spec:
|
||||
defaultCertificate:
|
||||
secretName: {{ .Values.tls.secretName }}
|
||||
{{- with .Values.tls.extraSecretNames }}
|
||||
# Certificats supplémentaires (SNI) : ex. le wildcard des projets vitrine.
|
||||
# Traefik choisit le certificat d'après le nom d'hôte demandé ; le
|
||||
# defaultCertificate ci-dessus reste celui des hôtes non couverts.
|
||||
certificates:
|
||||
{{- range . }}
|
||||
- secretName: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -11,6 +11,17 @@
|
||||
# ce certificat.
|
||||
tls:
|
||||
secretName: wildcard-demo-tls
|
||||
# Certificats supplémentaires servis par SNI (voir templates/tlsstore.yaml).
|
||||
# NB : les clients ne voient PAS ce certificat — le TLS public est terminé par
|
||||
# le WAF (deploy/chart-gestion/waf-cluster, `tls.extra`) ; celui-ci ne couvre
|
||||
# que la connexion interne WAF -> Traefik.
|
||||
# wildcard-vitrine-tls : *.vitrine-omnex.club, projets vitrine (voir
|
||||
# deploy/chart-vitrine/cert-manager/wildcard-certificate.yml). Le Certificate
|
||||
# doit exister AVANT le prochain démarrage du control-plane (qui refait un
|
||||
# `helm upgrade --install` de ce chart) : sinon Traefik journalise une erreur
|
||||
# pour ce secret manquant (les autres certificats restent servis).
|
||||
extraSecretNames:
|
||||
- wildcard-vitrine-tls
|
||||
|
||||
waf:
|
||||
paranoia: 2
|
||||
|
||||
@@ -14,16 +14,24 @@ data:
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
{{- /* Un bloc HTTPS par certificat : le premier (server_name _) est le défaut
|
||||
pour les hôtes non reconnus ; chaque entrée de tls.extra ajoute un bloc
|
||||
sélectionné par SNI, avec son propre certificat. */}}
|
||||
{{- $servers := list (dict "name" "_" "dir" "/etc/nginx/certs") }}
|
||||
{{- range $i, $e := .Values.tls.extra }}
|
||||
{{- $servers = append $servers (dict "name" $e.serverName "dir" (printf "/etc/nginx/certs-extra-%d" $i)) }}
|
||||
{{- end }}
|
||||
{{- range $servers }}
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
http2 on;
|
||||
server_name _;
|
||||
server_name {{ .name }};
|
||||
|
||||
server_tokens off;
|
||||
|
||||
ssl_certificate /etc/nginx/certs/tls.crt;
|
||||
ssl_certificate_key /etc/nginx/certs/tls.key;
|
||||
ssl_certificate {{ .dir }}/tls.crt;
|
||||
ssl_certificate_key {{ .dir }}/tls.key;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
|
||||
@@ -55,7 +63,7 @@ data:
|
||||
# par Host comme si le client s'y connectait directement. Host
|
||||
# préservé pour que le routage par Host de Traefik fonctionne.
|
||||
location / {
|
||||
proxy_pass https://{{ .Values.upstream.host }}:{{ .Values.upstream.port }};
|
||||
proxy_pass https://{{ $.Values.upstream.host }}:{{ $.Values.upstream.port }};
|
||||
proxy_ssl_server_name on;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
@@ -74,6 +82,7 @@ data:
|
||||
add_header Content-Type text/plain;
|
||||
}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
custom-rules.conf: |
|
||||
# Règles maison — le reste (SecRuleEngine, Include CRS, seuils de
|
||||
|
||||
@@ -76,6 +76,11 @@ spec:
|
||||
- name: certs
|
||||
mountPath: /etc/nginx/certs
|
||||
readOnly: true
|
||||
{{- range $i, $e := .Values.tls.extra }}
|
||||
- name: certs-extra-{{ $i }}
|
||||
mountPath: /etc/nginx/certs-extra-{{ $i }}
|
||||
readOnly: true
|
||||
{{- end }}
|
||||
- name: modsec-log
|
||||
mountPath: /var/log/modsec
|
||||
livenessProbe:
|
||||
@@ -101,5 +106,10 @@ spec:
|
||||
- name: certs
|
||||
secret:
|
||||
secretName: {{ .Values.tls.secretName }}
|
||||
{{- range $i, $e := .Values.tls.extra }}
|
||||
- name: certs-extra-{{ $i }}
|
||||
secret:
|
||||
secretName: {{ $e.secretName }}
|
||||
{{- end }}
|
||||
- name: modsec-log
|
||||
emptyDir: {}
|
||||
|
||||
@@ -16,6 +16,14 @@ imagePullSecrets: []
|
||||
# Secret que consomme le TLSStore de Traefik (templates/tlsstore.yaml).
|
||||
tls:
|
||||
secretName: wildcard-demo-tls
|
||||
# Certificats supplémentaires sélectionnés par SNI (un bloc HTTPS chacun).
|
||||
# Le WAF termine le TLS côté client : le certificat d'un domaine doit donc
|
||||
# être ici, pas seulement dans le TLSStore de Traefik. Les secrets doivent
|
||||
# exister dans ce namespace. wildcard-vitrine-tls : projets vitrine (voir
|
||||
# deploy/chart-vitrine/cert-manager/wildcard-certificate.yml).
|
||||
extra:
|
||||
- serverName: "*.vitrine-omnex.club"
|
||||
secretName: wildcard-vitrine-tls
|
||||
|
||||
# Service + port internes du Traefik partagé (voir deploy/chart-gestion/traefik) :
|
||||
# ce WAF termine le TLS public puis rouvre une connexion TLS interne vers
|
||||
|
||||
Reference in New Issue
Block a user