Ingress 和 Gateway API 支持
本文档概述了 APISIX Ingress Controller 支持的 Kubernetes Gateway API 和 Ingress API 资源。请将其作为参考,了解当前实现了哪些资源。
请参阅配置示例,了解何时以及如何使用这些资源。
Gateway API
包
资源支持级别
下表概述了当前实现中对 Kubernetes Gateway API 资源的支持级别。每个资源都根据其核心、扩展和特定实现的支持级别进行分类,并附有相应的 API 版本。
| 资源 | 核心 | 扩展 | 特定实现 | API 版本 |
|---|---|---|---|---|
| GatewayClass | 支持 | 不适用 | 不支持 | 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 不支持 retries 中的功能。要配置路由重试,可以使用 BackendTrafficPolicy。 |
spec.sessionPersistence | 不支持 | APISIX 不支持 Cookie 生命周期的配置。作为替代,你可以使用 chash 负载均衡器。 |
spec.rules[].backendRefs[].filters[] | 不支持 | 后端引用级别的过滤器未实现,因为数据平面不支持此级别的过滤;仅支持规则级别的过滤器(spec.rules[].filters[])。 |
Gateway
| 字段 | 状态 | 说明 |
|---|---|---|
spec.listeners[].port | 不支持* | 此配置是必需的但会被忽略。这是由于数据平面的限制:它无法动态打开新端口。由于 Ingress Controller 不管理数据平面部署,因此它无法自动更新配置或重启数据平面以应用端口更改。 |
spec.listeners[].tls.certificateRefs[].group | 部分支持 | 仅支持 "";其他 group 值会导致验证失败。 |
spec.listeners[].tls.certificateRefs[].kind | 部分支持 | 仅支持 Secret。 |
spec.listeners[].tls.mode | 部分支持 | 实现了 Terminate;Passthrough 对于 Gateway 监听器实际上是未支持的。 |
spec.addresses | 不支持 | 控制器不读取或作用于 spec.addresses。 |
HTTP 路由过滤器
Ingress Controller 将 HTTPRoute 资源中的标准 Gateway API 过滤器映射到相应的插件:
| Gateway API 过滤器 | APISIX 插件 |
|---|---|
RequestHeaderModifier | proxy-rewrite |
RequestRedirect | redirect |
RequestMirror | proxy-mirror |
URLRewrite | proxy-rewrite |
ResponseHeaderModifier | response-rewrite |
CORS | cors |
ExtensionRef | 通过 PluginConfig 定义的用户插件 |
当同时使用标准过滤器和 ExtensionRef(引用 PluginConfig CRD)时:
- 如果先应用标准过滤器,PluginConfig 会覆盖任何重叠的插件设置。
- 如果先应用 PluginConfig,标准过滤器会合并到其配置中,任何重叠的字段将被过滤器覆盖。
Ingress
包
- networking.k8s.io/v1
支持的资源
控制器支持标准的 Kubernetes Ingress API,包括:
支持基本的基于主机和路径的路由。高级注解或非标准扩展可能未实现。
有关支持的注解的完整列表,请参阅注解。