By on July 5, 2018

Announcing Kong CE 0.14.0 – including Zipkin, Prometheus, and More!

Our teams and contributors have been hard at work over the last couple of months. We’ve made efforts to bring many new features helping Kong to better integrate in modern cloud environments.

We are thrilled to announce the release of Kong CE 0.14.0!  This is our largest release to date by number of new features, new integrations, and bug fixes. Over the next few weeks, we’ll follow up with subsequent posts detailing the features in depth.

CE 0.14.0

The highlights of the 0.14.0 release are:

  • 🎆 The first version of the Plugin Development Kit, a new standardized and forward-compatible way of writing plugins.
  • 🎆 Four new bundled (and open source) plugins, helping Kong better integrate with Cloud Native environments:
  • 🎆 Dynamically injected Nginx directives, which will reduce the need for custom Nginx templates.
  • Plugins are now executed on Nginx-produced errors (HTTP 4xx or 5xx), which allows logging plugins to report them.
  • Support for PUT requests in the Admin API’s modern endpoints (Services/Routes/Consumers/Certificates).
  • And a lot of bug fixes!

If you are already running Kong, read the 0.14 Upgrade Path for a complete list of breaking changes, and suggested upgrade path.

Plugin Development Kit

Making plugins easy to write and safe has been a long-term goal of Kong. The Plugin Development Kit (or “PDK”) is a new step towards this goal and simplifies the work of plugin authors. The PDK is a set of Lua functions and variables that provides a standardized and forward-compatible way of writing plugins:

In a nutshell, the PDK will offer a number of benefits:

  • Standardization. The PDK aims at providing all functionality plugins may need under a single umbrella, and all plugins using it are more likely to behave similarly (same parsing rules, same errors, etc…).
  • Usability. The high-level abstractions provided by the PDK should be (we hope!) simpler to use than the bare-bones ngx_lua API.
  • Isolation. Typical plugin operations such as logging or caching can be done in isolation from other plugins.
  • Forward-compatibility. Our goal is to maintain backwards-compatibility of the PDK, and as such, we made it a semver-versionned component, and plugins will in the future be able to lock the PDK version they depend upon.

To provide a concrete example, we also refactored Kong’s key-auth plugin to use the PDK. Moving forward, we are hoping to update all bundled plugins to use the PDK. And yes, we are definitely welcoming contributions helping us reach this goal!

You will be able to browse the complete list of functions and variables online, in Plugin Development Kit Reference we are coming up with. We will also be publishing another blob post to deep-dive into the PDK in the following weeks, so stay tuned!

Injected Nginx directives

Do you find yourself maintaining an Nginx configuration template to tweak a few directives to your needs? While they do allow for powerful customization, custom Nginx templates can be challenging to write and maintain.

Enters dynamically-injected Nginx directives. The simplest way to describe them is probably by example. Say we want to increase the value for our large_client_header_buffers setting. By specifying the following value in our kong.conf file:

the large_client_header_buffers directives will be injected in the proxy server block of the Nginx configuration. Specifying such directives via an environment variable is also supported:

Another blog post will go into the details of injected Nginx directives, and our online Configuration Reference will also be updated with a complete user guide.

And more…

A lot more can be said about Kong CE 0.14.0, and more blog posts will be coming soon to deep-dive into some of its shiniest new features. In the meantime, try CE 0.14 and jump into the conversation on Kong Nation – let us know what you think!

Happy Konging!

Share Post: