当前位置: 首页 > news >正文

【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-ingressroutenamespace: apps
spec:entryPoints:- httproutes:- match: Host(`vm.apps.com`) && PathPrefix(`/`)kind: Ruleservices:- name: whoami-svcport: 80middlewares:- name: forward-auth    # 鉴权中间件
# 鉴权中间件
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:name: forward-authnamespace: 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 位于哪个命名空间,它都能正确解析到目标服务。


http://www.mrgr.cn/news/83356.html

相关文章:

  • 自动化测试
  • LeetCode:108.将有序数组转换为二叉搜索树
  • 智能合约:区块链世界的自动化契约
  • 18_C语言 -位运算
  • 正则表达式{}和(),pyhton里的正则表达式,函数findall解析
  • C++ STL 中的 vector 总结
  • 【FPGA】时序约束与分析
  • 【git】-初始git
  • 【git】-2 分支管理
  • mysql-运维sql
  • 2025年第三届“华数杯”国际赛B题解题思路与代码(Matlab版)
  • 熵与交叉熵:从不确定性角度理解 KL 散度
  • win32汇编环境,窗口程序中对按钮控件常用操作的示例
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Python版)
  • linux RT-Preempt spin lock实现
  • TVbox 手机、智能电视节目一网打尽
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Matlab版)
  • Ubuntu | PostgreSQL | 解决 ERROR: `xmllint` is missing on your system.
  • 初学stm32 --- DAC模数转换器工作原理
  • 2025年第三届“华数杯”国际大学生数学建模竞赛A题完整论文讲解
  • 嵌入式C语言:二维数组
  • LeetCode 热题 100 | 哈希
  • C#从“Hello World!“开始
  • JDK21虚拟线程死锁问题
  • 【Delphi 开箱即用 6】应用程序在任务栏中更换ico图标
  • ORB-SALM3配置流程及问题记录