Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
3.5 KiB

# Consul Developer Documentation
See [our contributing guide](../.github/CONTRIBUTING.md) to get started.
This directory contains documentation intended for anyone interested in
understanding, and contributing changes to, the Consul codebase.
## Overview
This documentation is organized into the following categories. Each category is
either a significant architectural layer, or major functional area of Consul.
These documents assume a basic understanding of Consul's feature set, which can
be found in the public [user documentation].
[user documentation]: https://www.consul.io/docs
![Overview](./overview.svg)
<sup>[source](./overview.mmd)</sup>
## Contents
1. [Command-Line Interface (CLI)](./cli)
1. [HTTP API](./http-api)
1. [Agent Configuration](./config)
1. [RPC](./rpc)
1. [Cluster Persistence](./persistence)
1. [Resources and Controllers](./resources)
1. [Client Agent](./client-agent)
1. [Service Discovery](./service-discovery)
1. [Service Mesh (Connect)](./service-mesh)
1. [Cluster Membership](./cluster-membership)
1. [Key/Value Store](./kv)
1. [ACL](./acl)
1. [Multi-Cluster Federation](./cluster-federation)
Also see the [FAQ](./faq.md).
## Other Docs
1. [Integration Tests](../test/integration/connect/envoy/README.md)
1. [Upgrade Tests](../test/integration/consul-container/test/upgrade/README.md)
1. [Remote Debugging Integration Tests](../test/integration/consul-container/test/debugging.md)
1. [Peering Common Topology Tests](../test-integ/peering_commontopo/README.md)
## Important Directories
Most top level directories contain Go source code. The directories listed below
contain other important source related to Consul.
* [ui] contains the source code for the Consul UI.
* [website] contains the source for [consul.io](https://www.consul.io/). A pull requests
can update the source code and Consul's documentation at the same time.
* [.github] contains the source for our CI and GitHub repository
automation.
* [.changelog] contains markdown files that are used by [hashicorp/go-changelog] to produce the
[CHANGELOG.md].
* [build-support] contains bash functions and scripts used to automate.
development tasks. Generally these scripts are called from the [Makefile].
* [grafana] contains the source for a [Grafana dashboard] that can be used to
monitor Consul.
[ui]: https://github.com/hashicorp/consul/tree/main/ui
[website]: https://github.com/hashicorp/consul/tree/main/website
[.github]: https://github.com/hashicorp/consul/tree/main/.github
[.changelog]: https://github.com/hashicorp/consul/tree/main/.changelog
[hashicorp/go-changelog]: https://github.com/hashicorp/go-changelog
[CHANGELOG.md]: https://github.com/hashicorp/consul/blob/main/CHANGELOG.md
[build-support]: https://github.com/hashicorp/consul/tree/main/build-support
[Makefile]: https://github.com/hashicorp/consul/tree/main/Makefile
[Grafana dashboard]: https://grafana.com/grafana/dashboards
[grafana]: https://github.com/hashicorp/consul/tree/main/grafana
## Contributing to these docs
This section is meta documentation about contributing to these docs.
### Diagrams
The diagrams in these documents are created using the [mermaid-js live editor].
The [mermaid-js docs] provide a complete reference for how to create and edit
the diagrams. Use the [consul-mermaid-theme.json] (paste it into the Config tab
in the editor) to maintain a consistent Consul style for the diagrams.
[mermaid-js live editor]: https://mermaid-js.github.io/mermaid-live-editor/edit/
[mermaid-js docs]: https://mermaid-js.github.io/mermaid/
[consul-mermaid-theme.json]: ./consul-mermaid-theme.json