You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Kubernetes原生Ingress暴露Traefik v2 Dashboard

方案可行性说明

完全可行,不需要特殊适配。你之前用IngressRoute直接引用api@internal是Traefik自定义资源的专属用法,原生Kubernetes Ingress不需要直接调用这个内置服务,Traefik开启Dashboard/API后会自动暴露对应Kubernetes Service,直接指向该Service即可实现完全一致的效果。

配置步骤

1. 前置确认

先确认两个基础条件:

  • Traefik启动参数包含--api.dashboard=true(v2/v3版本通用),确保Dashboard和API能力已开启
  • 执行命令查看Traefik所在命名空间下的自带Service:
# 替换为你实际部署Traefik的命名空间,常见为traefik、kube-system
kubectl get svc -n traefik

正常能看到名为traefik的Service,暴露的端口对应Traefik的API/Dashboard监听端口(默认是8080,部分部署版本为9000,以实际查询结果为准),这个Service已经自动把流量路由到内置的api@internal服务,不需要你额外创建。

2. 编写原生Ingress配置

和你之前的IngressRoute逻辑完全对齐,需要同时匹配/api和/dashboard两个路径前缀,通过Traefik的Ingress注解挂载你之前用的中间件、配置证书解析器即可,参考配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traefik-dashboard
  namespace: my-namespace
  annotations:
    # 指定使用Traefik作为Ingress控制器
    kubernetes.io/ingress.class: traefik
    # 挂载你之前创建的两个中间件,格式为<中间件命名空间>-<中间件名>@kubernetescrd,多个用逗号分隔
    traefik.ingress.kubernetes.io/router.middlewares: my-namespace-traefik-dashboard-https-redirect@kubernetescrd,my-namespace-traefik-dashboard-basic-auth@kubernetescrd
    # 配置Let's Encrypt证书解析器,和你之前certResolver: le的配置对应
    traefik.ingress.kubernetes.io/router.tls.certresolver: le
spec:
  tls:
  - hosts:
    - traefik.example.com
  rules:
  - host: traefik.example.com
    http:
      paths:
      # 匹配Dashboard路径
      - path: /dashboard
        pathType: Prefix
        backend:
          service:
            # 替换为你实际查到的Traefik自带Service名、端口和所在命名空间
            name: traefik
            port:
              number: 8080
      # 匹配Dashboard依赖的API路径,漏配会导致页面加载失败
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: traefik
            port:
              number: 8080
注意事项
  • 访问Dashboard时建议带末尾斜杠:https://traefik.example.com/dashboard/,避免Traefik的路径跳转异常
  • 如果你部署Traefik时关闭了默认Service自动创建,手动新建一个Selector匹配Traefik Pod标签的Service,端口指向Traefik的API监听端口即可,效果和自带Service完全一致
  • 中间件如果和Ingress不在同一个命名空间,注解里的命名空间要替换成中间件实际所在的命名空间,否则会报中间件找不到的错误

内容的提问来源于stack exchange,提问作者zingi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:09:19