ADC 0.11 和 0.12 有哪些新内容?

63 篇文章 0 订阅
11 篇文章 0 订阅

API网关

为 Apache APISIX 增加后端支持 从 ADC 0.11 开始,引入了对 Apache APISIX 后端的实验性支持。ADC 现在与 APISIX Admin API 集成,实现了高效的资源导出和同步。ADC 中默认启用了 apisix 后端选项,用户只需配置 Admin API 端点和 API 密钥即可连接。

ADC 与 Admin API 的区别 请注意,ADC 并不旨在完全覆盖 APISIX 的所有功能,而是专注于核心功能集和最佳实践。我们相信,投资于用户真正需要的功能,而不是盲目追求全面覆盖,才是 ADC 发展的正确路径。

尽管 APISIX 提供了高度的配置灵活性,但这种自由往往伴随着长期维护的复杂性。当配置管理从一个维护者转交给另一个时,新的维护者通常会面临理解前任维护者独特配置方法和风格的挑战,而不是直接采用一套成熟且广泛认可的最佳实践规则。

例如,在 APISIX 平台上,用户可以配置不直接绑定到特定服务的路由,而是在路由层面直接指定上游资源。然而,ADC 并不原生支持这种方法。为了符合逻辑规范和标准化操作程序,推荐的方法是在特定服务中包含路由,并在该服务内精确设置上游地址。

例如,在一个产品服务中,我们定义了一个名为“Product Service”的服务,并配置了上游、启用插件以及设置路由。在这种模型中,多个路由可以共享相同的上游和插件配置,大大简化了配置过程。

yaml复制代码services:
  - name: Product Service
    upstream:
      type: roundrobin
      nodes:
        - host: product.ecommerce.svc.cluster.local
          port: 443
          weight: 100
      scheme: https
    plugins:
      key-auth: {}
    routes:
      - name: List Products
        uris:
          - /products
        methods: ["GET"]
      - name: Get Product
        uris:
          - /product/*
        methods: ["GET"]

以上示例是服务定义的最小格式。除此之外,ADC 还支持服务发现、超时设置、重试策略和路由优先级等高级功能,确保配置的全面性和灵活性。

鉴于 APISIX 支持更丰富的配置方法,ADC 在导出配置时,可能与 APISIX Admin API 显示的内容存在不一致,例如:

  • 不使用服务的路由将被聚合到一个服务中,以符合服务-路由层级结构。

  • 通过 ID 引用的上游将在使用时内联。

  • 插件模板资源将被替换为包含路由的服务。

因此,用户需要仔细审查导出过程中生成的 ADC 定义文件,以确保它们仍然符合原始意图。

为什么推荐使用 ADC? 使用 APISIX Dashboard 时,用户通常需要在表单中执行重复操作,这既繁琐又容易出错。相比之下,使用 ADC 进行声明式配置只需编写 YAML 文件并执行同步操作。ADC 会自动将配置转换为 Admin API 调用,实现快速部署和管理。

因此,ADC 可以帮助简化管理和部署流程,并轻松实现 GitOps 场景。这涉及通过 Git 仓库管理 YAML 定义文件,并使用 PR 工作流和 CI 工具自动更新配置。这显著减少了所需的手动操作,避免了 APISIX Dashboard 中的问题,并减少了编写调用 Admin API 脚本的复杂性。

对于新项目,我们强烈建议从 ADC 开始构建网关配置。对于现有项目,可以通过导出和适度修改配置,逐步迁移到 ADC 管理。

API7 企业版的后端优化 包含在 0.11/0.12 版本中 在 0.11 和 0.12 版本中,我们对 API7 后端进行了多项优化,以提升开发者体验。ADC 完全兼容这些改进,开发者只需保持 ADC 版本最新,即可在无需修改现有定义文件的情况下受益。

优化 ADC 定义检查 包含在 0.12 版本中 我们全面优化并修复了 ADC 定义检查的模式规则,帮助开发者提前检测并有效避免潜在的配置问题。

JSON Schema 此外,我们现在支持将验证规则导出为 JSON Schema,以协助使用 IDE 的编辑器。用户将受益于语法提示和文件中的实时检查,大大提高编码效率和质量。

对于喜欢使用 Visual Studio Code 的开发者,启用 YAML 插件并在文件顶部添加以下注释,将激活此功能:

yaml
复制代码
# yaml-language-server: $schema=https://raw.githubusercontent.com/api7/adc/main/schema.json

结论 如我们在之前的博客中提到的那样,ADC 最终将开源。经过六个月的内部开发和多次迭代,ADC 已完全重构为基于 TypeScript 的代码库,彻底抛弃了原来的 Go 代码。这使其更易于学习和开发。

随着 ADC 0.12 版本的公开发布,我们邀请全球开发者参与其开发和改进。代码库现已开放,网址为:https://github.com/api7/adc,我们期待您的贡献。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻想多巴胺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值