原文地址:https://github.com/Kong/kong/blob/master/CHANGELOG.md#100 (如有翻译的不准确或错误之处,欢迎留言指出)。
这个是一个非常重要的版本,引入了对Service Mesh和Stream Routing支持的新功能,以及新的迁移框架,它还包括插件开发工具包(Plugin Development Kit)的1.0.0版本,它包含大量其他功能和修复,如下所示。此外,Kong 1.0中包含的所有插件都更新为使用PDK 1.0版。
像往常一样,主要版本升级需要数据库迁移和Nginx配置文件的更改(如果您自定义了默认模板),在计划升级Kong集群之前,请花几分钟时间阅读1.0升级指南,了解有关更改和迁移的更多详细信息。
作为主要版本,在Kong 0.x中标记为已弃用的所有实体和概念现已在Kong 1.0中删除,已弃用的功能将保留在Kong 0.15中,Kong 0.x系列的最终版本,同时发布到Kong 1.0。

重大更新

Kong 1.0包括0.15的所有重大更改,以及删除已弃用的概念:

核心:

  • API实体和相关概念( 例如/apis )将被删除(自0.13版本,2018年三月起不推荐使用)。请改用路由和服务。
  • 删除旧的DAO实现以及旧的schema 验证库(apis是使用它的最后一个实体),在自定义插件中使用新的 schema format。
  • 为了简化插件的转换,1.0中的 plugin loader 包含 best-effort 的模式自动翻译器,对于许多插件来说应该足够了。
  • 在0.14.x版本的Upstreams中,Targets 和 Plugins 仍然使用旧的 DAO 和Admin API实现。在0.15.0和1.0.0上,所有核心实体都使用新的kong.db DAO,并且他们的端点已升级到新的Admin API(有关详细信息,请参阅下文)。#3689, #3739, #3778
  • 新的迁移框架( migration framework),#3802
  • luaossl 版本跳提升到20181207#4067
  • kong.resty.getssl 模块 #3681
  • 时间戳现在允许毫秒精度#3660
  • OpenSSL 已经提升到至 1.1.1a #4005
  • luasec 提升到 to 0.7
  • PDK函数 kong.request.get_body 现在将返回nilerrmime,当body是有效的JSON但是既不是对象也不是数组#4063

New Admin API引入的更改摘要:

  • 分页已包含在所有“multi-record”端点中,分页控制字段与0.14.x中的不同。
  • 现在通过URL路径更改(/consumers/x/plugins)而不是querystring字段(/plugins?consumer_id = x)进行过滤。
  • Array values不能与逗号分隔的字符串相交。它们必须是JSON请求上的“正确”JSON值,或者在form-url-encoded或multipart请求上使用新语法。
  • 错误消息已经从头开始重新设计,更加一致,准确和提供信息。
  • PUT方法已经使用幂等行为重新实现,并且已添加到一些没有它的实体中。

有关New Admin API的更多详细信息请访问官方文档https://docs.konghq.com/

配置

  • 删除了custom_plugins指令(自2018年7月的0.14.0起不推荐使用)。请改用plugins

插件

  • 删除了galileo插件(自0.13.0起不推荐使用)
  • 在0.14.0中引入插件开发工具包(PDK)之前,插件作者偶尔使用的一些内部模块现已被删除:
    • kong.tools.ip 模块已被删除。请改用PDK中的kong.ip
    • kong.tools.public 模块已被删除。请使用PDK中的各种等效功能。
    • kong.tools.responses 模块已被删除。请改用PDK中的 kong.response.exit。您可能还想使用kong.log.err来记录内部服务器错误。
    • kong.api.crud_helpers模块已删除(自0.13.0中引入新DAO以来已弃用)。如果需要自定义自动生成的端点,请使用kong.api.endpoints
  • 在插件模式中,no_routeno_serviceno_consumer注释被制作为相应字段的#decection#3739;在0.15中,它们在schema.lua table 中作为ad-hoc字段提供,作为旧的no_consumer选项。
  • 所有自带的插件模式和自定义实体都已更新为新的kong.db,并且他们的API已更新为New Admin API,因此得到了改进,但是仍有不同的行为,如上一节所述#3766, #3774, #3778, #3839
  • 所有插件迁移都已转换为新的迁移框架。自定义插件需要使用0.15以上的新迁移框架。

附加

Service Mesh 和 Stream Routes

  • 这些新功能需要修补版本的OpenResty,但Kong仍然可以在非修补的OpenResty for HTTP(S)API网关方案中正常工作
  • 通过stream_listen配置选项支持TCP和TLSStream Routes #4009
  • 新的origins配置属性允许覆盖来自kong的主机 #3679
  • Kong实例现在可以创建共享内部Certificate Authority,,用于Service Mesh SSL流量 #3906, #3861,
  • transparent 监听允许使用 iptables 设置Service Mesh [#3884]
  • 插件的run_on字段用于控制它们在Service Mesh环境中的行为方式 #3930, #4066
  • 这里新加一个叫做preread的新阶段。这是流量路由完成的地方。

核心

  • 路由现在有一个name字段 [#3764]
  • 在新的DAO和Admin API中实现了TTL支持。特别是,PostgreSQL获得了一种新的更高效的TTL实现 #3603, #3638
  • 通过减少数据库访问量来提高路由器重建的性能 #3782
  • Schema 改进:
    • Subschemas 子模式 #3630
    • 新的实体验证器:distinctneis_regexcontainsgt
    • 实体检查仅在必要时运行 #3848
    • 条件验证器可以根据需要标记字段 6d1707c4s
    • 记录字段的部分更新 05adc40f
    • 向schema添加具有默认值的新字段不再需要迁移 #3756
  • PDK改进:
    • 新的kong.node模块 #3826
    • 新的 kong.response.get_path_with_query 模块 #3842
    • PDK getters and setters for Service, Route, Consumer & Credential #3916
    • kong.response.get_source返回error错误 #4006
    • kong.response.exit可以在header_filter阶段使用,但只能没有body #4039
  • Cluster-wide mutex 集群范围的互斥锁 #3685
  • 向Admin API添加多部分支持: #3776
  • 改进了插件迭代器的速度 #3794
  • 在活动运行状况检查中添加对HTTPS的支持 #3815

配置

  • 新字段 dns_valid_ttl #3730
  • 新字段 pg_timeout #3808
  • 设置为0时,可以禁用 upstream_keepalive (感谢 @pryorda! ) #3716
  • 新的transparent后缀也适用于proxy_listen指令

插件

  • http-log插件现在接受缓冲日志记录 #3604
  • 大多数插件逻辑都是用PDK重写的,而不是使用内部kong函数或ngx调用 #3845
  • 新的run_on选项用于控制插件在Service Mesh环境中的执行位置 #3930, #4066
  • 通常,插件对故障/意外输入更具弹性 #4006, #3947, #4038
  • AWS现在支持使用is_proxy_integration进行Lambda代理集成#3427。感谢@aloisbarreras 的补丁。

修复项

核心

插件

  • 记录字段在插件架构中不可为空 #3778
  • 修复了一些问题,其中一些插件可能包含Lapis的默认HTML响应 #4077
  • cors:
    • Access-Control-Allow-Credentials 启用的时候 set ‘Vary: Origin’(感谢@marckhouzam#3675
    • 对于预检请求,返回HTTP 200而不是204 (感谢 @aslafy-z) #4029)
    • 现在可以安全地验证 flat strings 。0eaa9acd
  • acl:
    • 编辑ACL时会重置缓存 #3839
    • 缓存正确用于 intermediary #4040
  • correlation-id:当access阶段被跳过的时候会报错 #3924
  • aws-lambda: HTTP / 2不允许去掉header #f2ee98e2
  • ratelimiting & response-ratelimiting:修复了不必要的redis调用问题:redis:select 可以关闭连接。(感谢 @fffonion #3973