跳到主要内容

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部分支持实现了 TerminatePassthrough 对于 Gateway 监听器实际上是未支持的。
spec.addresses不支持控制器不读取或作用于 spec.addresses

HTTP 路由过滤器

Ingress Controller 将 HTTPRoute 资源中的标准 Gateway API 过滤器映射到相应的插件:

Gateway API 过滤器APISIX 插件
RequestHeaderModifierproxy-rewrite
RequestRedirectredirect
RequestMirrorproxy-mirror
URLRewriteproxy-rewrite
ResponseHeaderModifierresponse-rewrite
CORScors
ExtensionRef通过 PluginConfig 定义的用户插件

当同时使用标准过滤器和 ExtensionRef(引用 PluginConfig CRD)时:

  • 如果先应用标准过滤器,PluginConfig 会覆盖任何重叠的插件设置。
  • 如果先应用 PluginConfig,标准过滤器会合并到其配置中,任何重叠的字段将被过滤器覆盖。

Ingress

  • networking.k8s.io/v1

支持的资源

控制器支持标准的 Kubernetes Ingress API,包括:

支持基本的基于主机和路径的路由。高级注解或非标准扩展可能未实现。

有关支持的注解的完整列表,请参阅注解