Skip to content

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.yaml

2. 安装/更新 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=true

Helm Chart Values:

yaml
providers:
  kubernetesGateway:
    enabled: true

Gateway 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: All

HTTPRoute 资源 ​

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.endpointKubernetes API 服务器端点。-
providers.kubernetesGateway.token认证令牌。-
providers.kubernetesGateway.certAuthFilePathCA 证书路径。-
providers.kubernetesGateway.namespaces要监视的命名空间列表。所有命名空间
providers.kubernetesGateway.labelSelectorLabel 选择器。-
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 的商业支持。

基于 MIT 协议发布