News KrakenD EE v2.9 released: Redis Cluster Support, LRU, WebSockets Upgrades & More!

Product UpdatesSecurity

5 min read

KrakenD EE v2.9 released: Redis Cluster Support, LRU, WebSockets Upgrades & More!

by Albert Lombarte

We’re excited to announce the release of KrakenD Enterprise Edition (EE) 2.9, packed with powerful new features and enhancements across a lot of components. This release brings greater flexibility, caching improvements, Redis Cluster support, enhanced WebSockets, and more. See below the most relevant changes.

More data on the sequential proxy

The sequential proxy was limited to passing previous calls’ data to the next call’s URL. Now you can propagate parameters or the entire body response of previous calls, allowing more flexibility when passing data from one backend to the other. The limitation of passing data only on the url_pattern is now history. See an example of passing a previous body to the next call.

The sequential has also been reworked to improve its performance.

Automatically generate boilerplate for Go plugins

Developers writing custom plugins will be delighted with the new krakend plugin init command that generates the necessary source code to work with custom plugins, accelerating development and customization. It produces the .go and Makefile of the steps needed to stop worrying about plugin compilation. The generated source code implements every possible interface and includes examples and comments to accelerate your adoption.

See the new Plugin generator

Redis cluster support for rate limiting

The Redis configuration extends its connection options to onboard Redis Clusters, making it easier to distribute rate limits across multiple Redis nodes. You can add clusters in addition to the existing connection_pools declaration.

See the Redis cluster configuration

Enhanced LRU Caching Mechanism

A new LRU Cache is now available, providing better memory management and control. When you add the two attributes below, you control the amount of content you allow the system to cache, and it also enables the LRU algorithm (Least Recently Used) to rotate items once the capacity is full.

  • max_size: Defines the maximum cache size.
  • max_items: Limits the number of stored items.

Offline linter support

The KrakenD linter can now work without an internet connection using the --lint-no-network flag. The new flag accelerates the execution in CI/CD pipelines and allows customers in air-gapped environments to lint the configurations offline.

Replace krakend check --lint by --lint-no-network.

From plugin to native component

We are continuing to migrate the few pending Enterprise plugins to convert them to native components. In this release:

  • content-replacer: Now implemented as modifier/response-body, offering expanded features.
  • minimum-response: Replaced by validation/response-json-schema for response validation.

WebSockets enhancements

The WebSockets and gRPC components have received enhancements, like enabling header propagation in direct connections, supporting binary communication transparently, or adding custom subprotocols to integrate technologies like Streamlit.

The release contains more changes, which you can see below. Ready to upgrade?

🚀 Summary of changes for EEv2.9

  • The sequential proxy can now propagate parameters or the entire body response of previous calls. It has also been reworked to improve its performance.
  • Added a new plugin generator command krakend plugin init that generates all the boilerplate necessary to work with plugins
  • Support for Redis Clusters in the Redis Service Rate Limit
  • Added an LRU Cache with max_size and max_items attributes.
  • The linter can work now offline with --lint-no-network or can use a custom schema with --lint-schema
  • Lua functions now include a headerList helper to set headers with multiple values.
  • Lua function http_response has been added to the modifier/lua-endpoint add more flexibility.
  • Lua’s debug.dump() function can now dump a native http_response object.
  • The plugin content-replacer is now implemented as a native component modifier/response-body with more features
  • The plugin response-schema-validator is now implemented as a native component validation/response-json-schema
  • WebSockets direct connection supports now header propagation.
  • WebSockets supports now binary WS transparently and allows custom subprotocols (e.g., Streamlit support).
  • The audit command has added new rules.
  • In the gRPC client when one of the inputs for a well known type of Timestamp or Duration is a string instead of fields, you can treat the string as a RFC3339 time value for Timestamp, or a duration string.
  • Added support for insecure HTTP connections on OpenTelemetry (as opposed to only HTTPS)
  • New attribute input_assume_bytes in the gRPC client.
  • Fix message type presence on gRPC
  • Corrected OpenTelemetry bug where the value of router errors was always 404 even if it was a 405
  • The attribute use_h2c under the router entry was deprecated in previous versions and has been removed. Place it at the root level instead.
  • The parameter connection_pool in the Redis rate limit configuration has been renamed to connection_name to support the addition of Redis clusters. The old parameter will be removed in future versions.
  • The plugin response-schema-validator has been deprecated and replaced by the native component validation/response-json-schema (See migration notes). The old plugin will be removed in future versions.
  • The plugin content-replacer has been deprecated and replaced by the native component modifier/response-body (See migration notes). The old plugin will be removed in future versions.
  • The public_key and private_key fields in the tls configuration were deprecated in the previous version and have been removed. Migrate to the newer syntax
  • The commands krakend generate openapi and krakend generate from openapi were deprecated on 2.3 and have been removed. Please use the command krakend openapi instead.
  • The commands krakend check-plugin and krakend test-plugin are deprecated and will be removed. Please rename them to krakend plugin check and krakend plugin test, no functionality changes.
  • Upgraded go to 1.22.12
  • Upgrade Docker image base to Alpine 3.21

Upgrading to the latest version is always advised.

Scarf

Stay up to date with KrakenD releases and important updates