diff --git a/.asf.yaml b/.asf.yaml index 2e22b638d45e..3b495a705ca7 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -53,6 +53,10 @@ github: dismiss_stale_reviews: true require_code_owner_reviews: true required_approving_review_count: 2 + release/3.2: + required_pull_request_reviews: + require_code_owner_reviews: true + required_approving_review_count: 2 release/3.1: required_pull_request_reviews: require_code_owner_reviews: true diff --git a/CHANGELOG.md b/CHANGELOG.md index e51dfd178483..c4fd36644ccd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ title: Changelog ## Table of Contents +- [3.2.0](#320) - [3.1.0](#310) - [3.0.0](#300) - [3.0.0-beta](#300-beta) @@ -66,6 +67,48 @@ title: Changelog - [0.7.0](#070) - [0.6.0](#060) +## 3.2.0 + +### Change + +- Deprecated separate Vault configuration in jwt-auth. Users can use secret to achieve the same function: [#8660](https://github.com/apache/apisix/pull/8660) + +### Core + +- :sunrise: Support Vault token to configure secret through environment variables: [#8866](https://github.com/apache/apisix/pull/8866) +- :sunrise: Supports service discovery on stream subsystem: + - [#8583](https://github.com/apache/apisix/pull/8583) + - [#8593](https://github.com/apache/apisix/pull/8593) + - [#8584](https://github.com/apache/apisix/pull/8584) + - [#8640](https://github.com/apache/apisix/pull/8640) + - [#8633](https://github.com/apache/apisix/pull/8633) + - [#8696](https://github.com/apache/apisix/pull/8696) + - [#8826](https://github.com/apache/apisix/pull/8826) + +### Plugins + +- :sunrise: Add RESTful to graphQL conversion plugin: [#8959](https://github.com/apache/apisix/pull/8959) +- :sunrise: Supports setting the log format on each log plugin: + - [#8806](https://github.com/apache/apisix/pull/8806) + - [#8643](https://github.com/apache/apisix/pull/8643) +- :sunrise: Add request body/response body conversion plugin: [#8766](https://github.com/apache/apisix/pull/8766) +- :sunrise: Support sending error logs to Kafka: [#8693](https://github.com/apache/apisix/pull/8693) +- :sunrise: limit-count plugin supports X-RateLimit-Reset: [#8578](https://github.com/apache/apisix/pull/8578) +- :sunrise: limit-count plugin supports setting TLS to access Redis cluster: [#8558](https://github.com/apache/apisix/pull/8558) +- :sunrise: consumer-restriction plugin supports permission control via consumer_group_id: [#8567](https://github.com/apache/apisix/pull/8567) + +### Bugfixes + +- Fix mTLS protection when the host and SNI mismatch: [#8967](https://github.com/apache/apisix/pull/8967) +- The proxy-rewrite plugin should escape URI parameter parts if they do not come from user config: [#8888](https://github.com/apache/apisix/pull/8888) +- Admin API PATCH operation should return 200 status code after success: [#8855](https://github.com/apache/apisix/pull/8855) +- Under certain conditions, the reload after etcd synchronization failure does not take effect: [#8736](https://github.com/apache/apisix/pull/8736) +- Fix the problem that the nodes found by the Consul service discovery are incomplete: [#8651](https://github.com/apache/apisix/pull/8651) +- Fix grpc-transcode plugin's conversion of Map data: [#8731](https://github.com/apache/apisix/pull/8731) +- External plugins should be able to set the content-type response header: [#8588](https://github.com/apache/apisix/pull/8588) +- When hotloading plugins, redundant timers may be left behind if the request-id plugin initializes the snowflake generator incorrectly: [#8556](https://github.com/apache/apisix/pull/8556) +- Close previous proto synchronizer for grpc-transcode when hotloading plugins: [#8557](https://github.com/apache/apisix/pull/8557) + ## 3.1.0 ### Core diff --git a/apisix/core/version.lua b/apisix/core/version.lua index 2127de342e88..d83cba52dd98 100644 --- a/apisix/core/version.lua +++ b/apisix/core/version.lua @@ -20,5 +20,5 @@ -- @module core.version return { - VERSION = "3.1.0" + VERSION = "3.2.0" } diff --git a/docs/en/latest/building-apisix.md b/docs/en/latest/building-apisix.md index 0deada4ae208..08218a89b323 100644 --- a/docs/en/latest/building-apisix.md +++ b/docs/en/latest/building-apisix.md @@ -52,7 +52,7 @@ curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-depend Then, create a directory and set the environment variable `APISIX_VERSION`: ```shell -APISIX_VERSION='3.1.0' +APISIX_VERSION='3.2.0' mkdir apisix-${APISIX_VERSION} ``` diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json index 2dd1c20c8205..0d0302dcc393 100644 --- a/docs/en/latest/config.json +++ b/docs/en/latest/config.json @@ -1,5 +1,5 @@ { - "version": "3.1.0", + "version": "3.2.0", "sidebar": [ { "type": "doc", diff --git a/docs/zh/latest/CHANGELOG.md b/docs/zh/latest/CHANGELOG.md index 1975d1e99622..3801d681e1ce 100644 --- a/docs/zh/latest/CHANGELOG.md +++ b/docs/zh/latest/CHANGELOG.md @@ -23,6 +23,7 @@ title: CHANGELOG ## Table of Contents +- [3.2.0](#320) - [3.1.0](#310) - [3.0.0](#300) - [3.0.0-beta](#300-beta) @@ -66,6 +67,48 @@ title: CHANGELOG - [0.7.0](#070) - [0.6.0](#060) +## 3.2.0 + +### Change + +- 废弃了 jwt-auth 内单独的 Vault 配置。用户能用密钥来实现同样的功能:[#8660](https://github.com/apache/apisix/pull/8660) + +### Core + +- :sunrise: 支持通过环境变量来配置密钥的 Vault token:[#8866](https://github.com/apache/apisix/pull/8866) +- :sunrise: 支持四层上的服务发现: + - [#8583](https://github.com/apache/apisix/pull/8583) + - [#8593](https://github.com/apache/apisix/pull/8593) + - [#8584](https://github.com/apache/apisix/pull/8584) + - [#8640](https://github.com/apache/apisix/pull/8640) + - [#8633](https://github.com/apache/apisix/pull/8633) + - [#8696](https://github.com/apache/apisix/pull/8696) + - [#8826](https://github.com/apache/apisix/pull/8826) + +### Plugin + +- :sunrise: 新增 RESTful 请求转 graphQL 的插件:[#8959](https://github.com/apache/apisix/pull/8959) +- :sunrise: 支持在每个日志插件上设置日志格式: + - [#8806](https://github.com/apache/apisix/pull/8806) + - [#8643](https://github.com/apache/apisix/pull/8643) +- :sunrise: 新增请求体/响应体转换插件:[#8766](https://github.com/apache/apisix/pull/8766) +- :sunrise: 支持发送错误日志到 Kafka:[#8693](https://github.com/apache/apisix/pull/8693) +- :sunrise: limit-count 插件支持 X-RateLimit-Reset:[#8578](https://github.com/apache/apisix/pull/8578) +- :sunrise: limit-count 插件支持设置 TLS 来访问 Redis 集群:[#8558](https://github.com/apache/apisix/pull/8558) +- :sunrise: consumer-restriction 插件支持通过 consumer_group_id 来做权限控制:[#8567](https://github.com/apache/apisix/pull/8567) + +### Bugfix + +- 修复 Host 和 SNI 不匹配时,mTLS 失效的问题:[#8967](https://github.com/apache/apisix/pull/8967) +- 如果 URI 参数部分不来自于用户配置,proxy-rewrite 插件应当对其转义:[#8888](https://github.com/apache/apisix/pull/8888) +- Admin API PATCH 操作成功后应返回 200 状态码:[#8855](https://github.com/apache/apisix/pull/8855) +- 修复特定条件下,etcd 同步失败之后的 reload 不生效:[#8736](https://github.com/apache/apisix/pull/8736) +- 修复 Consul 服务发现得到的节点不全的问题:[#8651](https://github.com/apache/apisix/pull/8651) +- 修复 grpc-transcode 插件对 Map 数据的转换问题:[#8731](https://github.com/apache/apisix/pull/8731) +- 外部插件应当可以设置 content-type 响应头:[#8588](https://github.com/apache/apisix/pull/8588) +- 插件热加载时,如果 request-id 插件中初始化 snowflake 生成器出错,可能遗留多余的计时器:[#8556](https://github.com/apache/apisix/pull/8556) +- 插件热加载时,关闭 grpc-transcode 的 proto 同步器:[#8557](https://github.com/apache/apisix/pull/8557) + ## 3.1.0 ### Core diff --git a/docs/zh/latest/building-apisix.md b/docs/zh/latest/building-apisix.md index 2c4b6aaf2760..39e322421abb 100644 --- a/docs/zh/latest/building-apisix.md +++ b/docs/zh/latest/building-apisix.md @@ -53,7 +53,7 @@ curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-depend 然后,创建一个目录并设置环境变量 `APISIX_VERSION`: ```shell -APISIX_VERSION='3.1.0' +APISIX_VERSION='3.2.0' mkdir apisix-${APISIX_VERSION} ``` diff --git a/docs/zh/latest/config.json b/docs/zh/latest/config.json index cbb7bdf26bf1..5d13c4fa10ab 100644 --- a/docs/zh/latest/config.json +++ b/docs/zh/latest/config.json @@ -1,5 +1,5 @@ { - "version": "3.1.0", + "version": "3.2.0", "sidebar": [ { "type": "doc", diff --git a/rockspec/apisix-3.2.0-0.rockspec b/rockspec/apisix-3.2.0-0.rockspec new file mode 100644 index 000000000000..8793954f55e3 --- /dev/null +++ b/rockspec/apisix-3.2.0-0.rockspec @@ -0,0 +1,103 @@ +-- +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +package = "apisix" +version = "3.2.0-0" +supported_platforms = {"linux", "macosx"} + +source = { + url = "git://github.com/apache/apisix", + branch = "3.2.0", +} + +description = { + summary = "Apache APISIX is a cloud-native microservices API gateway, delivering the ultimate performance, security, open source and scalable platform for all your APIs and microservices.", + homepage = "https://github.com/apache/apisix", + license = "Apache License 2.0", +} + +dependencies = { + "lua-resty-ctxdump = 0.1-0", + "api7-lua-resty-dns-client = 7.0.1", + "lua-resty-template = 2.0", + "lua-resty-etcd = 1.10.3", + "api7-lua-resty-http = 0.2.0", + "lua-resty-balancer = 0.04", + "lua-resty-ngxvar = 0.5.2", + "lua-resty-jit-uuid = 0.0.7", + "lua-resty-healthcheck-api7 = 2.2.2", + "api7-lua-resty-jwt = 0.2.4", + "lua-resty-hmac-ffi = 0.05", + "lua-resty-cookie = 0.1.0", + "lua-resty-session = 3.10", + "opentracing-openresty = 0.1", + "lua-resty-radixtree = 2.8.2", + "lua-protobuf = 0.4.1", + "lua-resty-openidc = 1.7.5", + "luafilesystem = 1.7.0-2", + "api7-lua-tinyyaml = 0.4.2", + "nginx-lua-prometheus = 0.20220527", + "jsonschema = 0.9.8", + "lua-resty-ipmatcher = 0.6.1", + "lua-resty-kafka = 0.20-0", + "lua-resty-logger-socket = 2.0.1-0", + "skywalking-nginx-lua = 0.6.0", + "base64 = 1.5-2", + "binaryheap = 0.4", + "api7-dkjson = 0.1.1", + "resty-redis-cluster = 1.02-4", + "lua-resty-expr = 1.3.2", + "graphql = 0.0.2", + "argparse = 0.7.1-1", + "luasocket = 3.1.0-1", + "luasec = 0.9-1", + "lua-resty-consul = 0.3-2", + "penlight = 1.9.2-1", + "ext-plugin-proto = 0.6.0", + "casbin = 1.41.5", + "api7-snowflake = 2.0-1", + "inspect == 3.1.1", + "lualdap = 1.2.6-1", + "lua-resty-rocketmq = 0.3.0-0", + "opentelemetry-lua = 0.2-3", + "net-url = 0.9-1", + "xml2lua = 1.5-2", + "nanoid = 0.1-1", + "lua-resty-mediador = 0.1.2-1", + "lua-resty-ldap = 0.1.0-0" +} + +build = { + type = "make", + build_variables = { + CFLAGS="$(CFLAGS)", + LIBFLAG="$(LIBFLAG)", + LUA_LIBDIR="$(LUA_LIBDIR)", + LUA_BINDIR="$(LUA_BINDIR)", + LUA_INCDIR="$(LUA_INCDIR)", + LUA="$(LUA)", + OPENSSL_INCDIR="$(OPENSSL_INCDIR)", + OPENSSL_LIBDIR="$(OPENSSL_LIBDIR)", + }, + install_variables = { + ENV_INST_PREFIX="$(PREFIX)", + ENV_INST_BINDIR="$(BINDIR)", + ENV_INST_LIBDIR="$(LIBDIR)", + ENV_INST_LUADIR="$(LUADIR)", + ENV_INST_CONFDIR="$(CONFDIR)", + }, +}