News KrakenD v2.9.2 and v2.9.3 security releases

Document updated on Feb 5, 2025

Automatically generate boilerplate for Go plugins

The command krakend plugin init generates the necessary boilerplate code to start working with plugins. This command provides a structured starting point for plugin development, ensuring that the required interfaces are included from the outset.

By using this command, you can focus on writing the plugin logic without manually creating the files for each possible interface or setting up the build environment. The recommended workflow involves running KrakenD inside a container while mounting the directory where the plugin code will be generated. You must map the KrakenD Enterprise license into the container for successful execution.

This is how the command looks like:

Plugin init command 

$krakend plugin init -h

╓▄█                          ▄▄▌                               ╓██████▄µ
▐███  ▄███╨▐███▄██H╗██████▄  ║██▌ ,▄███╨ ▄██████▄  ▓██▌█████▄  ███▀╙╙▀▀███╕
▐███▄███▀  ▐█████▀"╙▀▀"╙▀███ ║███▄███┘  ███▀""▀███ ████▀╙▀███H ███     ╙███
▐██████▌   ▐███⌐  ,▄████████M║██████▄  ║██████████M███▌   ███H ███     ,███
▐███╨▀███µ ▐███   ███▌  ,███M║███╙▀███  ███▄```▄▄` ███▌   ███H ███,,,╓▄███▀
▐███  ╙███▄▐███   ╙█████████M║██▌  ╙███▄`▀███████╨ ███▌   ███H █████████▀
                     ``                     `'`

Version: 2.9.3-ee

Generates the necessary boilerplate to develop a new plugin

Usage:
 krakend plugin init [flags]

Examples:
 krakend plugin init --type handler --name myplugin

Flags:
 -h, --help          help for init
 -n, --name string   Plugin name
 -o, --out string    Output path. Default value: <type>-<name>
 -t, --type string   Plugin type. One of: handler, client, modifier (default "handler")

To build and compile a plugin, follow the steps below.

1. Generate the go code

For instance, let’s build a plugin named myplugin of the handler type. Notice that this is a KrakenD image.

Generate a plugin 

$docker run --rm -it \
 -w /app \
 -e "KRAKEND_LICENSE_PATH=/LICENSE"\
 -v "$PWD/LICENSE:/LICENSE:ro"
 -v "$PWD/plugins:/app" \
 krakend/krakend-ee:2.9.3 plugin init --name myplugin --type handler

The command above assumes you have a LICENSE file in the current directory.

This is what you get:

  • A new folder plugins/handler-myplugin with the source code
  • Inside, a file myplugin.go that implements the complete interface of the chosen plugin type
  • A Makefile to compile your plugin (not in this container)

2. Initialize Go modules

With the source files ready, you should start with the Go modules setup. The following command must be executed in the KrakenD builder image.

Initialize go modules 

$cd plugins/handler-myplugin
docker run -it -v $PWD:/app -w /app krakend/builder-ee:2.9.3 make go.mod

3. Compile the plugin

With the source files ready, you can compile the plugin. The following commands assume that you want to run this plugin inside the official image krakend/krakend-ee:2.9.3 or in a Docker file that extends FROM this one.

Compile the plugin 

$docker run -it -v $PWD:/app -w /app krakend/builder-ee:latest make amd64

This will generate the compiled plugin binary myplugin-amd64.so compatible with KrakenD running on AMD64 Docker.

Compilation for non-Docker
Use the image krakend/builder-ee::2.9.3-linux-generic to compile your plugins that run in a non-Docker environment. In addition, if your architecture is ARM64 you must edit the Makefile and switch the commented CROSSCOMPILER variable.

4. Inject the plugin and run

Now, you should inject the plugin in your configuration and run KrakenD.

Unresolved issues?

The documentation is only a piece of the help you can get! Whether you are looking for Open Source or Enterprise support, see more support channels that can help you.

See all support channels