Kong 2.0.0 released!

Hello, Kong Nation!


After a full year of development since our last major release, we are proud to announce that we have tagged Kong 2.0.0 final!

Kong 2.0 brings major new features such as Hybrid mode, Go language support for plugins and buffered proxying, and much more.

Kong 2.0 also removes the deprecated service mesh functionality, which was been retired in favor of Kuma, as Kong continues to focus on its core gateway capabilities.


:package: Download Kong 2.0.0 today!

For more details about the updated installation, please visit the official docs: https://konghq.com/install.

:arrow_up: The recommended upgrade path is detailed in the 2.0 Upgrade Path

  • :warning: Note that Kong 2.0 drops support for migrating from Kong 0.x, it can only migrate from 1.0.0 upwards. If you’re running 0.x, you can instead migrate first to Kong 1.5.0, a new release we are announcing today alongside Kong 2.0.0 to ease the transition away from 0.x, including better compatibility with the 0.x router behavior and a migration tool for your legacy apis definitions.

What’s new in this release

  • :rocket: Major new features

    • :fireworks: Hybrid mode for management of control-plane and data-plane nodes. This allows running control-plane nodes using a database and have them deliver configuration updates to DB-less data-plane nodes. #5294
    • :fireworks: Buffered proxying - plugins can now request buffered reading of the service response (as opposed to the streaming default), allowing them to modify headers based on the contents of the body #5234
    • :fireworks: Go plugin support - plugins can now be written in Go as well as Lua, through the use of an out-of-process Go plugin server. #5326
  • :gorilla: Core

    • The transformations in DAO schemas now also support on_read, allowing for two-way read/write data transformations between Admin API input/output and database storage. #5100
    • Added threshold attribute for health checks #5206
    • Caches for core entities and plugin-controlled entities (such as credentials, etc.) are now separated, protecting the core entities from cache eviction caused by plugin behavior. #5114
    • Cipher suite was updated to the Mozilla v5 release. #5342
    • Better support for using already existing Cassandra keyspaces when migrating
    • Better log messages when plugin modules fail to load #5357
  • :computer: CLI

    • kong config init now accepts a filename argument #4451
  • :file_folder: Configuration

    • Much improved Nginx directive injection system reducing even further the need for custom Nginx configuration templates 5390
    • Enable reuseport option in the listen directive by default and allow specifying both reuseport and backlog=N in the listener flags. #5332
    • Check existence of lua_ssl_trusted_certificate at startup #5345
  • :gear: Admin API

    • Added /upstreams/<id>/health?balancer_health=1 attribute for detailed information about balancer health based on health threshold configuration #5206
  • :construction_worker_man: PDK

    • New functions kong.service.request.enable_buffering, kong.service.response.get_raw_body and kong.service.response.get_body for use with buffered proxying #5315
  • :electric_plug: Plugins

    • :fireworks: New plugin: ACME - Let’s Encrypt and ACMEv2 integration with Kong! #5333
    • :fireworks: aws-lambda: bumped version to 3.0.1, with a number of new features! #5083
    • :fireworks: prometheus: bumped to version 0.7.0 including major performance improvements #5295
    • zipkin: bumped to version 0.2.1 #5239
    • session: bumped to version 2.2.0, adding authenticated_groups support #5108
    • rate-limiting: added experimental support for standardized headers based on the ongoing RFC draft #5335
    • rate-limiting: added Retry-After header on HTTP 429 responses #5329
    • datadog: report metrics with tags – Thanks mvanholsteijn for the patch! #5154
    • request-size-limiting: added size_unit configuration option. #5214
    • request-termination: add extra check for conf.message before sending response back with body object included. #5202
    • jwt: add X-Credential-Identifier header in response – Thanks davinwang for the patch! #4993
  • :adhesive_bandage: Fixes

    • Correct detection of update upon deleting Targets – Thanks pyrl247 for the patch!
    • Fix declarative config loading of entities with abstract records #5343
    • Fixed behavior of PUT for /certificates #5321
    • Corrected the behavior when overwriting a Service configuration using the url shorthand #5315
    • acl: Fixed error when retrieving ACL by group when consumers share the same group #5322
    • Fixes for use of TLS connections in stream mode #5346
    • Improvements to the Nginx injections system #5390
    • Plus all fixes from Kong 1.5.0 and below!
  • :warning: Removed Service Mesh support - That has been deprecated in Kong 1.4 and made off-by-default already, and the code is now be gone in 2.0. For Service Mesh, we now have Kuma, which is something designed for Mesh patterns from day one, so we feel at peace with removing Kong’s native Service Mesh functionality and focus on its core capabilities as a gateway.

    • As part of service mesh removal, serviceless proxying was removed. You can still set service = null when creating a route for use with serverless plugins such as aws-lambda, or request-termination. #5353
    • Removed the origins property which was used for service mesh. #5351
    • Removed the transparent property which was used for service mesh. #5350
    • Removed the Sidecar Injector plugin which was used for service mesh. #5199

Quick start for major new features

  • Hybrid mode: to get started, please check out our documentation for the feature. It guides you step-by-step for using Kong nodes with separate Control Plane and Data Plane roles and have the Control Plane nodes manage the Kong datastore and update the DB-less Data Plane nodes.

  • Go language support: for Go plugin support, here’s our documentation. You can also refer to the Go PDK reference documentation, as well as check out some of our sample plugins and the go-pluginserver repositories. Note that when using Kong’s binary packages for 2.0.0, Go plugins need to be built with Go 1.13.

:spiral_notepad: Here’s a link to the 2.0.0 Changelog.

:whale: Updated Docker images should be live soon on Docker Hub.

Thank you all for the feedback for the past release candidates, it has been really important to make this the best release ever! :rocket:

Happy Konging! :gorilla: