Apache APISIX 2.12.0 版本发布,新功能更适配新一年!
继 2.11.0 版本发布之后,Apache APISIX 也在即将到来的新春佳节,为大家带来 2022 年第一个带有新功能的版本。在此也算携手新版本给大家拜个早年了!
新功能:更多的 Serverless 集成
还记得在上个版本里,Apache APISIX 增加了对 Azure Function 的支持。而这次新版本中也是用意满满,在功能上又加入了对更多 Serverless 厂商的支持。
如今用户也可以在 Apache APISIX 中结合 AWS Lambda 和 Apache OpenWhisk,在网关上进行特定函数的暴露。
新功能:更多的鉴权插件
此次的新版本,还将带来两个众人翘首以盼的新插件:forward-auth
和 opa
。
forward-auth
插件跟 Traefik 的同名插件功能类似,该插件可以允许把当前请求的信息发送给外部服务进行鉴权。opa
插件则整合了著名的 Open Policy Agent,该插件可以通过 OPA 来完成复杂的鉴权功能。
新功能:更多的日志功能 除了上边提到的鉴权插件,本次新版本还将带来三个新的日志插件:
google-cloud-logging
、splunk-hec-logging
以及 rocketmq-logger
。从插件名称上也很容易理解,通过上述三个插件可以把日志分别发送到 Google Cloud、Splunk 和 Apache RocketMQ。未来,Apache APISIX 将会对接越来越多的日志服务商和开源 Broker,让日志处理变得更加轻松。
支持记录响应体
同时,此次 2.12.0 版本还在日志层面支持记录响应体。与 Apache APISIX 其他功能一样,该功能也可以通过表达式进行动态开启。这样在使用中,就可以实现仅在上游返回特定的 Content-Type 和 Content-Length 时进行日志记录,不用再去顾虑全量采集响应体而带来的问题了。
具体示例可参考下方:
{"plugins": {"kafka-logger": {"broker_list" : {"127.0.0.1":9092},"kafka_topic" : "test2","include_resp_body": true,"include_resp_body_expr": [["sent_http_content_length","<","4096"],["sent_http_content_type","==","application/json"],]}},"upstream": {"nodes": {"127.0.0.1:1980": 1},"type": "roundrobin"},"uri": "/hello"}
上述配置会仅在 Content-Length < 4096 且 Content-Type 为 "application/json" 才记录日志。支持注册自定义变量
另一个跟日志紧密相关的功能,就是新版本的 Apache APISIX 已支持注册自定义变量。同时结合 APISIX 的自定义日志格式,就可以实现完全自定义上报的日志内容。即无需修改具体的日志插件,就能实现日志生成和上报的解耦合。这里我们通过一个示例进行简单演示一下。
比如我们可以在自己的插件中注册一个
a6_route_labels
的变量:local core = require "apisix.core"core.ctx.register_var("a6_route_labels", function(ctx)local route = ctx.matched_route and ctx.matched_route.valueif route and route.labels thenreturn route.labelsendreturn nilend)
并在自定义日志格式中使用它:
{"log_format": {"host": "$host","labels": "$a6_route_labels","client_ip": "$remote_addr"}}
假设我们的 Route 长这样:
{"plugins": {"http-logger": {"uri": "http://127.0.0.1:1980/log","batch_max_size": 1,"concat_method": "json"}},"upstream": {"nodes": {"127.0.0.1:1982": 1},"type": "roundrobin"},"labels": {"k": "v"},"uri": "/hello"}
最终就会收到如下所示的日志:
{"client_ip":"127.0.0.1","host":"localhost","labels":{"k":"v"},"route_id":"1"}
新功能:L4 代理支持 TLS over TCP 上游 在 2.12.0 版本中还引入了新的 Upstream Scheme,现在 Apache APISIX 已支持代理到 TLS over TCP 上游了。
具体做法可参考下方,只需在 Upstream 配置中指明 Scheme 为 TLS 即可。
{"scheme": "tls","nodes": {"127.0.0.1:1995": 1},"type": "roundrobin"}
至此 Apache APISIX 的 TCP 代理功能得到了 TLS 全方位的支持。此外,我们还支持在静态文件中配置 L4 代理的 Access Log:
stream:enable_access_log: false# enable access log or not, default falseaccess_log: logs/access_stream.logaccess_log_format: "$remote_addr [$time_local] $protocol $status $bytes_sent $bytes_received $session_time"# create your custom log format by visiting http://nginx.org/en/docs/varindex.htmlaccess_log_format_escape: default# allows setting json or default characters escaping in variables
更新:多语言插件持续完善 WASM 生态功能更加丰富
在之前版本中,Apache APISIX 已开放了对 WASM 生态的支持。而在 2.12.0 版本中,针对 WASM 生态又做了不少的更新细节。
目前 Apache APISIX 已经支持在 header_filter 的阶段运行 WASM 代码,弥补了现有外部插件无法修改响应的不足。
此外,我们还支持在 WASM 里面通过 Apache APISIX 这个宿主进行 HTTP 通讯。借助这一功能,我们用 WASM 也重新实现了
forward-auth
插件。该插件的功能几乎和 Lua 版本一模一样,甚至连测试用例也是在 Lua 版本上改了下名字就能通过了。Java Plugin Runner 最新版本发布
当然,我们也没有忘记针对现有的外部插件进行更新,本次 2.12.0 版本中,Apache APISIX 已允许外部插件获取请求体。
比如最近发布的 Java Plugin Runner 第二版就包含了这一功能。新版本的 Java Plugin Runner 还支持在运行时动态获取 APISIX 变量。
更多细节 除了上述新功能和组件外,Apache APISIX 2.12.0 版本还更新了如下功能:
- gRPC-Web 的支持:继 gRPC 代理、HTTP 转 gRPC 之后,我们迎来了 gRPC 家族的第三个成员。现在 Apache APISIX 也支持代理 gRPC Web 协议了。
limit-count
的增强:如今limit-count
插件的计数器已经支持在请求间、路由间进行共享,可以说是相当灵活了。
下载 想要获取最新的 Apache APISIX 2.12.0 版本,可通过以下路径下载:
- 源代码:请访问下载页面
- 二进制安装包:请访问安装指南
1 月 28 日 19:00,Apache APISIX 社区将为大家带来主题为「APISIX in 青云 !开源 + 云原生助力“企业上云”行动落地」的线上分享。本次活动特别邀请了来自青云的 API 网关产品经理刘庆及 API 网关技术架构师翟炼,为大家揭秘其如何基于开源框架 Apache APISIX 打造出一款可提供 API 全生命周期管理服务的青云 QingCloud API 网关。另外还有来自 Apache APISIX 社区的 PMC 成员金卫,为大家分享 Apache APISIX 在云端的实践。
众多精彩议题内容等你来看!
文章图片
如何参与?
关注下方「Apache APISIX 视频号」并预约此次直播,即可在 1 月 28 日准时参与到我们的线上 Meetup 哦!
文章图片
入群交流
扫描下方二维码添加小助手微信,由小助手邀请您进入 Apache APISIX 在线交流群,了解更多社区动态!
【Apache APISIX 2.12.0 版本发布,新功能更适配新一年!】
文章图片
推荐阅读
- Apache多路复用模块(MPMs)介绍
- mac|mac php5.6+mongdb+Apache环境配置
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- Apache|Apache Zookeeper总结
- 从原理到操作,让你在 APISIX 中代理 Dubbo 服务更便捷
- Apache|Apache BookKeeper中数据目录分析
- 阿里云配置|阿里云配置 apache 升级https 部署
- IDEA|IDEA 中使用MAVEN Install 项目的时候 报 org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed
- 视频|视频 | Apache Pulsar 祝大家新春大吉!
- 2021|2021 Apache Pulsar 中文社区先锋奖与年度优秀案例奖出炉!