Skip to main content
Loading

Providing the Feature-Key File

Overviewโ€‹

This page describes the feature-key file and how to use it.

The feature-key file is a cryptographically-signed list of enabled server features, issued upon purchase of a paid version of Aerospike Database. Aerospike Database Enterprise Edition (EE) and Aerospike Database Standard Edition (SE) require a feature-key file to start up. Aerospike Database Community Edition (CE) does not use a feature-key file.

Starting with Database 6.1, a default feature-key file is included with Aerospike EE. This feature-key file provides a single-node evaluation for developers, so customers should swap in their production feature-key file before deploying to production.

If the server cannot find the feature-key file, it exits early in its startup sequence with the following log message:

Apr 09 2021 06:35:12 GMT: CRITICAL (config): (features_ee.c:142) failed to get feature-key /etc/aerospike/features.conf

Loading the feature-key fileโ€‹

The server can load the feature-key file from the following sources:

  • The filesystem
  • An environment variable
  • HashiCorp Vault
  • An external secrets management service using Aerospike Secret Manager

From the filesystemโ€‹

The default path to the feature-key file is /etc/aerospike/features.conf. If you want to use a different file location, you can add the feature-key-file configuration parameter to the service stanza.

service {
feature-key-file /path/to/feature-key.conf
}

The path can also be a directory, where all the files it contains are feature-key files. The server checks each one for validity and expiration, and merges valid ones into its feature set. This feature is useful for limited-time trials of new features.

service {
feature-key-file /path/to/feature-key.d/
}

The feature-key directory behavior was added in Database 5.5.

note

If multiple feature-key files include asdb-cluster-nodes-limit, the highest non-zero value restricts the cluster size.

From an environment variableโ€‹

You can set the feature-key file in an environment variable as a base64-encoded secret.

export MY_FEATURE_FILE=$(base64 ~/evaluation-features.conf)

Now configure the feature-key-file parameter to load the secret from the environment variable. The prefix env-b64: is a literal string.

service {
feature-key-file env-b64:MY_FEATURE_FILE
}

From HashiCorp Vaultโ€‹

The server can fetch the feature-key file from HashiCorp Vault servers, such as HCP Vault. The prefix vault: is a literal string.

service {
feature-key-file vault:feature-key
}

See Fetching secrets from Vault for more information.

From Aerospike Secret Agentโ€‹

In Database 6.4 and later, the server can use Aerospike Secret Agent to fetch from a secrets management service, such as AWS Secrets Manager.

The configuration parameter must follow the format secrets:[resource:]secret_name. The prefix secrets: is a literal string.

service {
feature-key-file secrets:TestingSecret:FeatureKey
...
}

For more information, see Integrating with secrets management services.

Updating the contents or location of the feature-key fileโ€‹

If you get a new feature-key file and put it in the same location (so the file path remains identical) you do not need to update the feature-key-file configuration parameter. If the path changes, you must update the parameter with the new path whether or not the contents of the file change.

The server reads the feature-key file at startup. To refresh and read from the new file, perform a rolling restart of your cluster. Do not wait too long to restart the cluster after an update, because if a node restarts unexpectedly it could result in a prolonged feature mismatch between nodes.