Kong Gateway 3.6.x 正式发布,较大改变!🦍

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

Kong Gateway进行了重大更改和弃用项,包括HTTP头、Wasm指令前缀、Admin API接口、TLS和插件的变更,以及已知问题列表。

🔎

延伸解读

升级前必查:HTTP头与Admin API变更

若自定义代码使用ngx.var.http_*读取HTTP头,同一请求中重复头部的返回值从仅首个变为逗号分隔的全部值,可能影响依赖单值的逻辑。Admin API的/consumer_groups和/consumers接口改为分页返回,JSON键从原名称变为data,调用方需调整解析方式。

TLS安全策略收紧的影响

OpenResty升级带来TLS 1.3并弃用TLS 1.1,默认SSL/TLS安全级别从1升至2,禁止RSA/DSA/DH密钥小于2048位、ECC小于224位、RC4套件及SSLv3,压缩也被禁用。若需兼容旧客户端,可将ssl_cipher_suite设为old,但会降低安全性。

插件行为调整与迁移注意

多个插件有变:ACME等Redis配置标准化;Azure Functions删除upstream/request URI,仅用routeprefix构造路径;OAS Validation在非application/json时绕过验证;Proxy Cache Advanced删除迁移文件,仅影响从0.3.5到0.5.0升级;SAML优先级调为1010。

已知问题与运行要求

3.6.0.0需要更高ulimit,建议至少4096,否则可能无法启动;3.6.1.0可恢复默认1024启动。HTTP/2下读取请求体的插件(如jq、Request Size Limiting等)要求客户端提供Content-Length,缺失或使用chunked将返回500错误。

❓

Q&A

Kong Gateway 3.6.x 中,使用 ngx.var.http_* 访问 HTTP 头有什么变化?

当同一个头部在单个请求中多次使用时,ngx.var.http_* 现在会返回所有值,以逗号分隔;以前只返回第一个值。Kong Gateway PDK 的 header 获取和设置工作方式保持不变。

Kong Gateway 3.6.x 的 Admin API 分页结果有什么变化?

对于 consumer groups(/consumer_groups)和 consumers(/consumers)的接口,现在返回分页结果,列表的 JSON key 已从 consumer_groups 或 consumers 更改为 data。

Kong Gateway 3.6.x 在 TLS 方面有哪些重大变更?

OpenResty 升级包括 TLS 1.3,弃用 TLS 1.1;默认 SSL/TLS 安全级别从 1 改为 2(112 位安全),禁止 RSA/DSA/DH 密钥小于 2048 bits、ECC 密钥小于 224 bits、使用 RC4 的密码套件、SSL 版本 3,并禁用压缩。TLSv1.1 及更低版本默认禁用。

Kong Gateway 3.6.x 中哪些插件有重大变更?

ACME、Rate Limiting、Response Rate Limiting 插件标准化了 Redis 配置;Azure Functions 插件删除 upstream/request URI,仅用 routeprefix 构造请求路径;OAS Validation 插件在内容类型非 application/json 时绕过模式验证;Proxy Cache Advanced 插件删除阻止 OSS 到 Enterprise 迁移的文件;SAML 插件优先级调整为 1010。

Kong Gateway 3.6.0.0 对操作系统 ulimit 有什么要求?

Kong Gateway 3.6.0.0 需要更高的 ulimit 才能正常运行。如果 ulimit 设置为 1024 或更低,将无法正确启动。建议将操作系统的 ulimit 设置至少为 4096。

Kong Gateway 3.6.x 中 HTTP/2 读取请求体有什么已知问题?

Kong 3.6.x 引入了一个回归:对于读取传入请求主体的插件,客户端必须指定表示请求主体长度的 Content-Length 头部。如果不包含此头部或依赖 Transfer-Encoding: chunked,将导致 HTTP 响应错误代码 500。影响插件包括 jq、Request Size Limiting、Request Validator、AI Request Transformer、Request Transformer、Request Transformer Advanced。

🏷️

标签

➡️

继续阅读