News KrakenD CE v2.7 released with better rate-limiting and security options

Enterprise Documentation

Recent changes

You are viewing a previous version of KrakenD Enterprise Edition (v2.0) , go to the latest version

Validate your plugin compatibility

Document updated on Aug 22, 2022

The krakend check-plugin command helps you validate the compatibility of your custom plugins that will run in conjunction with KrakenD.

The command compares your plugin’s go.sum file with the libraries initially used to compile the running binary. If there are any incompatibilities between your plugin and KrakenD, it will show a detailed list.

If you integrate this command as part of your CI/CD pipeline, it will exit with a status code 0 when the libraries of your plugin are compatible with KrakenD and with a status code 1 when they are not.

Notice that the check-plugin command does not check the plugin’s validity itself nor need its source code other than the go.sum file.

To get started writing your plugins see:

The krakend check-plugin command accepts the following options:

Usage of KrakenD check 
$./krakend check-plugin -h

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

Version: v2.0

Validates that the active configuration file has a valid syntax to run the service.
Change the configuration file by using the --config flag

  krakend check-plugin [flags]

krakend check-plugin -g 1.17.0 -s ./go.sum

  -f, --format        Dump the commands to update
  -g, --go string     The version of the go compiler used for your plugin (default "1.17.11")
  -h, --help          help for check-plugin
  -l, --libc string   Version of the libc library used
  -s, --sum string    Path to the go.sum file to analize (default "./go.sum")


Use krakend check-plugin in combination with the following flags:

  • -f or --format to let KrakenD suggest you about the go get commands you should launch.
  • -s or --sum to specify the path to the go.sum file of your plugin.
  • -g or --go to specify the Go version you are using to compile the plugin.
  • -l or --libc to specify the libc version installed in the system. The libc version must have the preffix MUSL-, GLIBC-, DARWIN-. For instance, a plugin in Mac Monterrey might use DARWIN-12.2.1, an Alpine container will need something like MUSL-1.2.2, and a Linux box will have GLIBC-2.32. To know your glibc version execute the Find GLIBC script
Checking a failing plugin example 
$krakend check-plugin --go 1.17.7 --libc MUSL-1.2.2 --sum ../plugin-tools/go.sum
15 incompatibility(ies) found...
    have: 1.17.0
    want: 1.16.4
    have: MUSL-1.2.2
    want: GLIBC-2.31
    have: v1.6.3
    want: v1.7.7
    have: v0.13.0
    want: v0.14.0
    have: v0.17.0
    want: v0.18.0
    have: v10.2.0
    want: v10.9.0
    have: v1.3.3
    want: v1.5.2
    have: v1.1.9
    want: v1.1.12
    have: v1.2.0
    want: v1.2.1
    have: v0.0.12
    want: v0.0.14
    have: v0.0.0-20180228061459-e0a39a4cb421
    want: v0.0.0-20180306012644-bacd9c7ef1dd
    have: v0.0.0-20180701023420-4b7aa43c6742
    want: v1.0.2
    have: v1.1.7
    want: v1.2.6
    have: v0.0.0-20200116001909-b77594299b42
    want: v0.0.0-20211004093028-2c5d950f24ef
    have: v0.3.2
    want: v0.3.7

Updating plugin dependencies

A quick attempt to fix your dependencies is to run the command with the -f flag, which will suggest a series of go get commands that you can execute to solve the incompatibilities. For instance:

Fixing dependencies 
$krakend check-plugin -s ~/Downloads/go.sum -f
12 incompatibility(ies) found...
go get[email protected]
go get[email protected]
go get[email protected]+incompatible
go get[email protected]
go get[email protected]
go get[email protected]
go get[email protected]
go get[email protected]
go get[email protected]
go get[email protected]
go get[email protected]
go get[email protected]

Copy and paste the go get commands in your terminal to update the dependencies. The commands are in alphabetical order.

You might need to use the -f several times and use go mod tidy as well.


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.