All Projects → creditkarma → dynamic-config

creditkarma / dynamic-config

Licence: Apache-2.0 license
A dynamic config library for Node.js implemented in TypeScript

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to dynamic-config

Simple Settings
A simple way to manage your project settings.
Stars: ✭ 165 (+468.97%)
Mutual labels:  consul, configuration-management
Hashi Helper
Disaster Recovery and Configuration Management for Consul and Vault
Stars: ✭ 155 (+434.48%)
Mutual labels:  consul, configuration-management
apollo.net
Apollo配置中心.Net客户端
Stars: ✭ 449 (+1448.28%)
Mutual labels:  configuration-management
consul2istio
Connect Consul registry to Istio Service Mesh.
Stars: ✭ 27 (-6.9%)
Mutual labels:  consul
consul-registration-hook
Hook that can be used for synchronous registration and deregistration in Consul discovery service on Kubernetes or Mesos cluster with Allegro executor
Stars: ✭ 17 (-41.38%)
Mutual labels:  consul
consul-cluster-manager
Consul - based cluster manager that can be plugged into Vert.x ecosystem.
Stars: ✭ 17 (-41.38%)
Mutual labels:  consul
Envoy-Pilot
Envoy xDS Server with Consul
Stars: ✭ 72 (+148.28%)
Mutual labels:  consul
nixops-tutorial
Tutorial for practical deployments with NixOps
Stars: ✭ 93 (+220.69%)
Mutual labels:  configuration-management
trimmer
An editor, build and player configuration framework for the Unity game engine.
Stars: ✭ 56 (+93.1%)
Mutual labels:  configuration-management
agollo
🚀Go client for ctrip/apollo (https://github.com/apolloconfig/apollo)
Stars: ✭ 563 (+1841.38%)
Mutual labels:  configuration-management
deadman-check
Monitoring companion for Nomad periodic jobs and Cron
Stars: ✭ 49 (+68.97%)
Mutual labels:  consul
hazelcast-consul-discovery-spi
Consul based discovery strategy SPI for Hazelcast enabled applications
Stars: ✭ 47 (+62.07%)
Mutual labels:  consul
opensvc
The OpenSVC node agent
Stars: ✭ 27 (-6.9%)
Mutual labels:  configuration-management
vault-load-testing
Automated load tests for Vault and Consul using the locust.io Python framework
Stars: ✭ 44 (+51.72%)
Mutual labels:  consul
hcat
Hashicorp Configuration and Templating library (hcat, pronounced hashicat)
Stars: ✭ 89 (+206.9%)
Mutual labels:  consul
100 Days Of Go
100 days of Go learning
Stars: ✭ 24 (-17.24%)
Mutual labels:  consul
learn-layer5
A sample application for learning how to service mesh and for validating SMI conformance
Stars: ✭ 43 (+48.28%)
Mutual labels:  consul
holo
Minimalistic configuration management
Stars: ✭ 88 (+203.45%)
Mutual labels:  configuration-management
configi.old
Bloat-free configuration management
Stars: ✭ 35 (+20.69%)
Mutual labels:  configuration-management
promcr
Prometheus auto discovery based on node host Prometheus基于主机的自动发现
Stars: ✭ 17 (-41.38%)
Mutual labels:  consul

Dynamic Config

A dynamic configuration library for Node.js written in TypeScript.

Application configuration can be an unnecessarily complicated problem when working in large distributed systems across multiple runtimes. Gaining consensus about what configuration needs to do, what it needs to look like and how it interfaces with a specific runtime can be nearly impossible. Dynamic Config is designed to be highly adaptable to a variety of requirements. It is built on a plugin architecture that allows it to be adapted further. Beyond this, it handles local configuration files in a way consistent with other popular Node config libraries.

Plugable

Plugins for Dynamic Config provide extensible support for loading local file types, talking to remote data stores and transforming/validating config structures.

File Types

Support for config file types is added through plugins. Dynamic Config comes with plugins for js, ts, json and yaml files. It is easy to add support for additional file types.

Remote Data Sources

Dynamic Config also supports remote data sources through plugins. The included plugins include clients for pulling values from Hashicorp Consul and Vault. The plugin interface is also used for adding support for environment variables and command line arguments.

Transformation

The third kind of plugin is something we call a translator. When raw config values are loaded, either form local files or remote sources, you can use translators to transform the structure of the raw data before it is added to the resolved config object.

Validation

The fourth thing we can do is validate the structure of our config. This is done by mapping keys in the config to JSON schema.

Promise-based

When requesting a value from Dynamic Config a Promise of the expected result is returned. If the value is found the Promise is resolved. If the value is not found, either because it is missing or some other error, the Promise is rejected with an error describing why the value may be missing.

Table of Contents

Contributing

For more information about contributing new features and bug fixes, see our Contribution Guidelines.

License

This project is licensed under Apache License Version 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].