APISIX Declarative CLI 与 API7 企业版集成

更新时间 3/20/2024

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 已然成为自然的发展方向。

API7 enterprise integrates with 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。

微信咨询

获取方案