Hello mrt,
Thank you so much for the suggested solution to this problem.
I have tried your solution using Traefik v3.6.2 on chart v37.4.0 but it does not seem to be working.
I am using AKS on Azure with Traefik setup as follows:
ports:
web:
port: 8000
expose:
default: true
exposedPort: 80
targetPort: # @schema type:[string, integer, null]; minimum:0
protocol: TCP
nodePort: # @schema type:[integer, null]; minimum:0
redirections:
entryPoint:
to: websecure
scheme: https
permanent: true
forwardedHeaders:
trustedIPs:
- "10.0.0.0/8"
insecure: false
proxyProtocol:
trustedIPs: []
insecure: false
transport:
respondingTimeouts:
readTimeout: # @schema type:[string, integer, null]
writeTimeout: # @schema type:[string, integer, null]
idleTimeout: # @schema type:[string, integer, null]
lifeCycle:
requestAcceptGraceTimeout: # @schema type:[string, integer, null]
graceTimeOut: # @schema type:[string, integer, null]
keepAliveMaxRequests: # @schema type:[integer, null]; minimum:0
keepAliveMaxTime: # @schema type:[string, integer, null]
observability: # @schema additionalProperties: false
accessLogs: true
websecure:
port: 8443
hostPort: # @schema type:[integer, null]; minimum:0
containerPort: # @schema type:[integer, null]; minimum:0
expose:
default: true
exposedPort: 443
targetPort: # @schema type:[string, integer, null]; minimum:0
protocol: TCP
nodePort: # @schema type:[integer, null]; minimum:0
appProtocol: # @schema type:[string, null]
allowACMEByPass: false
http3:
enabled: true
advertisedPort: # @schema type:[integer, null]; minimum:0
forwardedHeaders:
trustedIPs:
- "10.0.0.0/8"
insecure: false
proxyProtocol:
trustedIPs: []
insecure: false
transport:
respondingTimeouts:
readTimeout: # @schema type:[string, integer, null]
writeTimeout: # @schema type:[string, integer, null]
idleTimeout: # @schema type:[string, integer, null]
lifeCycle:
requestAcceptGraceTimeout: # @schema type:[string, integer, null]
graceTimeOut: # @schema type:[string, integer, null]
keepAliveMaxRequests: # @schema type:[integer, null]; minimum:0
keepAliveMaxTime: # @schema type:[string, integer, null]
tls:
enabled: true
options: ""
certResolver: "cloudflare"
domains:
- main: domain.com
sans:
- "*.domain.com"
middlewares: [ ]
observability: # @schema additionalProperties: false
accessLogs: true
experimental:
plugins:
real-ip:
moduleName: github.com/soulbalz/traefik-real-ip
version: v1.0.3
extraObjects:
- apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: real-ip
namespace: traefik
spec:
plugin:
real-ip:
excludednets:
# Load balancer IPs
# - "10.0.0.0/8"
# or dummy IP
- "1.1.1.1/32"
additionalArguments:
- --entrypoints.web.http.middlewares=traefik-real-ip@kubernetescrd
- --api.dashboard=true
- --api=true
- --api.insecure=true
- --log.level=DEBUG
- --accesslog=true
but in my case, whoamI is reporting:
X-Forwarded-For: 10.1.0.4
X-Forwarded-Host: who-test.domain.com
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: traefik-7b8d45969b-g675q
X-Real-Ip: 10.1.0.4
in case it’s relevant externalTrafficPolicy is set to: Local
Any thoughts on what I am doing wrong?
Thanks
Chris