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!
Check out the introductory slides:
|download| now and give it a try (Java required):
$ tar zxvf centraldogma-|release|.tgz $ cd centraldogma-|release|/ $ 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/centraldogma- 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
- Multi-master replicated
- Using Apache ZooKeeper as a replication log queue
- Keeps full history of configuration changes in Git repositories.
- Can hold a lot more information than in-memory competitors.
- Query your JSON files with JSON path.
- Watch your files and get notified immediately when they are modified.
- Pluggable authentication layer
- Role-based per-repository permissions
- See :ref:`auth` for more information.
- 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
- Use
${vars.varName}syntax to interpolate variables in your configuration files - Access 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
- 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 :ref:`xds` for more information.
.. toctree::
:maxdepth: 2
setup
concepts
client-cli
client-java
templates-variables
mirroring
xds
auth
known-issues
Release notes <https://github.com/line/centraldogma/releases>
API documentation <apidocs/index.html#://>
Source cross-reference <xref/index.html#://>
Questions and answers <https://github.com/line/centraldogma/issues?q=label%3Aquestion-answered>
Fork me on GitHub <https://github.com/line/centraldogma>
Contributing <https://github.com/line/centraldogma/blob/main/CONTRIBUTING.md>