mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 06:44:42 +02:00
- Traefik externalTrafficPolicy: Local → IP client réelle (fin du SNAT kube-proxy) - middleware ratelimit par IP (100/min, burst 200) sur les 6 routes publiques - middleware security-headers (HSTS, nosniff, X-Frame SAMEORIGIN, Referrer-Policy) - TLSOption globale : plancher TLS 1.2 + ciphers modernes - Guacamole REMOTE_IP_VALVE → ban anti-bruteforce par IP (fin du piège n°5) - nftables : fermeture des ports Internet legacy 9080/9081 (HTTP clair redondant) - allowCrossNamespace pour mutualiser les middlewares depuis infra - docs : section Durcissement (public-domain.md) + CAA OVH + pièges à jour Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
64 lines
2.2 KiB
YAML
64 lines
2.2 KiB
YAML
# Traefik (ingress cluster) — valeurs Helm
|
|
# ⚠️ Traefik est installé/mis à jour HORS ArgoCD (helm au bootstrap, cf.
|
|
# admin/k8s/talos.md). Ce fichier versionne la config ; l'appliquer avec :
|
|
# helm upgrade traefik traefik/traefik -n infra -f k8s/infra/traefik/values.yaml
|
|
# Chart traefik-40.1.0 (Traefik v3.7.1).
|
|
|
|
# --- Réplique de la config existante (helm get values) ---
|
|
service:
|
|
type: LoadBalancer
|
|
loadBalancerIP: 192.168.10.200 # VIP MetalLB — NE PAS changer
|
|
# Préserve l'IP client réelle jusqu'à Traefik (sinon kube-proxy SNAT en Cluster →
|
|
# Traefik voit l'IP d'un nœud). Requis pour le rate-limit par IP (middleware
|
|
# ratelimit) et le X-Forwarded-For propagé aux apps (ban Guacamole par IP).
|
|
# MetalLB L2 : la VIP n'est annoncée que depuis un nœud portant un pod Traefik prêt.
|
|
spec:
|
|
externalTrafficPolicy: Local
|
|
ingressRoute:
|
|
dashboard:
|
|
enabled: true
|
|
# Autorise les IngressRoutes (auth/ai/monitoring/argocd) à référencer les middlewares
|
|
# mutualisés du namespace infra (ratelimit, security-headers). Défaut Traefik v3 = false.
|
|
providers:
|
|
kubernetesCRD:
|
|
allowCrossNamespace: true
|
|
logs:
|
|
general:
|
|
level: INFO
|
|
ports:
|
|
web:
|
|
port: 80
|
|
websecure:
|
|
port: 443
|
|
|
|
# --- Let's Encrypt (HTTP-01, un certificat par sous-domaine) ---
|
|
# Pas de redirection HTTP→HTTPS globale : les services internes en *.lab.local
|
|
# resteraient sinon cassés (Let's Encrypt ne certifie pas .lab.local). La redirection
|
|
# est scopée à funklab.online via une IngressRoute dédiée (k8s/infra/traefik/redirect.yaml).
|
|
certificatesResolvers:
|
|
letsencrypt:
|
|
acme:
|
|
email: aliyesilkaya93@gmail.com
|
|
storage: /data/acme.json
|
|
httpChallenge:
|
|
entryPoint: web
|
|
|
|
# Stockage persistant de acme.json (sinon ré-émission à chaque redémarrage →
|
|
# risque de rate-limit Let's Encrypt)
|
|
persistence:
|
|
enabled: true
|
|
name: data
|
|
accessMode: ReadWriteOnce
|
|
size: 128Mi
|
|
storageClass: nfs
|
|
path: /data
|
|
|
|
# acme.json doit être en 0600, sinon Traefik refuse de l'utiliser
|
|
deployment:
|
|
initContainers:
|
|
- name: volume-permissions
|
|
image: busybox:1.36
|
|
command: ["sh", "-c", "touch /data/acme.json && chmod 600 /data/acme.json"]
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /data
|