Today, we are very excited to introduce a new open source project called Konfig to the Cloud 66 family.
What is Konfig?
Konfig is a new open-source project created and maintained by Cloud 66. In a nutshell, Konfig is a Kubernetes friendly Rails configuration gem.
What does that mean? While Rails applications typically read YAML files to load their configurations, Kubernetes is instead good at serving individual configuration values as mounted files via Kubernetes Secrets (assuming of course we don't want to have your secrets in your git repository). We therefore want a configuration system that can read the configuration file from a YAML file (for development environments) or construct configurations from individual files while running in Kubernetes (or production environments) and present the same configuration interface to your application regardless.
Why do I need Konfig?
Initially, Konfig was built by our team to simplify and standardize the way we can retrieve multiple secrets and configurations from secure storage (in our case this is an instance of Vault) and make them available to our applications without requiring any application level changes_._
It was important for us to have non-production environment configurations very very simple to ensure that we could facilitate rapid change iterations; and we found that using basic YAML files with embedded environment variable secrets (specifically non-production secrets) gave us the most utility for this. However, this approach didn't fit very well for production environments and trying to force the same approach everywhere resulted in inefficiencies on at least one end of the spectrum.
We found Konfig very useful for us internally, and have decided to share it as open-source. Hopefully, you will find it helpful too!
How do I use Konfig?
Come on over to https://github.com/cloud66-oss/konfig for full installation instructions and some examples.
We welcome and thank any contributors on this project; so fire up a pull request if you have something to add or a bug to fix.