mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-08-20 14:17:07 +00:00
* feat(k8s): add Traefik IngressRouteTCP for gRPC with TLS passthrough Re-introduce Traefik support for the gRPC filer ingress that was lost when the original ingress PR was merged. Previous attempts to make the chart controller-agnostic using Ingress + ServersTransport + TLSOption CRDs were fragile — they required 2 separate services (HTTP and gRPC), still failed with connection resets, and forced Traefik to terminate and re-encrypt TLS traffic. This approach uses a single IngressRouteTCP CRD with TLS passthrough when enableSecurity is true, keeping the TLS stream intact. No ServersTransport, no TLSOption, no service annotations, no values.yaml structure changes. Fully backward compatible. Refs: seaweedfs/seaweedfs#10205 Co-Authored-By: Athena 🏛️ <hermes-agent@local> (custom / Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf) * refactor(k8s): only render standard gRPC Ingress when className is not Traefik When className contains 'traefik', the IngressRouteTCP is the only source of truth. The standard Kubernetes Ingress becomes superfluous and potentially confusing for debugging. Now: - className: traefik → only IngressRouteTCP - className: nginx/contour/... → only standard Ingress - className: "" (default) → neither No values.yaml changes. Fully backward compatible. Co-Authored-By: Athena 🏛️ <hermes-agent@local> (custom / Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf) * k8s: fix Traefik gRPC IngressRouteTCP for non-TLS and all-in-one modes A non-TLS TCP router can only match HostSNI(`*`), so the default enableSecurity=false path never matched. Use HostSNI(`*`) when security is off and keep host-based SNI for TLS passthrough. Route to the all-in-one service in all-in-one mode via the same ternary the standard ingress uses; the hardcoded filer-client service is absent when filer.enabled is false. Also require grpc.enabled to render, align labels with the sibling ingress, and put the comments in English. --------- Co-authored-by: Chris Lu <chris.lu@gmail.com>