diff --git a/CHANGELOG.md b/CHANGELOG.md index b423b10d..fb4b763a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ # Table of Contents +- [2.1.0](#210) - [2.0.0](#200) - [1.5.0](#150) - [1.4.1](#141) @@ -32,6 +33,35 @@ - [0.7.0](#070) - [0.6.0](#060) +## 2.1.0 + +### Core +- :sunrise: **support ENV variable in configuration.** [#2743](https://github.com/apache/apisix/pull/2743) +- :sunrise: **support TLS connection with etcd.** [#2548](https://github.com/apache/apisix/pull/2548) +- generate create/update_time automatically. [#2740](https://github.com/apache/apisix/pull/2740) +- add a deprecate log for enable_websocket in upstream.[#2691](https://github.com/apache/apisix/pull/2691) +- add a deprecate log for consumer id.[#2829](https://github.com/apache/apisix/pull/2829) +- Added `X-APISIX-Upstream-Status` header to distinguish 5xx errors from upstream or APISIX itself. [#2817](https://github.com/apache/apisix/pull/2817) +- support Nginx configuration snippet. [#2803](https://github.com/apache/apisix/pull/2803) + +## Plugin +- :sunrise: **Upgrade protocol to support Apache Skywalking 8.0**[#2389](https://github.com/apache/apisix/pull/2389). So this version only supports skywalking 8.0 protocol. This plugin is disabled by default, you need to modify config.yaml to enable, which is not backward compatible. +- :sunrise: add aliyun sls logging plugin.[#2169](https://github.com/apache/apisix/issues/2169) +- proxy-cache: the cache_zone field in the schema should be optional.[#2776](https://github.com/apache/apisix/pull/2776) +- fix: validate plugin configuration in the DP [#2856](https://github.com/apache/apisix/pull/2856) + +## Bugfix +- :bug: fix(etcd): handle etcd compaction.[#2687](https://github.com/apache/apisix/pull/2687) +- fix: move `conf/cert` to `t/certs` and disable ssl by default, which is not backward compatible. [#2112](https://github.com/apache/apisix/pull/2112) +- fix: check decrypt key to prevent lua thread aborted [#2815](https://github.com/apache/apisix/pull/2815) + +## Not downward compatible features in future versions +-In the 2.3 release, the consumer will only support user names and discard the id. The consumer needs to manually clean up the id field in etcd, otherwise the schema verification will report an error during use +-In the 2.3 release, opening websocket on upstream will no longer be supported +-In version 3.0, the data plane and control plane will be separated into two independent ports, that is, the current port 9080 will only process data plane requests, and no longer process admin API requests + +For more changes, please refer to [Milestone](https://github.com/apache/apisix/milestone/8) + ## 2.0.0 This is release candidate. diff --git a/CHANGELOG_CN.md b/CHANGELOG_CN.md index e44f4764..055f869c 100644 --- a/CHANGELOG_CN.md +++ b/CHANGELOG_CN.md @@ -19,6 +19,7 @@ # Table of Contents +- [2.1.0](#210) - [2.0.0](#200) - [1.5.0](#150) - [1.4.1](#141) @@ -32,6 +33,36 @@ - [0.7.0](#070) - [0.6.0](#060) + +## 2.1.0 + +### Core +- :sunrise: **支持使用环境变量来配置参数.** [#2743](https://github.com/apache/apisix/pull/2743) +- :sunrise: **支持使用 TLS 来连接 etcd.** [#2548](https://github.com/apache/apisix/pull/2548) +- 自动生成对象的创建和更新时间. [#2740](https://github.com/apache/apisix/pull/2740) +- 在上游中开启 websocket 时,增加日志来提示此功能即将废弃.[#2691](https://github.com/apache/apisix/pull/2691) +- 增加日志来提示 consumer id 即将废弃.[#2829](https://github.com/apache/apisix/pull/2829) +- 增加 `X-APISIX-Upstream-Status` 头来区分 5xx 错误来自上游还是 APISIX 自身。[#2817](https://github.com/apache/apisix/pull/2817) +- 支持 Nginx 配置片段。[#2803](https://github.com/apache/apisix/pull/2803) + +## Plugin +- :sunrise: **升级协议来 Apache Skywalking 8.0**[#2389](https://github.com/apache/apisix/pull/2389). 这个版本只支持 skywalking 8.0 协议。此插件默认关闭,需要修改 config.yaml 来开启。这是不向下兼容的修改。 +- :sunrise: 新增阿里云 sls 日志服务插件。[#2169](https://github.com/apache/apisix/issues/2169) +- proxy-cache: cache_zone 字段改为可选.[#2776](https://github.com/apache/apisix/pull/2776) +- 在数据平面校验插件的配置。[#2856](https://github.com/apache/apisix/pull/2856) + +## Bugfix +- :bug: fix(etcd): 处理 etcd compaction.[#2687](https://github.com/apache/apisix/pull/2687) +- 将 `conf/cert` 中的测试证书移动到 `t/certs` 目录中,并且默认关闭 SSL。这是不向下兼容的修改。 [#2112](https://github.com/apache/apisix/pull/2112) +- 检查 decrypt key 来阻止 lua thread 中断。 [#2815](https://github.com/apache/apisix/pull/2815) + +## 不向下兼容特性预告 +- 在 2.3 发布版本中,consumer 将只支持用户名,废弃 id,consumer需要在 etcd 中手工清理掉 id 字段,不然使用时 schema 校验会报错 +- 在 2.3 发布版本中,将不再支持在 upstream 上开启 websocket +- 在 3.0 版本中,数据平面和控制平面将分开为两个独立的端口,即现在的 9080 端口将只处理数据平面的请求,不再处理 admin API 的请求 + +更多的变动可以参考[里程碑](https://github.com/apache/apisix/milestone/8) + ## 2.0.0 这是一个 release candidate。 diff --git a/README.md b/README.md index 1627c9a4..6688a212 100644 --- a/README.md +++ b/README.md @@ -53,10 +53,8 @@ The technical architecture of Apache APISIX: - [Features](#features) - [Documentation](#documentation) - [Get Started](#get-started) -- [Dashboard](#dashboard) - [Benchmark](#benchmark) - [Apache APISIX vs Kong](#apache-apisix-vs-kong) -- [Open Governance](#open-governance) - [Community](#community) - [Videos And Articles](#videos-and-articles) - [User Stories](#user-stories) @@ -134,7 +132,7 @@ A/B testing, canary release, blue-green deployment, limit rate, defense against - Monitoring And Metrics: [Prometheus](doc/plugins/prometheus.md) - Clustering: APISIX nodes are stateless, creates clustering of the configuration center, please refer to [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md). - High availability: support to configure multiple etcd addresses in the same cluster. - - Dashboard: Built-in dashboard to control APISIX. + - [Dashboard](https://github.com/apache/apisix-dashboard) - Version Control: Supports rollbacks of operations. - CLI: start\stop\reload APISIX through the command line. - [Stand-alone mode](doc/stand-alone.md): Supports to load route rules from local yaml file, it is more friendly such as under the kubernetes(k8s). @@ -167,10 +165,9 @@ There are several ways to install the Apache Release version of APISIX: - Installation runtime dependencies: OpenResty and etcd, and compilation dependencies: luarocks. Refer to [install dependencies documentation](doc/install-dependencies.md) - Download the latest source code release package: ```shell - $ mkdir apisix-2.0 - $ cd apisix-2.0 - $ wget https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz - $ tar zxvf apache-apisix-2.0-src.tgz + $ mkdir apisix-2.1 + $ wget https://downloads.apache.org/apisix/2.1/apache-apisix-2.1-src.tgz + $ tar zxvf apache-apisix-2.1-src.tgz -C apisix-2.1 ``` - Install the dependencies: ```shell @@ -198,7 +195,7 @@ There are several ways to install the Apache Release version of APISIX: - Installation runtime dependencies: OpenResty and etcd, refer to [install dependencies documentation](doc/install-dependencies.md#centos-7) - install APISIX: ```shell - $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm + $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.1/apisix-2.1-0.el7.noarch.rpm ``` - check version of APISIX: ```shell @@ -249,12 +246,6 @@ There are several ways to install the Apache Release version of APISIX: For more documents, please refer to [Apache APISIX Document Index](doc/README.md) -## Dashboard - -APISIX has built-in support for [Dashboard](https://github.com/apache/apisix-dashboard), which could be directly deployed by docker compose. - -The dashboard only allows 127.0.0.1 by default, and you can modify `allow_admin` in `conf/config.yaml` by yourself, to list the list of IPs allowed to access. - ## Benchmark Using AWS's 8 core server, APISIX's QPS reach to 140,000 with a latency of only 0.2 ms. @@ -303,9 +294,6 @@ Using AWS's 8 core server, APISIX's QPS reach to 140,000 with a latency of only Benchmark comparison test [details data](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01) -## Open Governance - -[GitHub milestones](https://github.com/apache/apisix/milestones) lay out the path to Apache APISIX's future improvements. ## Community diff --git a/README_CN.md b/README_CN.md index 5022d1ff..8ce29f0b 100644 --- a/README_CN.md +++ b/README_CN.md @@ -51,10 +51,8 @@ Apache APISIX 的技术架构如下图所示: - [特性](#特性) - [文档](#文档) - [立刻开始](#立刻开始) -- [控制台](#控制台) - [性能测试](#性能测试) - [Apache APISIX 和 Kong 的比较](#apache-apisix-和-kong-的比较) -- [开放治理](#开放治理) - [社区](#社区) - [视频和文章](#视频和文章) - [用户实际使用案例](#用户实际使用案例) @@ -132,7 +130,7 @@ A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵 - 监控和指标: [Prometheus](doc/zh-cn/plugins/prometheus.md) - 集群:APISIX 节点是无状态的,创建配置中心集群请参考 [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md)。 - 高可用:支持配置同一个集群内的多个 etcd 地址。 - - 控制台: 内置控制台来操作 APISIX 集群。 + - [控制台](https://github.com/apache/apisix-dashboard): 操作 APISIX 集群。 - 版本控制:支持操作的多次回滚。 - CLI: 使用命令行来启动、关闭和重启 APISIX。 - [单机模式](doc/zh-cn/stand-alone.md): 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。 @@ -165,10 +163,9 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun - 安装运行时依赖:OpenResty 和 etcd,以及编译的依赖:luarocks。参考[依赖安装文档](doc/zh-cn/install-dependencies.md) - 下载最新的源码发布包: ```shell - $ mkdir apisix-2.0 - $ cd apisix-2.0 - $ wget https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz - $ tar zxvf apache-apisix-2.0-src.tgz + $ mkdir apisix-2.1 + $ wget https://downloads.apache.org/apisix/2.1/apache-apisix-2.1-src.tgz + $ tar zxvf apache-apisix-2.1-src.tgz -C apisix-2.1 ``` - 安装运行时依赖的 Lua 库: ```shell @@ -196,7 +193,7 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun - 安装依赖:OpenResty 和 etcd,参考[依赖安装文档](doc/zh-cn/install-dependencies.md#centos-7) - 安装 APISIX: ```shell - $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm + $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.1/apisix-2.1-0.el7.noarch.rpm ``` - 检查 APISIX 的版本号: ```shell @@ -247,13 +244,6 @@ CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubun 更多文档请参考 [Apache APISIX 文档索引](doc/zh-cn/README.md)。 -## 控制台 - -APISIX 提供了 [Dashboard 项目](https://github.com/apache/apisix-dashboard), -可以使用 docker compose 直接部署和体验。 - -Dashboard 默认只允许 127.0.0.1 访问。你可以自行修改 `conf/config.yaml` 中的 `allow_admin` 字段,指定允许访问 dashboard 的 IP 列表。 - ## 性能测试 使用 AWS 的 8 核心服务器来压测 APISIX,QPS 可以达到 140000,同时延时只有 0.2 毫秒。 @@ -302,9 +292,6 @@ Dashboard 默认只允许 127.0.0.1 访问。你可以自行修改 `conf/config. 性能对比测试[详细内容如下](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01)。 -## 开放治理 - -[GitHub 里程碑](https://github.com/apache/apisix/milestones) 布局了 Apache APISIX 未来的改进之路。 ## 社区 diff --git a/apisix/core/version.lua b/apisix/core/version.lua index 9b019bb6..90a4f32a 100644 --- a/apisix/core/version.lua +++ b/apisix/core/version.lua @@ -15,5 +15,5 @@ -- limitations under the License. -- return { - VERSION = "2.0" + VERSION = "2.1" } diff --git a/doc/how-to-build.md b/doc/how-to-build.md index 2f5361e3..e30fa3f1 100644 --- a/doc/how-to-build.md +++ b/doc/how-to-build.md @@ -34,21 +34,22 @@ You can install Apache APISIX in a variety of ways, including source code packag You need to download the Apache source release first: ```shell -wget http://www.apache.org/dist/apisix/2.0/apache-apisix-2.0-src.tar.gz -tar zxvf apache-apisix-2.0-src.tar.gz +$ mkdir apisix-2.1 +$ wget https://downloads.apache.org/apisix/2.1/apache-apisix-2.1-src.tgz +$ tar zxvf apache-apisix-2.1-src.tgz -C apisix-2.1 ``` Install the Lua libraries that the runtime depends on: ```shell -cd apache-apisix-2.0 +cd apache-apisix-2.1 make deps ``` ### Installation via RPM package (CentOS 7) ```shell -sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm +sudo yum install -y https://github.com/apache/apisix/releases/download/2.1/apisix-2.1-0.el7.noarch.rpm ``` ### Installation via Luarocks (macOS not supported) @@ -64,11 +65,11 @@ sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/apache/apisix/master/ > Install the specified version via Luarocks: ```shell -# Install version 2.0 -sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.0 +# Install version 2.1 +sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.1 # old luarocks not support the `lua-dir` parameter, you can remove this option -sudo luarocks install apisix 2.0 +sudo luarocks install apisix 2.1 ``` ## 3. Manage (start/stop) APISIX Server diff --git a/doc/zh-cn/how-to-build.md b/doc/zh-cn/how-to-build.md index 07f199f1..f1853144 100644 --- a/doc/zh-cn/how-to-build.md +++ b/doc/zh-cn/how-to-build.md @@ -34,20 +34,21 @@ Apache APISIX 的运行环境需要 Nginx 和 etcd, 你需要先下载 Apache Release 源码包: ```shell -wget http://www.apache.org/dist/apisix/2.0/apache-apisix-2.0-src.tar.gz -tar zxvf apache-apisix-2.0-src.tar.gz +$ mkdir apisix-2.1 +$ wget https://downloads.apache.org/apisix/2.1/apache-apisix-2.1-src.tgz +$ tar zxvf apache-apisix-2.1-src.tgz -C apisix-2.1 ``` 安装运行时依赖的 Lua 库: ``` -cd apache-apisix-2.0 +cd apache-apisix-2.1 make deps ``` ### 通过 RPM 包安装(CentOS 7) ```shell -sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm +sudo yum install -y https://github.com/apache/apisix/releases/download/2.1/apisix-2.1-0.el7.noarch.rpm ``` ### 通过 Luarocks 安装 (不支持 macOS) @@ -63,11 +64,11 @@ sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/apache/apisix/master/ > 通过 Luarocks 安装指定的版本: ```shell -# 安装 apisix 的 2.0 版本 -sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.0 +# 安装 apisix 的 2.1 版本 +sudo luarocks install --lua-dir=/path/openresty/luajit apisix 2.1 # 老版本 luarocks 可能不支持 `lua-dir` 参数,可以删除该选项 -sudo luarocks install apisix 2.0 +sudo luarocks install apisix 2.1 ``` ## 3. 管理(启动、关闭等)APISIX 服务 diff --git a/rockspec/apisix-2.1-0.rockspec b/rockspec/apisix-2.1-0.rockspec new file mode 100644 index 00000000..072c99a6 --- /dev/null +++ b/rockspec/apisix-2.1-0.rockspec @@ -0,0 +1,77 @@ +-- +-- 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 = "2.1-0" +supported_platforms = {"linux", "macosx"} + +source = { + url = "git://github.com/apache/apisix", + tag = "2.1", +} + +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-template = 1.9", + "lua-resty-etcd = 1.4.2", + "lua-resty-balancer = 0.02rc5", + "lua-resty-ngxvar = 0.5", + "lua-resty-jit-uuid = 0.0.7", + "lua-resty-healthcheck-api7 = 2.2.0", + "lua-resty-jwt = 0.2.0", + "lua-resty-cookie = 0.1.0", + "lua-resty-session = 2.24", + "opentracing-openresty = 0.1", + "lua-resty-radixtree = 2.4", + "lua-protobuf = 0.3.1", + "lua-resty-openidc = 1.7.2-1", + "luafilesystem = 1.7.0-2", + "lua-tinyyaml = 1.0", + "lua-resty-prometheus = 1.1", + "jsonschema = 0.9.2", + "lua-resty-ipmatcher = 0.6", + "lua-resty-kafka = 0.07", + "lua-resty-logger-socket = 2.0-0", + "skywalking-nginx-lua = 0.3-0", + "base64 = 1.5-2", + "dkjson = 2.5-2", + "resty-redis-cluster = 1.02-4", +} + +build = { + type = "make", + build_variables = { + CFLAGS="$(CFLAGS)", + LIBFLAG="$(LIBFLAG)", + LUA_LIBDIR="$(LUA_LIBDIR)", + LUA_BINDIR="$(LUA_BINDIR)", + LUA_INCDIR="$(LUA_INCDIR)", + LUA="$(LUA)", + }, + install_variables = { + INST_PREFIX="$(PREFIX)", + INST_BINDIR="$(BINDIR)", + INST_LIBDIR="$(LIBDIR)", + INST_LUADIR="$(LUADIR)", + INST_CONFDIR="$(CONFDIR)", + }, +}