【traefik】forwadAuth中间件跨namespace请求的问题

前情提要 - fowardAuth鉴权中间件的使用:

【traefik】使用forwardAuth中间件做网关层的全局鉴权

1. 问题

我的 traefik-ingress-controller 所在 namespace: traefik

业务服务所在 namespace: apps

路由与 forwardAuth 中间件配置如下:

复制代码
# 路由
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: whoami-ingressroute
  namespace: apps
spec:
  entryPoints:
    - http
  routes:
    - match: Host(`vm.apps.com`) && PathPrefix(`/`)
      kind: Rule
      services:
        - name: whoami-svc
          port: 80
      middlewares:
        - name: forward-auth    # 鉴权中间件

# 鉴权中间件
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: forward-auth
  namespace: apps
spec:
  forwardAuth:
    address: "http://whoami-svc:80/forwardAuth"   # 转发到whoami-svc这个service

发现 traefik 找不到这个 address 地址,traefik 日志报错如下:

msg="Error calling http://whoami-svc:80/forwardAuth. Cause: Get \"http://whoami-svc:80/forwardAuth\\": dial tcp: lookup whoami-svc on 10.96.0.10:53: no such host" middlewareName=apps-forward-auth@kubernetescrd middlewareType=ForwardedAuthType

2. 解决

这个请求是一个跨 namespace 的请求,即 traefik-ingress-controller(在 ns: traefik 下)经过中间件请求 http://whoami-svc:80/forwardAuth 时,k8s DNS 根据 traefik 当前所在的 namespace 解析这个域名,而 ns: traefik 中并没有 whoami-svc 这个 service,因此解析失败。

因此,当你的 traefik 需要使用跨 namespace 的功能时,最好在 address 中配置完整的、携带 ns 名称的域名,即:

复制代码
将
  forwardAuth:
    address: "http://whoami-svc:80/forwardAuth"
改为
  forwardAuth:
    address: "http://whoami-svc.apps:80/forwardAuth"   # 显式指明apps这个ns

这样做的好处是增加了配置的明确性和可靠性,尤其是在多命名空间环境中。

这样可以确保无论 traefik 位于哪个命名空间,它都能正确解析到目标服务。

相关推荐
muyouking113 小时前
4.Rust+Axum Tower 中间件实战:从集成到自定义
开发语言·中间件·rust
Cachel wood13 小时前
Mysql相关知识2:Mysql隔离级别、MVCC、锁
数据库·python·sql·mysql·中间件·数据分析·django
w236173460117 小时前
解析三大中间件:Nginx、Apache与Tomcat
nginx·中间件·tomcat·apache
亿牛云爬虫专家17 小时前
容器化爬虫部署:基于K8s的任务调度与自动扩缩容设计
爬虫·容器·kubernetes·自动化·k8s·爬虫代理·代理ip
和尚用0飘柔01 天前
【中间件】redis使用
数据库·redis·中间件
佳腾_1 天前
【消息队列RocketMQ】一、RocketMQ入门核心概念与架构解析
中间件·架构·消息队列·云计算·rocketmq
和尚用0飘柔01 天前
【中间件】nginx将请求负载均衡转发给网关,网关再将请求转发给对应服务
nginx·中间件·负载均衡
MarkHD2 天前
第二十五天 - Web安全防护 - WAF原理与实现 - 练习:请求过滤中间件
安全·web安全·中间件
西岭千秋雪_2 天前
Nacos配置中心客户端处理服务端配置信息源码解析
java·开发语言·分布式·spring·微服务·中间件
独行soc2 天前
2025年渗透测试面试题总结-拷打题库06(题目+回答)
java·开发语言·前端·中间件·数据挖掘·php·xss