Traefik¶
Ingress / API Gateway del cluster (Gateway API).
Resumen¶
Traefik v3 hace de ingress de todo el tráfico HTTP/HTTPS interno, sustituyendo
a Nginx Proxy Manager (legacy). Usa el provider kubernetesGateway (Gateway
API, estándar), no el Ingress clásico.
Estado¶
| Campo | Valor |
|---|---|
| Estado | Operativo |
| Argo CD Application | — (bootstrap Ansible) |
| Namespace | traefik |
Despliegue¶
| Campo | Valor |
|---|---|
| Método | Helm traefik/traefik |
| Versión (chart) | 41.4.0 (Traefik v3) |
| Rol | k3s/ansible/roles/traefik (+ files/values.yaml) |
| Gateway API | v1.6.1 (canal standard) |
Red¶
| Campo | Valor |
|---|---|
| Service | traefik (LoadBalancer) |
| IP | 192.168.20.60 |
| Puertos | 80/443 (→ entrypoints web 8000 / websecure 8443) |
| Gateway | traefik-gateway (ns traefik) |
| Listeners | web (HTTP 8000), websecure (HTTPS 8443, TLS cert-manager) |
| URLs | https://<svc>.local.gorkarevilla.com |
Dashboard¶
Traefik v3 trae dashboard integrado (--api.dashboard=true, entrada interna
traefik en el puerto 8080, path /dashboard/). Está expuesto solo en LAN
por HTTPS vía un IngressRoute dedicado (backend api@internal), sin
exponer el puerto 8080 en el LoadBalancer:
| Campo | Valor |
|---|---|
| URL | https://traefik.local.gorkarevilla.com/dashboard/ (la / final es obligatoria) |
| EntryPoint | websecure (TLS wildcard *.local.gorkarevilla.com) |
| Backend | api@internal (TraefikService) |
| Autenticación | basic auth (Middleware traefik-dashboard-auth) |
El dashboard expone configuración del cluster; por eso va protegido con basic auth. El
Secrettraefik-dashboard-auth(tipokubernetes.io/basic-auth, clavesusername/password) lo gestiona Vaultwarden → VKS (ítem en la colecciónHomelab).
Acceso y usuarios¶
- Dashboard: basic auth (credenciales en el
Secretgestionado por VKS). - Resto: no aplica (proxy; el acceso lo controla cada servicio).
Configuración¶
- provider
kubernetesGatewayhabilitado. - Listener
websecureconcertificateRefs→ secrettraefik-local-tls(wildcard*.local.gorkarevilla.comemitido por cert-manager). - El Traefik v2 empaquetado de k3s se deshabilita en la instalación.
ingressRoute.dashboardhabilitado enk3s/ansible/roles/traefik/files/values.yaml(match por hosttraefik.local.gorkarevilla.com,entryPoints: [websecure],tls.secretName: traefik-local-tls, middlewaretraefik-dashboard-auth).Middlewaretraefik-dashboard-auth(basicAuth) creado víaextraObjectsen el mismovalues.yaml.
Almacenamiento¶
- No aplica.
Dependencias¶
- Depende de: k3s, MetalLB (IP), cert-manager (cert TLS).
- Usado por: todos los servicios HTTP internos.
Backup y recuperación¶
- No aplica (config en GitOps/Ansible).
Monitorización¶
- Expone métricas Prometheus en
:9100(--metrics.prometheus=true). - Scrapeado vía PodMonitor
traefik(clusters/luka/config/servicemonitors/traefik.yaml).
Referencias¶
- Chart: https://github.com/traefik/traefik-helm-chart
- Docs: https://doc.traefik.io/traefik/
Notas / TODO¶
- Migrar la gestión de Traefik de Ansible a Argo CD.
- Crear las HTTPRoutes del resto de servicios (hoy aún en NPM).
SafeNaming(warning de arranque): arreglado conproviders.kubernetesCRD.safeNaming: trueenvalues.yaml(el provider CRD está activo por el dashboard IngressRoute).- Hardening de entrypoints (v3.7.12) — aplicado en
values.yaml(ports.*.http): aliasHeadersStrategy: deleteenweb,websecure,traefikymetrics(evita spoofing de headers aliased comoX_Auth_UservsX-Auth-User).encodedCharacters.*: falseenwebywebsecure(rechaza caracteres codificados en el path: anti path-traversal / split-view).- Nota: Traefik v3.7.12 sigue emitiendo el warning
Encoded characters in the request pathen cada arranque de forma incondicional (bug/aviso fijo encmd/traefik/traefik.go); no se puede silenciar por config, pero el hardening ya está aplicado.