Skip to content

Traefik Kubernetes CRD Provider 文档

Kubernetes 自定义资源(CRD)

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

当使用 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 协议发布