Traefik Kubernetes Gateway API Provider 文档
Traefik 与 Kubernetes Gateway API
Kubernetes Gateway Provider 是 Traefik 实现的 Gateway API 规范,来自 Kubernetes 特别兴趣小组(SIGs)。
该 Provider 支持 Gateway API 规范的 Standard 版本 v1.5.1。
它完全支持所有 HTTPRoute 核心特性以及来自 Standard channel 的一些扩展特性,如 BackendTLSPolicy、GRPCRoute 和 TLSRoute,以及来自 Experimental channel 的 TCPRoute。
更多详细信息,请查阅一致性 报告。
使用 Helm Chart
当使用 Traefik Helm Chart 时,RBAC(基于角色的访问控制)会自动为你管理。
要求
Traefik 遵循 Kubernetes 支持政策,至少支持最新三个 Kubernetes 次要版本。无法保证对旧版本的通用功能支持。
1. 安装/更新 Kubernetes Gateway API CRD
bash
# 从 Standard channel 安装 Gateway API CRD
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.1/standard-install.yaml2. 安装/更新 Traefik RBAC
如果未使用 Helm Chart,请安装/更新 Gateway API 的 Traefik RBAC:
bash
# 安装 Traefik Gateway API 的 RBAC
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.7/docs/content/reference/dynamic-configuration/kubernetes-gateway-rbac.yml配置示例
YAML 格式:
yaml
providers:
kubernetesGateway: {}TOML 格式:
toml
[providers.kubernetesGateway]CLI 格式:
bash
--providers.kubernetesgateway=trueHelm Chart Values:
yaml
providers:
kubernetesGateway:
enabled: trueGateway API 资源示例
Gateway 资源
yaml
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: my-gateway
spec:
gatewayClassName: traefik
listeners:
- name: web
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: AllHTTPRoute 资源
yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-route
spec:
parentRefs:
- name: my-gateway
hostnames:
- "example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /api
backendRefs:
- name: my-service
port: 80配置选项
| 选项 | 描述 | 默认值 |
|---|---|---|
providers.kubernetesGateway.endpoint | Kubernetes API 服务器端点。 | - |
providers.kubernetesGateway.token | 认证令牌。 | - |
providers.kubernetesGateway.certAuthFilePath | CA 证书路径。 | - |
providers.kubernetesGateway.namespaces | 要监视的命名空间列表。 | 所有命名空间 |
providers.kubernetesGateway.labelSelector | Label 选择器。 | - |
providers.kubernetesGateway.throttleDuration | 节流时长。 | 0 |
providers.kubernetesGateway.gatewayClass | 关联的 GatewayClass 名称。 | traefik |
providers.kubernetesGateway.experimentalChannel | 是否支持 experimental 通道资源(如 TCPRoute)。 | false |
适用场景
- 标准化 Gateway API:使用 Kubernetes 官方标准 API
- 多供应商兼容:希望在不同 Gateway 实现之间迁移
- 未来兼容性:Gateway API 是 Kubernetes 未来 ingress 演进的方向
- 简化路由:对于简单的 HTTP 路由需求,Gateway API 比 CRD 更简洁
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。