跳到主要内容

Ingress Controller 文档

本文档适用于两个相关工具:API7 Ingress Controller 和 APISIX Ingress Controller。API7 Ingress Controller 用于 API7 企业版,APISIX Ingress Controller 用于开源 Apache APISIX。

二者是不同的工具,但资源使用方式和功能设计保持一致。部分功能可能会因为产品发布节奏不同而在不同时间可用;如果存在差异,文档会在对应位置明确标注。

简介

API7 / APISIX Ingress Controller(AIC)是 Kubernetes Ingress Controller,可将 Kubernetes 资源(例如 Ingress、Gateway API 和 APISIX 自定义 CRD)转换为 API7 / APISIX 网关配置。借助 AIC,你可以直接通过 Kubernetes 以声明式方式管理路由、SSL、插件、上游和其他网关资源。

如果符合以下任一场景,建议使用 AIC:

  • 你正在 Kubernetes 环境中部署 APISIX 或 API7 网关。
  • 你希望以完全 Kubernetes 原生的方式管理 API 网关。

支持的资源

AIC 支持以下 Kubernetes 资源:

  • Gateway API:现代、可扩展的 Kubernetes 原生流量管理 API,支持多监听器、高级路由和更丰富的流量策略。
  • Ingress:用于将基础 HTTP/S 流量路由到后端服务的旧版 Kubernetes 原生 API。它不支持 Gateway API 或 APISIX CRD 中的全部高级配置。
  • APISIX CRD:APISIX 专用自定义资源,可对路由、插件、上游和其他网关能力进行细粒度控制,提供更高灵活性和更完整的功能覆盖。

这些资源均由 AIC 支持,并且可以在同一个 Kubernetes 集群中共存。部分功能只适用于特定资源类型,因此在组合使用多种资源时,应注意避免配置冲突。

下图展示 Ingress Controller 如何组合标准 Gateway API 资源和自定义资源,在 Kubernetes 环境中定义路由、流量策略和网关行为:

API7/APISIX Ingress Controller 的 Kubernetes 资源模型:Gateway 引用 GatewayClass 和 GatewayProxy;HTTPRoute 与 TCPRoute 挂载到 Gateway 并指向后端 Service;HTTPRoutePolicy 挂载到 HTTPRoute,BackendTrafficPolicy 挂载到 Service

AIC 如何处理 Kubernetes 资源

下图展示 AIC 处理 Kubernetes 资源的过程。Ingress、Gateway API 或 APISIX CRD 等资源会先被转换为内部 ADC YAML,然后同步到网关,用于动态流量管理。

APISIX Ingress Controller 与 API7 Ingress Controller

资源兼容性

APISIX Ingress Controller 使用的所有 Kubernetes 资源都与 API7 Ingress Controller 完全兼容,不需要修改资源定义。不过,命名空间、上游服务配置、GatewayProxy 到控制面的连接配置等与环境相关的配置通常会有所不同。

部署架构

以下架构图使用单控制器拓扑展示 API7 Ingress Controller 与 APISIX Ingress Controller 的不同部署模式。

API7 Ingress Controller

API7 Ingress Controller 支持一种部署模式:控制器直接与 API7 控制面(API7 控制台)通信。

API7 Ingress Controller 部署拓扑:API7 Ingress Controller 与 API7 网关数据面实例运行在 Kubernetes 集群中,并将 Kubernetes 资源转换为通过集群外 API7 控制面下发的配置

APISIX Ingress Controller

APISIX Ingress Controller 支持两种部署模式:独立模式和传统模式。

独立模式

相比使用 etcd 的传统模式,更推荐独立模式。该模式用于解决在 Kubernetes 内运行 APISIX 和 etcd 时可能出现的稳定性问题。

独立模式部署:APISIX Ingress Controller 和 APISIX 数据面均运行在 Kubernetes 集群中;APISIX 以 API 驱动的独立模式运行,控制器通过 APISIX Admin Service 向其推送配置,不依赖 etcd �集群

传统模式

在传统部署模式中,APISIX 使用 etcd 作为配置中心。

传统模式部署:APISIX Ingress Controller 将配置写入 etcd 集群,APISIX 数据面实例监听 etcd 中的变更;所有组件都运行在 Kubernetes 集群中