Welcome to Central Dogma¶
Central Dogma is an open-source highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2. With Central Dogma, you can:
Store your configuration files such as
.json,.yamland.xmlinto a centralized, multi-master replicated, version-controlled repository.Retrieve your configuration using RESTful API, Java library and command-line client.
Let your servers get notified immediately when the configuration files are updated and the new settings are applied without server restarts.
Send a pull request for configuration changes and get it reviewed and merged by teammates; much less chance of making a bad configuration change!
Want a quick tour?¶
Check out the introductory slides:
Give it a try!¶
Download now and give it a try (Java required):
$ tar zxvf centraldogma-0.80.0.tgz $ cd centraldogma-0.80.0/ $ bin/startup <Open http://127.0.0.1:36462/ in your browser for administrative console.>
Using Docker? Launch our image at Github Packages registry:
$ docker run -p 36462:36462 ghcr.io/line/centraldogmaRepository service for textual configuration¶
Primarily designed for storing JSON
Also supports any text formats such as YAML, XML, INI and even JavaScript
Store your start-time and run-time settings, such as:
Application parameters and bean properties
User and IP blacklists
Scheduled maintenance notice
Roll-out and A/B experiment parameters
Rule engine scripts
Highly-available¶
Multi-master replicated
Using Apache ZooKeeper as a replication log queue
Version-controlled¶
Keeps full history of configuration changes in Git repositories.
Can hold a lot more information than in-memory competitors.
Query and notification mechanism¶
Query your JSON files with JSON path.
Watch your files and get notified immediately when they are modified.
Fine-grained access control¶
Pluggable authentication layer
Role-based per-repository permissions
See Authentication and Access Control for more information.
Automated mirroring from an external Git repository¶
Keep your settings in a GitHub or GitLab repository.
Send a pull request to modify the settings and get it reviewed and merged.
Let Central Dogma mirror your settings so they are:
Highly-available
Queryable
Watchable
Access-controlled
Dynamic configuration with templates and variables¶
Use
${vars.varName}syntax to interpolate variables in your configuration filesAccess nested JSON object properties with dot notation (e.g.,
${vars.database.host})Define variables at project, repository, or file level with automatic precedence resolution
Manage environment-specific configurations with variable files (
/vars/dev.json,/vars/prod.json)Preview rendered templates in real-time through the Web UI
Read more¶
- Setting up
- Concepts
- Command-line client
- Java client library
- Templates and Variables
- Better configuration change workflow with Git-to-CD mirroring
- Authentication and Access Control
- Known issues
- Release notes
- API documentation
- Source cross-reference
- Questions and answers
- Fork me on GitHub
- Contributing