Skip to content

Releases: api7/adc

0.19.0

31 Mar 02:21
56a7b81
Compare
Choose a tag to compare

Highlight

Multi-upstream support in services

ADC now supports the inclusion of multiple upstreams in a single service in such a structure:

services:
- name: demo
  upstream:
    <default upstream>
  upstreams:
    - name: non-default-upstream-1
      <upstream config 1>
    - name: non-default-upstream-2
      <upstream config 2>
  routes: []

That is, it lets users create multiple new upstreams with service.upstreams. Where service.upstream is the default upstream, it will be used as the default upstream for all requests, or users can use the traffic-split plugin if users want to route some traffic to other upstreams proportionally or conditionally.

The service.upstreams supports setting a name or ID for the upstream, which is inferred and generated using sha1(service_name.upstream_name) if users don't specify the ID manually, and which can be used in the weighted_upstreams.upstream_id in the traffic-split plugin, allowing users to get rid of the requirement to inline upstream resources in the traffic-split plugin and enjoy the full functionality of the upstream health check.
Please note that when using custom IDs, users must ensure the uniqueness of the IDs, as conflicts can result in unintended coverage of resources.

In API7, upstream is natively associated with the service, which is a built-in capability, so support is native.
Whereas in APISIX upstreams are unable to proactively record associations with services, so we record the services that the upstream belongs to in labels, even though this is simulated, it works out of the box, please be careful not to manage and manually modify the records in labels by means other than ADC.

What's Changed

  • feat(api7): support multiple upstream of service by @bzp2010 in #252
  • fix(apisix): log scope typo by @bzp2010 in #253
  • feat(apisix): support multiple upstream of service by @bzp2010 in #254
  • fix(apisix): tolerate instance without stream proxy enabled by @bzp2010 in #255
  • feat: bump to 0.19.0 by @bzp2010 in #256

Full Changelog: v0.18.0...v0.19.0

0.18.0

21 Mar 13:27
04deafc
Compare
Choose a tag to compare

Notice

Since this version, the API7 backend no longer uses the force publish mode (i.e. publish-free API) and it no longer uses service templates.

As it does not use the publish mechanism, atomicity in effect is now no longer supported and all changes take effect immediately. If an error occurs, the ADC will report the error and exit with the exit code.

Highlight

ADC efficiency improvements

It greatly improves the time taken by the ADC to perform export and synchronization, and it may achieve a 100% speedup when enjoying the full optimization.

It encompasses multiple aspects:

  • TCP connection reuse on the backend
  • Mechanisms for parallel sync tasks
  • Extensive refactoring

You can enjoy these optimizations as soon as you update, check the compatibility list for your use case.

OpenAPI converter support multi-file input

In 0.17.0 we supported multi-file input support for diff and sync, and now it has been introduced to the OAS converter as well.

Refactoring

In addition to the above, we have done a lot of refactoring, for example:

  • Backend API definations
  • API7 and APISIX backend implementations
  • ADC logging infrastructure
  • Differ v3 logging output

What's Changed

  • fix(core): sync command example typo by @bzp2010 in #227
  • chore: upgrade nx toolchain by @bzp2010 in #226
  • feat(core): add remote state file as experimental feature by @bzp2010 in #229
  • feat(core): support multiple file input for OAS converter by @bzp2010 in #228
  • feat(api7): add parallel backend request as experimental feature by @bzp2010 in #230
  • feat(api7): move to publish-free api by @bzp2010 in #234
  • feat(backend): enable keepalive for backend api call by @bzp2010 in #235
  • chore(core): move tasks to separate folder by @bzp2010 in #236
  • chore(core): decouple logger by @bzp2010 in #237
  • feat(api7): allow dev version and admin key mode by @bzp2010 in #238
  • fix(api7): unexpectedly pass the empty string gateway group id by @bzp2010 in #239
  • refactor: api7 backend by @bzp2010 in #240
  • feat(core): add ingress entrypoint by @bzp2010 in #241
  • feat(core): all in one ingress mode by @bzp2010 in #244
  • fix(core): incorrect empty remote in ingress mode by @bzp2010 in #246
  • feat(apisix): rewrite apisix backend by @bzp2010 in #245
  • feat: imporve backend error handling by @bzp2010 in #247
  • feat: bump to 0.18.0 by @bzp2010 in #248
  • fix(core): lint does not allow string input on numeric fields by @bzp2010 in #249
  • docs(api7): update compatibility matrix by @bzp2010 in #250

Full Changelog: v0.17.0...v0.18.0

0.17.0

27 Dec 10:15
acd97b7
Compare
Choose a tag to compare

Highlight

Support for multi-file input using glob

This has been implemented on the diff and sync commands. It is not implemented on OpenAPI Converter because it doesn't support multi-file input yet, which will be improved later.

It now supports such syntax:

  • adc sync -f 'spec/*.yaml'
  • adc sync -f 'spec/**/*.yaml'

Note that the glob expressions need to be quote-wrapped because we don't want the glob implementation in the shell to intervene for a uniform user experience.

More guides: https://github.com/isaacs/node-glob?tab=readme-ov-file#glob-primer

APISIX support down to 3.2.x

APISIX support has been extended to 3.2, which was an LTS but is now considered retired, which helps users to migrate.

For Known Issues/Limitations, please refer to: https://github.com/api7/adc/blob/main/libs/backend-apisix/README.md

What's Changed

Full Changelog: v0.16.2...v0.17.0

0.16.2

26 Nov 07:36
7d35166
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.16.1...v0.16.2

0.16.1

12 Nov 07:04
c60fb96
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.16.0...v0.16.1

0.16.0

11 Nov 06:48
107209d
Compare
Choose a tag to compare

Highlight

Support for custom resource ID

The resource ID can now be customized by the user instead of letting ADC generate it automatically.
Just write the id field in the resource to make it work, but there are a few resources that are not supported yet, such as upstream (which is inlined by the service and doesn't support references) and consumer (whose username is the ID and doesn't want to be specified additionally).

It has been implemented on API7 and APISIX. #203 #204

What's Changed

Full Changelog: v0.15.0...v0.16.0

v0.15.0

23 Oct 03:36
9fb8200
Compare
Choose a tag to compare

Highlight

Support for Consumer Credentials on Apache APISIX✨

This release supports consumer credentials on APISIX, which will be enabled after APISIX is upgraded to 3.11.0. If not, you can only use the legacy consumer plugins format.

What's Changed

Full Changelog: v0.14.0...v0.15.0

v0.14.0

15 Sep 18:50
50992c0
Compare
Choose a tag to compare

Highlight

Support for Consumer Credentials✨

This release supports consumer credentials on API7, which will be enabled after API7 is upgraded to 3.2.15. If not, you can only use the legacy consumer credentials format.

What's Changed

Full Changelog: v0.13.0...v0.14.0

v0.13.0

30 Aug 09:42
13cd6c9
Compare
Choose a tag to compare

NOTICE

From this release, ADC will drop API7 3.2.13.0 support in favor of new features that became available on API7 3.2.14.x.


What's Changed

Full Changelog: v0.12.2...v0.13.0

v0.12.2

22 Aug 06:50
b45f723
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.12.1...v0.12.2