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.86.0.tgz $ cd centraldogma-0.86.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
Envoy xDS v3 control plane¶
Manage Envoy Listeners, Routes, Clusters and Endpoints as version-controlled YAML.
Edit resources through the Web UI or a YAML-over-HTTP REST API.
Serve them to Envoy and Armeria clients over the gRPC xDS discovery services from the same server port.
See Serving Envoy configuration with the xDS control plane for more information.
Read more¶
- Setting up
- Concepts
- Command-line client
- Java client library
- Templates and Variables
- Better configuration change workflow with Git-to-CD mirroring
- Serving Envoy configuration with the xDS control plane
- Authentication and Access Control
- Known issues
- Release notes
- API documentation
- Source cross-reference
- Questions and answers
- Fork me on GitHub
- Contributing