Skip to content

Releases: api7/adc

v0.23.1

08 Dec 01:54
bb63f37

Choose a tag to compare

What's Changed

  • fix(apisix-standalone): system time rollback caused sync failure by @bzp2010 in #393
  • fix(apisix): transform client TLS certificate pairs when dump upstream by @bzp2010 in #395
  • feat: bump to 0.23.1 by @bzp2010 in #394

Full Changelog: v0.23.0...v0.23.1

v0.23.0

24 Nov 13:28
04a1feb

Choose a tag to compare

What's Changed

  • chore(types): add type check by @LiteSun in #374
  • fix(differ): cannot create ssl referenced by upstream by @bzp2010 in #383
  • fix(apisix): both inline and referenced upstreams coexist within the service by @bzp2010 in #384
  • chore(sdk): move linter schema to sdk by @bzp2010 in #385
  • fix(apisix): typecheck by @bzp2010 in #387
  • feat(sdk): prefer to use upstream.tls.client_cert_id by @bzp2010 in #388
  • chore(deps): migrate to pnpm catalog and upgrade by @bzp2010 in #389
  • feat: bump to 0.23.0 by @bzp2010 in #390
  • fix(apisix-standalone): vitest use isolate environment by @bzp2010 in #392

Full Changelog: v0.22.1...v0.23.0

v0.22.1

03 Nov 04:07
e242f8b

Choose a tag to compare

What's Changed

Full Changelog: v0.22.0...v0.22.1

v0.22.0

31 Oct 09:29
fac3bc6

Choose a tag to compare

What's Changed

Full Changelog: v0.21.2...v0.22.0

v0.21.2

20 Oct 10:52
8104372

Choose a tag to compare

What's Changed

  • fix(apisix-standalone): upstream populate default empty nodes by @bzp2010 in #346
  • ci: migrate docker image for testing to bitnamilegacy repo by @LiteSun in #355
  • chore(sdk): move resources type derived from zod by @bzp2010 in #356
  • fix(api7): let e2e keep use bitnamilegacy image by @bzp2010 in #357
  • fix(apisix-standalone): debug log when requests fail by @bzp2010 in #359
  • fix(api7): use exact search to determine gateway group by @bzp2010 in #360
  • ci(docker): build image for arm64 by @bzp2010 in #361
  • feat: bump to 0.21.2 by @bzp2010 in #362
  • fix(release): unify the node.js version used for binary by @bzp2010 in #363
  • fix(release): build binary using node.js 22.17.0 by @bzp2010 in #364

New Contributors

Full Changelog: v0.21.1...v0.21.2

v0.21.1

25 Sep 06:46
264da61

Choose a tag to compare

What's Changed

  • feat(apisix-standalone): support upstream healthcheck and service discovery by @bzp2010 in #333
  • fix(apisix-standalone): duplicate upstreams when use service multiple upstreams by @bzp2010 in #334
  • fix(backend-api7): duplicate removal of upstream and credentials by @bzp2010 in #343
  • fix(apisix-standalone): conflict between upstream nodes and service discovery by @bzp2010 in #344
  • feat: bump to 0.21.1 by @bzp2010 in #345

Full Changelog: v0.21.0...v0.21.1

v0.21.0

27 Aug 11:43
abec7bc

Choose a tag to compare

Notice

  • Support for API7 3.3.x and 3.4.x in ADC has been discontinued. API7 3.5.x to 3.8.x are now supported.
    If you have questions about this, please contact the API7 Support.

  • The OpenAPI converter has introduced a breaking change. This is not expected to impact your actual use case. #321
    We've now introduced a slight break change where your server's URL will no longer emit a service.path_prefix regardless of whether it contains a path suffix or not, and every path will be inlined as a prefix in the uri of every route.

    The value of path_prefix is still resolved from the first server's URL as before.

    The reason for this change is that APISIX does not support path_prefix and strip_path_prefix, and we had to choose a more widely compatible way to achieve a similar effect.

Highlight

New OpenAPI Converter Implementation

We have switched to a new OAS parser library implementation that offers improved code quality and new features.

ADC now also supports Swagger (OpenAPI 2.0), which will be transparently upgraded to OpenAPI 3.1 behind the scenes before being converted into ADC configurations.

Performance improvements

We have introduced performance modifications across multiple domains within ADC, including:

  • YAML parser: Achieves speed advantages on larger YAML files
  • APISIX Standalone backend

What's Changed

  • docs(readme): remove hardcoded download link by @bzp2010 in #294
  • feat(apisix-standalone): optional sync put request by @bzp2010 in #298
  • feat(core): faster YAML and JSON parser by @bzp2010 in #299
  • perf(apisix-standalone): remove immerjs by @bzp2010 in #300
  • chore: replace typescript alias with pnpm workspace by @bzp2010 in #301
  • chore: update tsconfig reference by @bzp2010 in #303
  • feat(core): move linter to zod4 by @bzp2010 in #304
  • feat(core): add ingress server mode by @bzp2010 in #305
  • feat(core): configurable ingress server listen by @bzp2010 in #306
  • feat(core): ingress server listen on https and UDS http by @bzp2010 in #307
  • feat(ci): build dev image for commit on main branch by @bzp2010 in #309
  • chore(core): remove ingress server etag header by @bzp2010 in #311
  • fix(core): ingress server listen no TLS endpoint by @bzp2010 in #310
  • feat(core): ingress server status endpoint by @bzp2010 in #312
  • chore: add code owners for review approval by @bzp2010 in #313
  • feat(core): ingress server local configuration filter by @bzp2010 in #314
  • feat(core): move to separate differ module by @bzp2010 in #316
  • chore: move jest to vitest by @bzp2010 in #317
  • chore: move eslintrc to eslint flat config by @bzp2010 in #318
  • feat(converter-openapi): move to new openapi parser by @bzp2010 in #321
  • refactor(apisix-standalone) by @bzp2010 in #320
  • fix(core): ingress server sync API server option accept multiple endpoints by @bzp2010 in #322
  • feat(apisix-standalone): separate inline upstream by @bzp2010 in #319
  • docs(converter-openapi): fix typo by @juzhiyuan in #315
  • feat(apisix-standalone): use millisecond timestamp as conf version by @bzp2010 in #323
  • feat(core): add debug log to ingress server by @bzp2010 in #324
  • fix(apisix-standalone): handle inline upstream update and delete by @bzp2010 in #326
  • test(apisix-standalone): add inline upstream update 2 times case by @bzp2010 in #327
  • fix(apisix-standalone): ensure PUT sent when no diff events by @bzp2010 in #328
  • feat(apisix-standalone): add server field to sync result by @bzp2010 in #329
  • feat(apisix-standalone): use one of servers when no XLM header by @bzp2010 in #330
  • feat: bump to 0.21.0 by @bzp2010 in #331

Full Changelog: v0.20.0...v0.21.0

v0.20.0

27 Jun 03:01
1abba82

Choose a tag to compare

Highlight

New APISIX standalone backend

Benefiting from the API-driven standalone mode (enhancements sponsored by API7) released in APISIX 3.13, ADC has introduced a new backend for Ingress Controller support.

The new apisix-standalone backend, which is isomorphic to any other backend, ensures that users do not need to provide different configuration inputs for different scenarios, but rather use a single unified configuration for multiple different gateway products.
Input configurations will be converted on a best-effort basis to the configuration/API calls required by the specified backend.

With this new ADC backend, APISIX in Kubernetes will have the opportunity to become a truly stateless API gateway with no etcd and no persistence.

ADC is already used as a core by the API7 Ingress Controller and will further enhance the capabilities of the APISIX Ingress Controller. ADC has become an important part of the API7 portfolio, bringing value to a wider range of products and users..

What's Changed

  • feat(apisix-standalone): add new experimental backend by @bzp2010 in #269
  • fix(apisix-standalone): incorrect desc field in service inlined upstream by @bzp2010 in #276
  • fix(apisix-standalone): remove path_prefix and strip_path_prefix by @bzp2010 in #277
  • fix(apisix-standalone): remove zod-based transformer by @bzp2010 in #280
  • fix(apisix-standalone): consumer sync exception by @bzp2010 in #282
  • fix(apisix-standalone): credential modifiedIndex is not updated by @bzp2010 in #288
  • fix(apisix): transform upstream nodes to array by @bzp2010 in #290
  • chore(apisix): remove experimental log by @bzp2010 in #292
  • feat: bump to 0.20.0 by @bzp2010 in #293

Full Changelog: v0.19.1...v0.20.0

v0.19.1

19 May 04:03
79fc570

Choose a tag to compare

This is a patch release for bug fixes. But it also contains a few new features for addressing potential bugs in specific scenarios, such as now syncing requests concurrently by user control and ensuring that dump output is organized.

What's Changed

  • feat(core): add sync request concurrent option by @bzp2010 in #258
  • feat(core): sort the configuration by readable name during dump by @bzp2010 in #260
  • feat(core): allow keep var syntax in yaml via escaping chars by @bzp2010 in #262
  • fix: modify frozen immutable objects by @bzp2010 in #265
  • fix(backend): failed to report operation error by @bzp2010 in #266
  • feat: bump to 0.19.1 by @bzp2010 in #267

Full Changelog: v0.19.0...v0.19.1

0.19.0

31 Mar 02:21
56a7b81

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