Ingress 与 Gateway API 支持
本文档概述了 API7 Ingress Controller 支持的 Kubernetes Gateway API 和 Ingress API 资源。可作为参考,了解当前已实现了哪些资源。
有关如何以及何时使用这些资源,请参见配置示例。
Gateway API
包
资源支持级别
下表概述了当前实现中对 Kubernetes Gateway API 资源的支持级别。每个资源根据其核心(Core)、扩展(Extended)和特定于实现(Implementation-Specific)的支持级别以及相应的 API 版本进行分类。
| 资源 | 核心 (Core) | 扩展 (Extended) | 特定于实现 (Implementation-Specific) | API 版本 |
|---|---|---|---|---|
| GatewayClass | 支持 | N/A | 不支持 | v1 |
| Gateway | 部分支 持 | 部分支持 | 不支持 | v1 |
| HTTPRoute | 支持 | 部分支持 | 不支持 | v1 |
| GRPCRoute | 支持 | 支持 | 不支持 | v1 |
| ReferenceGrant | 支持 | 不支持 | 不支持 | v1beta1 |
| TLSRoute | 支持 | 支持 | 不支持 | v1alpha2 |
| TCPRoute | 支持 | 支持 | 不支持 | v1alpha2 |
| UDPRoute | 支持 | 支持 | 不支持 | v1alpha2 |
| BackendTLSPolicy | 不支持 | 不支持 | 不支持 | v1alpha3 |
有关配置选项的完整列表,请参阅 Gateway API 参考。请注意,某些字段不受支持或仅部分支持。
不支持 / 部分支持的字段
以下字段在 Gateway API 规范中已指定,但在 APISIX Ingress Controller 中尚未完全实现或不支持。
HTTPRoute
| 字段 | 状态 | 备注 |
|---|---|---|
spec.timeouts | 不支持 | 不支持该字段,因为 ADC 提供了更细粒度的超时配置(连接、读取、写入),而 spec.timeouts 仅允许通用的总超时和上游超时,因此无法直接映射。要配置路由超时,可以使用 BackendTrafficPolicy。 |
spec.retries | 不支持 | 不支持该字段,因为 APISIX 不支持重试中的功能。要配置路由重试,可以使用 BackendTrafficPolicy。 |
spec.sessionPersistence | 不支持 | APISIX 不支持 cookie 生命周期的配置。作为替代,你可以使用 chash 负载均衡器。 |
spec.rules[].backendRefs[].filters[] | 不支持 | 未实现 BackendRef 级别的过滤器,因为数据面不支持在此级别进行过滤;仅支持规则级别的过滤器(spec.rules[].filters[])。 |
Gateway
| 字段 | 状态 | 备注 |
|---|---|---|
spec.listeners[].port | 不支持* | 该配置是必需的,但会被忽略。这是由于数据面的限制:它无法动态打开新端口。由于 Ingress Controller 不管理数据面部署,因此无法自动更新配置或重启数据面来应用端口更改。 |
spec.listeners[].tls.certificateRefs[].group | 部分支持 | 仅支持 "";其他组值会导致验证失败。 |
spec.listeners[].tls.certificateRefs[].kind | 部分支持 | 仅支持 Secret。 |
spec.listeners[].tls.mode | 部分支持 | 实现了 Terminate;对于 Gateway 监听器,实际上不支持 Passthrough。 |
spec.addresses |