ADC 介绍
ADC(APISIX Declarative CLI)是由支流科技推出的声明式配置工具,旨在帮助用户在非 Kubernetes 环境下实施 GitOps。用户可以将其轻松集成到 CI/CD 流程中,实现 API 的生命周期管理,包括更新和发布功能。目前版本已支持与 APISIX 集成,能实现 APISIX 资源的导出和同步。
API7 企业版
API7 企业版建立在 APISIX 之上,提供了更强大的API管理功能,包括网关组和服务版本管理等功能,旨在为企业提供全面的API管理解决方案。与基于 GitOps 的 API 管理存在一些差异,用户可以通过基于 Web UI 的界面轻松地管理 API7 企业版的功能。一些用户迫切希望在 API7 企业版上采用 GitOps 模式,以更好地管理 API 的生命周期。他们希望将所有 API 定义存储为声明式配置文件,并通过 Pull Request 上的代码审查机制确保 API 声明的正确性,同时利用仓库上的 CI 将 API 发布到开发环境进行预览,然后再发布到生产环境。ADC 已经为我们建立了一个用于管理声明式配置的框架,完成了 API 资源上的变更检查和同步工作。因此,API7 企业版支持 ADC 已然成为自然的发展方向。
ADC 0.7 版本新特性
为向 API7 企业版提供支持,我们为 ADC 引入了多项关键改进,具体如下。
API7 企业版后端支持
我们已发布 ADC 的新版本,初步支持其在 API7 企业版后端的使用,dump、diff 和 sync 等核心功能已可在 API7 企业版后端使用。
借助这一新的后端支持,用户可以直接从 APISIX 导出 API 资源,并将其同步至 API7 企业版,从而更轻松地迁移 APISIX 上的旧配置以充分利用 API7 企业版提供的强大企业级功能。
网关组支持
API7 企业版提供了先进的多网关实例管理能力。用户可以将网关实例分配到不同的网关组中,以实现配置在不同环境中的互相隔离。例如,可以为开发和生产目的分别创建不同的网关集群,使得一个服务可以分别发布到不同的网关组中,以满足不同的需求。除了服务之外,全局插件和 TLS 证书等资源也通过网关组进行管理。
网关组管理功能是 API7 企业版的关键新特性。因此,ADC 也为其提供了支持。在用户使用 ADC 核心命令时,可以指定一个名为 gateway-group
的命令行标志,该标志将指示 ADC 从该网关组获取并同步用户指定的资源。
基于标签的资源过滤
在之前的 ADC 版本中,API 配置会被全量地从 Admin API 中拉取和同步。然而,即使我们仅对 API 配置进行微小修改,系统仍要求我们提供所有声明式配置文件,即使其中一些并未发生变化。若未提供这些未修改的配置文件,系统将认为在 Admin API 中列出但未在命令行中提供的资源已被删除,并将其从线上移除。这可能导致我们期望的配置状态受损,影响流量处理,这与我们的期望不符。
为了解决这一问题,我们现在提供了基于资源标签的过滤器。该过滤器允许用户通过名为 label-selector
的命令行标志来指定一个或多个资源必须满足的标签键值对。任何未满足此标签过滤器要求的本地和远程资源都将被忽略,从而有效防止网关配置被意外破坏。
新功能展望
除了以上涉及的新功能,我们仍在探索新的领域,以增强 ADC 功能并为用户提供更大的价值。举例如下:
提供插件机制,允许用户自定义 API 网关后端。用户可以从任意 API 网关导出 ADC 声明式配置,并通过 ADC 定义 API 配置,以便发布到任意 API 网关。
提供脚本化的编程能力,为用户提供一些 hook 点,以便在特定阶段检查和修改 ADC 配置。这将有助于实施某些API的安全基线检查,并阻止一些常见的不安全场景。
提供除了 OpenAPI 之外的其他 API 定义转换器,以丰富 ADC 可以利用的 API 工具生态。
目前 ADC 0.7 版本仅供 API7 内部使用,尚未公开发布,我们计划在第二季度将其贡献到开源社区 Apache APISIX。