Skip to content

Traefik Kubernetes CRD Provider 文档 ​

Kubernetes 自定义资源(CRD) ​

Traefik 提供了一些 Kubernetes 自定义资源(CRD),如 IngressRoute、Middleware 等。

当使用 KubernetesCRD 作为 Provider 时,Traefik 使用 自定义资源定义(CRD) 来检索其路由配置。

当使用 Helm Chart 安装 Traefik 时,默认会启用 kubernetesCRD Provider。

要求 ​

如果不使用 Helm Chart 安装 Traefik,或者使用 Helm 升级时,请确保满足以下要求:

  1. 添加/更新所有 Traefik 资源定义:
bash
# 安装 Traefik 资源定义
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.7/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
  1. 添加/更新 RBAC:
bash
# 安装 Traefik 的 RBAC
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.7/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml

配置示例 ​

YAML 格式:

yaml
providers:
  kubernetesCRD: {}

TOML 格式:

toml
[providers.kubernetesCRD]

CLI 格式:

bash
--providers.kubernetescrd=true

Helm Chart Values:

yaml
providers:
  kubernetesCRD:
    enabled: true

支持的自定义资源 ​

Traefik 通过 CRD Provider 提供了以下自定义资源:

资源描述
IngressRoute主路由资源,定义路由规则和服务
IngressRouteTCPTCP 路由资源
IngressRouteUDPUDP 路由资源
MiddlewareHTTP 中间件
MiddlewareTCPTCP 中间件
ServersTransport后端传输配置
ServersTransportTCPTCP 后端传输配置
TLSOptionsTLS 选项
TLSStoreTLS 证书存储
TraefikService高级服务定义(加权、镜像、故障转移)
IngressClassIngressClass 资源

IngressRoute 示例 ​

yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: my-route
  namespace: default
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`example.com`) && PathPrefix(`/api`)
      kind: Rule
      services:
        - name: my-service
          port: 80
      middlewares:
        - name: auth
  tls:
    certResolver: letsencrypt

配置选项 ​

选项描述默认值
providers.kubernetesCRD.endpointKubernetes API 服务器端点。-
providers.kubernetesCRD.token认证令牌(用于 ServiceAccount)。-
providers.kubernetesCRD.certAuthFilePathCA 证书路径。-
providers.kubernetesCRD.namespaces要监视的命名空间列表。所有命名空间
providers.kubernetesCRD.ingressClass监听具有此 ingressClass 的资源。-
providers.kubernetesCRD.labelSelectorLabel 选择器。-
providers.kubernetesCRD.throttleDuration节流时长。0
providers.kubernetesCRD.allowEmptyServices允许无服务器的服务。false

适用场景 ​

  • 生产 Kubernetes 集群:最完整、最灵活的 Traefik on K8s 集成方式
  • 复杂路由规则:支持多条件匹配、多个服务、加权路由
  • 多团队协作:每个团队可以管理自己的 IngressRoute 资源
  • 高级功能:需要使用 Traefik 特有功能(Middlewares、TraefikService 等)时

在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

基于 MIT 协议发布