繼 2.11.0 版本發布之後,Apache APISIX 也在即將到來的新春佳節,為大家帶來 2022 年 第壹個帶有新功能的版本 。
新功能
更多的 Serverless 集成
在上個版本裏,Apache APISIX 增加了對 Azure Function 的支持。而這次新版本在功能上又加入了對更多 Serverless 廠商的支持。如今用戶也可以在 Apache APISIX 中結合 AWS Lambda 和 Apache OpenWhisk,在網關上進行特定函數的暴露。
更多的鑒權插件
此次的新版本,還將帶來兩個眾人翹首以盼的新插件: forward-auth 和 opa 。
通過上述兩個插件,將為 Apache APISIX 的鑒權功能錦上添花,給用戶帶來更多豐富和上手簡單的鑒權操作。
更多的日誌功能
除了上邊提到的鑒權插件,本次新版本還將帶來三個新的日誌插件: 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 時進行日誌記錄,不用再去顧慮全量采集響應體而帶來的問題了。
具體示例可參考下方:
上述配置會僅在 Content-Length < 4096 且 Content-Type 為 "application/json" 才記錄日誌。
另壹個跟日誌緊密相關的功能,就是新版本的 Apache APISIX 已支持註冊自定義變量。同時結合 APISIX 的自定義日誌格式,就可以實現完全自定義上報的日誌內容。即無需修改具體的日誌插件,就能實現日誌生成和上報的解耦合。這裏我們通過壹個示例進行簡單演示壹下。
比如我們可以在自己的插件中註冊壹個 a6_route_labels 的變量:
並在自定義日誌格式中使用它:
假設我們的 Route 長這樣:
最終就會收到如下所示的日誌:
L4 代理支持 TLS over TCP 上遊
在 2.12.0 版本中還引入了新的 Upstream Scheme,現在 Apache APISIX 已支持代理到 TLS over TCP 上遊了。
具體做法可參考下方,只需在 Upstream 配置中指明 Scheme 為 TLS 即可。
至此 Apache APISIX 的 TCP 代理功能得到了 TLS 全方位的支持。此外,我們還支持在靜態文件中配置 L4 代理的 Access Log:
更新
多語言插件持續完善
在之前版本中,Apache APISIX 已開放了對 WASM 生態的支持。而在 2.12.0 版本中,針對 WASM 生態又做了不少的更新細節。
目前 Apache APISIX 已經支持在 header_filter 的階段運行 WASM 代碼,彌補了現有外部插件無法修改響應的不足。
此外,我們還支持在 WASM 裏面通過 Apache APISIX 這個宿主進行 HTTP 通訊。借助這壹功能,我們用 WASM 也重新實現了 forward-auth 插件。該插件的功能幾乎和 Lua 版本壹模壹樣,甚至連測試用例也是在 Lua 版本上改了下名字就能通過了。
當然,我們也沒有忘記針對現有的外部插件進行更新,本次 2.12.0 版本中,Apache APISIX 已允許外部插件獲取請求體。
比如最近發布的 Java Plugin Runner 第二版就包含了這壹功能。新版本的 Java Plugin Runner 還支持在運行時動態獲取 APISIX 變量。
完善
更多細節
除了上述新功能和組件外,Apache APISIX 2.12.0 版本還更新了如下功能:
更多關於 Apache APISIX 2.12.0 的更新細節,可以查看本次發布對應的 Change log 。
下載
想要獲取最新的 Apache APISIX 2.12.0 版本,可通過以下路徑下載:
源代碼: https://apisix.apache.org/downloads/
二進制安裝包: https://apisix.apache.org/zh/docs/apisix/how-to-build/