Document updated on May 13, 2022
Managing the LICENSE file
To run the Enterprise software with all its capabilities you must provide a valid license. When you get a license from sales, its placement and format must comply with what the binary expects.
When the license file is incorrect, KrakenD warns you about it but the server will try to start anyway using the open source engine, and without loading any Enterprise functionality.
The message you will see when the server starts with an invalid or missing license file is:
Term
$krakend run -dec krakend.json
Parsing configuration file: krakend.json
******************************************************
LICENSE ERROR
******************************************************
There is a problem with your license:
open ./LICENSE: no such file or directory
KRAKEND IS RUNNING WITH LIMITED FUNCTIONALITY
The server will start with open-source features only
******************************************************
License file requirements
To start KrakenD Enterprise without seeing the message above, make sure that:
- The file
/etc/krakend/LICENSE
exists - The
LICENSE
file is a plain text file with no extension - It contains the certificate we gave you (it looks like a PEM file)
- The file includes the surrounding
-----BEGIN CERTIFICATE-----
and-----END CERTIFICATE-----
, and you have not deleted any dash or character accidentally, neither you have deleted the line breaks.
Change the location of the LICENSE
The LICENSE
file must be in /etc/krakend/LICENSE
by default, but KrakenD internally looks for ./LICENSE
. It means that the file is inside the working directory. If you would like to store the license in a different location, you can change the WORKDIR
in which KrakenD executes. For intance, let’s load the license from /vault/LICENSE
instead.
We can have a custom Dockerfile
like this one:
FROM krakend/krakend-ee:2.3
WORKDIR /vault
COPY LICENSE .
Storing the LICENSE in the Docker image
See Generating a Docker artifact
Storing the LICENSE in Secret managers
You can store your LICENSE in any secret manager of your choice if you want to. However, ensure that the line breaks are respected when retrieving from the secret manager.
AWS Secrets Manager
One of the particularities of AWS Secrets Manager is that it might have problems when storing multiline contents. Therefore, when working with AWS in plain text, we recommend keeping the LICENSE
content in base64
format.
You can create an AWS secret with your license with this command:
Term
$aws secretsmanager create-secret --name krakend-valid_trough-2023_05_22 --secret-string "$(base64 LICENSE)"
{
"Name": "krakend-valid_trough-2022_05_22",
"ARN": "arn:aws:secretsmanager:eu-west-1:052351007912:secret:krakend-valid_trough-2022_05_22-OISgD6",
"VersionId": "59f7c317-989a-4219-bdd2-b79bead69dd4"
}
Notice that we have added the license’s expiration date to the secret name. A practice like this will help you quickly realize for how long the license/secret is valid.
You can later retrieve the license file in your pipeline file with:
Term
$aws secretsmanager get-secret-value --secret-id krakend-valid_trough-2022_05_22 --query 'SecretString' --output text | base64 -d > LICENSE
Note: Depending on your computer’s operative system, the decoding of base64 might be base64 -D
instead of base64 -d
What happens when the license expires?
Any running processes will shut down when the KrakenD Enterprise license expires.
But you can start the Enterprise binary again with the license expired or missing, and it will run in the open-source mode without any of the Enterprise functionalities.
Updating your license
When your license renewal comes, you need to replace the /etc/krakend/LICENSE
with the new content in each of your servers running KrakenD and restart KrakenD. That’s all!