Skip to content

Storage engine for knobz's features flags backed by Consul KV.

License

Notifications You must be signed in to change notification settings

ismriv/knobz-consul

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

knobz-consul

npm version Build Status Dependency Status

Storage engine for knobz's features flags library backed by Consul KV.

Store your feature flags as individual keys under a common prefix (e.g. config/feature-flags), as in the following example.

/
|-- config/
|    |-- feature-flags/
|    |    |-- featureOne
|    |    |-- featureTwo
|    |-- database/
|         |-- mysql
+-- vault/

knobz-consul will then recursively read all keys with the same prefix, parse the value of each key to JSON, and return an array with all the features to be used by knobz.

By default, knobz-consul uses stale consistency mode when reading from Consul KV for higher availability and scalable reads. This mode allows reads without a leader, meaning a cluster that is unavailable will still be able to respond.

Quick Start

Install the module using npm:

npm install knobz-consul --save

Usage example in Node.js:

const knobz = require('knobz');
const knobzConsul = require('knobz-consul')({
  host: '127.0.0.1',
  port: 8500,
  prefix: 'config/feature-flags/'
});

knobz.configure({
  features: knobzConsul.fetchFeatures,
  reloadInterval: 30000
}).then(() => {
  // features have been loaded from Consul KV and will be refreshed every 30s
});

knobzConsul([options])

Initialize a new Knobz's Consul client.

Options

  • host (String, default: 127.0.0.1): agent address
  • port (Integer, default: 8500): agent HTTP(S) port
  • secure (Boolean, default: false): enable HTTPS
  • ca (String, optional): string with trusted certificates in PEM format
  • timeout (Integer, default: 10000): timeout in ms for read requests to Consul KV
  • prefix (String, default: /): prefix used to store the feature flags
  • stripFileExtension (Boolean, default: false): strip file extensions from key name

License

MIT

About

Storage engine for knobz's features flags backed by Consul KV.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published