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 的一些扩展特性,如 BackendTLSPolicyGRPCRouteTLSRoute,以及来自 Experimental channelTCPRoute

更多详细信息,请查阅一致性 报告

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