Kong v2.4.0 Release Notes

  • ๐Ÿš€ > Released 2021/04/06

    ๐Ÿš€ This is the final release of Kong 2.4.0, with no breaking changes with respect to the 2.x series. ๐Ÿš€ This release includes JavaScript PDK, improved CP/DP updates and UTF-8 Tags, amongst other improvements ๐Ÿ›  and fixes.

    Dependencies

    • โš  :warning: For Kong 2.4, the required OpenResty version has been bumped to 1.19.3.1, and the set of patches included has changed, including the latest release of lua-kong-nginx-module. If you are installing Kong from one of our distribution packages, you are not affected by this change.

    Note: if you are not using one of our distribution packages and compiling OpenResty from source, you must still apply Kong's OpenResty ๐Ÿ— patches (and, as highlighted above, compile OpenResty with the new ๐Ÿ— lua-kong-nginx-module). Our kong-build-tools repository will allow you to do both easily.

    • โฌ†๏ธ Bump luarocks from 3.4.0 to 3.5.0. #6699
    • โฌ†๏ธ Bump luasec from 0.9 to 1.0. #6814
    • โฌ†๏ธ Bump lua-resty-dns-client from 5.2.1 to 6.0.0. #6999
    • โฌ†๏ธ Bump kong-lapis from 1.8.1.2 to 1.8.3.1. #6925
    • โฌ†๏ธ Bump pgmoon from 1.11.0 to 1.12.0. #6741
    • โฌ†๏ธ Bump lua-resty-openssl from 0.6.9 to 0.7.2. #6967
    • โฌ†๏ธ Bump kong-plugin-zipkin from 1.2 to 1.3. #6936
    • โฌ†๏ธ Bump kong-prometheus-plugin from 1.0 to 1.2. #6958
    • โฌ†๏ธ Bump lua-cassandra from 1.5.0 to 1.5.1 #6857
    • โฌ†๏ธ Bump luasyslog from 1.0.0 to 2.0.1 #6957

    โž• Additions

    Core
    • ๐Ÿ˜Œ Relaxed version check between Control Planes and Data Planes, allowing Data Planes that are missing minor updates to still connect to the Control Plane. Also, now Data Plane is allowed to have a superset of Control Plane plugins. 6932
    • ๐Ÿ‘ Allowed UTF-8 in Tags 6784
    • โž• Added support for Online Certificate Status Protocol responder found in cluster. 6887
    PDK
    • ๐Ÿ”Œ JavaScript Plugin Development Kit (PDK) is released alongside with Kong 2.4. It allows users to write Kong plugins in JavaScript and TypeScript.
    • ๐Ÿš€ Beta release of Protobuf plugin communication protocol, which can be used in place of MessagePack to communicate with non-Lua plugins. 6941
    • ๐Ÿ”Œ Enabled ssl_certificate phase on plugins with stream module. 6873
    ๐Ÿ”Œ Plugins
    • ๐Ÿ’… Zipkin: support for Jaeger style uber-trace-id headers. 101 Thanks nvx for the patch!
    • ๐Ÿ‘ Zipkin: support for OT headers. 103 Thanks ishg for the patch!
    • Zipkin: allow insertion of custom tags on the Zipkin request trace. 102
    • Zipkin: creation of baggage items on child spans is now possible. 98 Thanks Asafb26 for the patch!
    • ๐Ÿ‘ JWT: Add ES384 support 6854 Thanks pariviere for the patch!
    • ๐Ÿ”Œ Several plugins: capability to set new log fields, or unset existing fields, by executing custom Lua code in the Log phase. 6944

    ๐Ÿ›  Fixes

    Core
    • ๐Ÿ”„ Changed default values and validation rules for plugins that were not well-adjusted for dbless or hybrid modes. 6885
    • Kong 2.4 ensures that all the Core entities are loaded before loading any plugins. This fixes an error in which Plugins to could not link to or modify Core entities because they would not be loaded yet 6880
    • โšก๏ธ If needed, Host header is now updated between balancer retries, using the value configured in the correct upstream entity. 6796
    • ๐ŸŒฒ Schema validations now log more descriptive error messages when types are invalid. 6593 Thanks WALL-E for the patch!
    • Kong now ignores tags in Cassandra when filtering by multiple entities, which is the expected behavior and the one already existent when using Postgres databases. 6931
    • โฌ†๏ธ Upgrade header is not cleared anymore when response Connection header contains Upgrade. 6929
    • Accept fully-qualified domain names ending in dots. 6864
    • Kong does not try to warmup upstream names when warming up DNS entries. 6891
    • Migrations order is now guaranteed to be always the same. 6901
    • โฌ†๏ธ Buffered responses are disabled on connection upgrades. 6902
    • ๐Ÿ‘‰ Make entity relationship traverse-order-independent. 6743
    • โšก๏ธ The host header is updated between balancer retries. 6796
    • The router prioritizes the route with most matching headers when matching headers. 6638
    • ๐Ÿ›  Fixed an edge case on multipart/form-data boundary check. 6638
    • Paths are now properly normalized inside Route objects. 6976
    • Do not cache empty upstream name dictionary. 7002
    • Do not assume upstreams do not exist after init phase. 7010
    • ๐Ÿ”ง Do not overwrite configuration files when running migrations. 7017
    PDK
    • ๐Ÿ”Œ Now Kong does not leave plugin servers alive after exiting and does not try to start them in the unsupported stream subsystem. 6849
    • ๐ŸŒฒ Go does not cache kong.log methods 6701
    • The response phase is included on the list of public phases 6638
    • ๐Ÿ’… Config file style and options case are now consistent all around. 6981
    • โž• Added right protobuf MacOS path to enable external plugins in Homebrew installations. 6980
    • Auto-escape upstream path to avoid proxying errors. 6978
    • Ports are now declared as Int. 6994
    ๐Ÿ”Œ Plugins
    • ๐Ÿ‘ oauth2: better handling more cases of client invalid token generation. 6594 Thanks jeremyjpj0916 for the patch!
    • ๐Ÿ“œ Zipkin: the w3c parsing function was returning a non-used extra value, and it now early-exits. 100 Thanks nvx for the patch!
    • ๐Ÿ›  Zipkin: fixed a bug in which span timestamping could sometimes raise an error. 105 Thanks Asafb26 for the patch!

    Back to TOC