Traefik Kubernetes CRD Provider 文档
Kubernetes 自定义资源(CRD)
Traefik 提供了一些 Kubernetes 自定义资源(CRD),如 IngressRoute、Middleware 等。
当使用 KubernetesCRD 作为 Provider 时,Traefik 使用 自定义资源定义(CRD) 来检索其路由配置。
当使用 Helm Chart 安装 Traefik 时,默认会启用 kubernetesCRD Provider。
要求
如果不使用 Helm Chart 安装 Traefik,或者使用 Helm 升级时,请确保满足以下要求:
- 添加/更新所有 Traefik 资源定义:
bash
# 安装 Traefik 资源定义
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.7/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml- 添加/更新 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=trueHelm Chart Values:
yaml
providers:
kubernetesCRD:
enabled: true支持的自定义资源
Traefik 通过 CRD Provider 提供了以下自定义资源:
| 资源 | 描述 |
|---|---|
IngressRoute | 主路由资源,定义路由规则和服务 |
IngressRouteTCP | TCP 路由资源 |
IngressRouteUDP | UDP 路由资源 |
Middleware | HTTP 中间件 |
MiddlewareTCP | TCP 中间件 |
ServersTransport | 后端传输配置 |
ServersTransportTCP | TCP 后端传输配置 |
TLSOptions | TLS 选项 |
TLSStore | TLS 证书存储 |
TraefikService | 高级服务定义(加权、镜像、故障转移) |
IngressClass | IngressClass 资源 |
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.endpoint | Kubernetes API 服务器端点。 | - |
providers.kubernetesCRD.token | 认证令牌(用于 ServiceAccount)。 | - |
providers.kubernetesCRD.certAuthFilePath | CA 证书路径。 | - |
providers.kubernetesCRD.namespaces | 要监视的命名空间列表。 | 所有命名空间 |
providers.kubernetesCRD.ingressClass | 监听具有此 ingressClass 的资源。 | - |
providers.kubernetesCRD.labelSelector | Label 选择器。 | - |
providers.kubernetesCRD.throttleDuration | 节流时长。 | 0 |
providers.kubernetesCRD.allowEmptyServices | 允许无服务器的服务。 | false |
适用场景
- 生产 Kubernetes 集群:最完整、最灵活的 Traefik on K8s 集成方式
- 复杂路由规则:支持多条件匹配、多个服务、加权路由
- 多团队协作:每个团队可以管理自己的 IngressRoute 资源
- 高级功能:需要使用 Traefik 特有功能(Middlewares、TraefikService 等)时
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。