Add some config entry docs (#5808)

* Add some config entry docs

* Update website/source/docs/agent/config_entries.html.md

Co-Authored-By: mkeeler <mkeeler@users.noreply.github.com>

* Update website/source/docs/agent/config_entries.html.md

Co-Authored-By: mkeeler <mkeeler@users.noreply.github.com>

* Get rid of double negative

* Some incremental updates

* Update the config list docs to not point to service-default related things.

* A few more doc updates to get rid of some service-defaults specific linking info in the cli docs

* In progress update

* Update website/source/docs/agent/config_entries.html.md

Co-Authored-By: mkeeler <mkeeler@users.noreply.github.com>

* Reword bootstrap section

* Update example proxy-defaults config

* Finish up the examples section for managing config entries with the CLI

* Update website/source/docs/agent/config_entries.html.md

Co-Authored-By: mkeeler <mkeeler@users.noreply.github.com>

* Use $ for shell command start

* Make it very clear that the normal way to manage things is via the API/CLI

* Update website/source/docs/agent/options.html.md

Co-Authored-By: mkeeler <mkeeler@users.noreply.github.com>
This commit is contained in:
Matt Keeler 2019-05-08 16:19:37 -04:00 committed by GitHub
parent 39a1fc62bb
commit 5385e31fc5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 202 additions and 65 deletions

View file

@ -12,8 +12,9 @@ description: |-
The `/config` endpoints create, update, delete and query central configuration The `/config` endpoints create, update, delete and query central configuration
entries registered with Consul. See the entries registered with Consul. See the
[agent configuration](/docs/agent/options.html#enable_central_service_config) [agent configuration](/docs/agent/options.html#enable_central_service_config)
for more information on how to enable this functionality for centrally for more information on how to enable this functionality for centrally
configuring services. configuring services and [configuration entries docs](/docs/agent/config_entries.html) for a description
of the configuration entries content.
## Apply Configuration ## Apply Configuration
@ -46,9 +47,9 @@ The table below shows this endpoint's support for
the datacenter of the agent being queried. This is specified as part of the the datacenter of the agent being queried. This is specified as part of the
URL as a query parameter. URL as a query parameter.
- `cas` `(int: 0)` - Specifies to use a Check-And-Set operation. If the index is - `cas` `(int: 0)` - Specifies to use a Check-And-Set operation. If the index is
0, Consul will only store the entry if it does not already exist. If the index is 0, Consul will only store the entry if it does not already exist. If the index is
non-zero, the entry is only set if the current index matches the `ModifyIndex` non-zero, the entry is only set if the current index matches the `ModifyIndex`
of that entry. of that entry.
### Sample Payload ### Sample Payload
@ -59,9 +60,6 @@ The table below shows this endpoint's support for
"Kind": "service-defaults", "Kind": "service-defaults",
"Name": "web", "Name": "web",
"Protocol": "http", "Protocol": "http",
"Connect": {
"SidecarProxy": false
}
} }
``` ```
@ -106,10 +104,10 @@ The table below shows this endpoint's support for
URL as a query parameter. URL as a query parameter.
- `kind` `(string: <required>)` - Specifies the kind of the entry to read. This - `kind` `(string: <required>)` - Specifies the kind of the entry to read. This
is specified as part of the URL. is specified as part of the URL.
- `name` `(string: <required>)` - Specifies the name of the entry to read. This - `name` `(string: <required>)` - Specifies the name of the entry to read. This
is specified as part of the URL. is specified as part of the URL.
### Sample Request ### Sample Request
@ -126,9 +124,6 @@ $ curl \
"Kind": "service-defaults", "Kind": "service-defaults",
"Name": "web", "Name": "web",
"Protocol": "http", "Protocol": "http",
"Connect": {
"SidecarProxy": true
},
"CreateIndex": 15, "CreateIndex": 15,
"ModifyIndex": 35 "ModifyIndex": 35
} }
@ -166,7 +161,7 @@ The table below shows this endpoint's support for
URL as a query parameter. URL as a query parameter.
- `kind` `(string: <required>)` - Specifies the kind of the entry to list. This - `kind` `(string: <required>)` - Specifies the kind of the entry to list. This
is specified as part of the URL. is specified as part of the URL.
### Sample Request ### Sample Request
@ -184,9 +179,6 @@ $ curl \
"Kind": "service-defaults", "Kind": "service-defaults",
"Name": "db", "Name": "db",
"Protocol": "tcp", "Protocol": "tcp",
"Connect": {
"SidecarProxy": false
},
"CreateIndex": 16, "CreateIndex": 16,
"ModifyIndex": 16 "ModifyIndex": 16
}, },
@ -194,9 +186,6 @@ $ curl \
"Kind": "service-defaults", "Kind": "service-defaults",
"Name": "web", "Name": "web",
"Protocol": "http", "Protocol": "http",
"Connect": {
"SidecarProxy": true
},
"CreateIndex": 13, "CreateIndex": 13,
"ModifyIndex": 13 "ModifyIndex": 13
} }
@ -235,10 +224,10 @@ The table below shows this endpoint's support for
URL as a query parameter. URL as a query parameter.
- `kind` `(string: <required>)` - Specifies the kind of the entry to delete. This - `kind` `(string: <required>)` - Specifies the kind of the entry to delete. This
is specified as part of the URL. is specified as part of the URL.
- `name` `(string: <required>)` - Specifies the name of the entry to delete. This - `name` `(string: <required>)` - Specifies the name of the entry to delete. This
is specified as part of the URL. is specified as part of the URL.
### Sample Request ### Sample Request

View file

@ -0,0 +1,160 @@
---
layout: "docs"
page_title: "Configuration Entry Definitions"
sidebar_current: "docs-agent-cfg_entries"
description: |-
Consul allows storing configuration entries centrally to be used as defaults for configuring other aspects of Consul.
---
# Configuration Entries
Configuration entries can be created to provide cluster-wide defaults for various aspects of Consul. Every configuration
entry has at least two fields: `Kind` and `Name`. Those two fields are used to uniquely identify a configuration entry.
When put into configuration files, configuration entries can be specified as HCL or JSON objects.
Example:
```hcl
Kind = "<supported kind>"
Name = "<name of entry>"
```
The two supported `Kind` configuration entries are detailed below.
## Configuration Entry Kinds
### Proxy Defaults - `proxy-defaults`
Proxy defaults allow for configuring global config defaults across all services for Connect proxy configuration. Currently,
only one global entry is supported.
```hcl
Kind = "proxy-defaults"
Name = "global"
Config {
local_connect_timeout_ms = 1000
handshake_timeout_ms = 10000
}
```
* `Kind` - Must be set to `proxy-defaults`
* `Name` - Must be set to `global`
* `Config` - An arbitrary map of configuration values used by Connect proxies. See
#### Proxy Configuration References
* [Consul's Builtin Proxy](/docs/connect/configuration.html#built-in-proxy-options)
* [Envoy](/docs/connect/proxies/envoy.html#bootstrap-configuration)
### Service Defaults - `service-defaults`
Service defaults control default global values for a service, such as its protocol.
```hcl
Kind = "service-defaults"
Name = "web"
Protocol = "http"
```
* `Kind` - Must be set to `service-defaults`
* `Name` - Set to the name of the service being configured.
* `Protocol` - Sets the protocol of the service. This is used by Connect proxies for things like observability features.
## Managing Configuration Entries
Configuration entries should be managed with the Consul [CLI](/docs/commands/config.html) or [API](/api/config.html). Additionally,
as a convenience for initial cluster bootstrapping, configuration entries can be specified in all of the Consul servers's
[configuration files](/docs/agent/options.html#config_entries_bootstrap)
### Managing Configuration Entries with the CLI
#### Creating or Updating a Configuration Entry
The [`consul config write`](/docs/commands/config/write.html) command is used to create and update configuration entries. This command
will load either a JSON or HCL file holding the configuration entry definition and then will push this configuration to Consul.
Example HCL Configuration File - `proxy-defaults.hcl`:
```hcl
Kind = "proxy-defaults"
Name = "global"
Config {
local_connect_timeout_ms = 1000
handshake_timeout_ms = 10000
}
```
Then to apply this configuration, run:
```bash
$ consul config write proxy-defaults.hcl
```
If you need to make changes to a configuration entry, simple edit that file and then rerun the command.
This command will not output anything unless there is an error in applying the configuration entry.
The `write` command also supports a `-cas` option to enable performing a compare-and-swap operation to
prevent overwriting other unknown modifications.
#### Reading a Configuration Entry
The [`consul config read`](/docs/commands/config/read.html) command is used to read the current value of a configuration entry. The
configuration entry will be displayed in JSON form which is how its transmitted between the CLI client and Consul's HTTP API.
Example:
```bash
$ consul config read -kind service-defaults -name web
{
"Kind": "service-defaults",
"Name": "web",
"Protocol": "http"
}
```
#### Listing Configuration Entries
The [`consul config list`](/docs/commands/config/list.html) command is used to list out all the configuration entries for a
given kind.
Example:
```bash
$ consul config list -kind service-defaults
web
api
db
```
#### Deleting Configuration Entries
The [`consul config delete`](/docs/commands/config/delete.html) command is used to delete an entry by specifying both its
`kind` and `name`.
Example:
```bash
$ consul config delete -kind service-defaults -name web
```
This command will not output anything when the deletion is successful.
### Bootstrapping From A Configuration File
Configuration entries can be bootstrapped by adding them inline to each Consul servers configuration file. When a server
gains leadership, it will attempt to initialize the configuration entries. If a configuration entry does not already exist
outside of the servers configuration, then it will create it. If a configuration entry does exist, that matches both `kind`
and `name`, then the server will do nothing.
## Using Configuration Entries For Service Defaults
When the agent is [configured](/docs/agent/options.html#enable_central_service_config) to enable central service configurations,
it will look for service configuration defaults that match a registering service instance. If it finds any, the agent will merge
those defaults with the service instance configuration. This allows for things like service protocol or proxy configuration to
be defined globally and inherited by any affected service registrations.

View file

@ -821,15 +821,14 @@ default will automatically work with some tooling.
The following sub-keys are available: The following sub-keys are available:
* <a name="bootstrap"></a><a href="#config_entries_bootstrap">`bootstrap`</a> * <a name="config_entries_bootstrap"></a><a href="#config_entries_bootstrap">`bootstrap`</a>
This object allows configuring centralized config entries to be bootstrapped This is a list of inlined config entries to insert into the state store when the Consul server
by the leader. These entries will be reloaded during an agent config reload. gains leadership. This option is only applicable to server nodes. Each bootstrap
entry will be created only if it does not exist. When reloading, any new entries
that have been added to the configuration will be processed. See the
[configuration entry docs](/docs/agent/config_entries.html) for more details about the
contents of each entry.
The following sub-keys are available:
* <a name="proxy_defaults"></a><a href="#config_entries_bootstrap_proxy_defaults">`proxy_defaults`</a>
This object should contain a mapping of config entry names to an opaque proxy configuration mapping.
Currently the only supported name is `global`
* <a name="connect"></a><a href="#connect">`connect`</a> * <a name="connect"></a><a href="#connect">`connect`</a>
This object allows setting options for the Connect feature. This object allows setting options for the Connect feature.
@ -1120,12 +1119,10 @@ default will automatically work with some tooling.
be checked using the agent's credentials. This was added in Consul 1.0.1 and defaults to false. be checked using the agent's credentials. This was added in Consul 1.0.1 and defaults to false.
* <a name="enable_central_service_config"></a><a href="#enable_central_service_config">`enable_central_service_config`</a> * <a name="enable_central_service_config"></a><a href="#enable_central_service_config">`enable_central_service_config`</a>
When set, the Consul agent will look for any centralized service configurations that match a registering service instance. When set, the Consul agent will look for any centralized service configurations that match a registering service instance.
If it finds any, the agent will merge the centralized defaults with the service instance configuration. This allows for If it finds any, the agent will merge the centralized defaults with the service instance configuration. This allows for
things like service protocol or proxy configuration to be defined centrally and inherited by any things like service protocol or proxy configuration to be defined centrally and inherited by any
affected service registrations. affected service registrations.
* <a name="enable_debug"></a><a href="#enable_debug">`enable_debug`</a> When set, enables some * <a name="enable_debug"></a><a href="#enable_debug">`enable_debug`</a> When set, enables some
additional debugging features. Currently, this is only used to access runtime profiling HTTP endpoints, which additional debugging features. Currently, this is only used to access runtime profiling HTTP endpoints, which

View file

@ -9,11 +9,12 @@ sidebar_current: "docs-commands-config"
Command: `consul config` Command: `consul config`
The `config` command is used to interact with Consul's central configuration The `config` command is used to interact with Consul's central configuration
system. It exposes commands for creating, updating, reading, and deleting system. It exposes commands for creating, updating, reading, and deleting
different kinds of config entries. See the different kinds of config entries. See the
[agent configuration](/docs/agent/options.html#enable_central_service_config) [agent configuration](/docs/agent/options.html#enable_central_service_config)
for more information on how to enable this functionality for centrally for more information on how to enable this functionality for centrally
configuring services. configuring services and [configuration entries docs](/docs/agent/config_entries.html) for a description
of the configuration entries content.
## Usage ## Usage

View file

@ -8,11 +8,9 @@ sidebar_current: "docs-commands-config-delete"
Command: `consul config delete` Command: `consul config delete`
The `config delete` command deletes the configuration entry The `config delete` command deletes the configuration entry specified by the
specified by the kind and name. See the kind and name. See the [configuration entries docs](/docs/agent/config_entries.html)
[agent configuration](/docs/agent/options.html#enable_central_service_config) for more details about configuration entries.
for more information on how to enable this functionality for centrally
configuring services.
## Usage ## Usage

View file

@ -9,10 +9,8 @@ sidebar_current: "docs-commands-config-list"
Command: `consul config list` Command: `consul config list`
The `config list` command lists all given config entries of the given kind. The `config list` command lists all given config entries of the given kind.
See the See the [configuration entries docs](/docs/agent/config_entries.html) for more
[agent configuration](/docs/agent/options.html#enable_central_service_config) details about configuration entries.
for more information on how to enable this functionality for centrally
configuring services.
## Usage ## Usage

View file

@ -8,11 +8,10 @@ sidebar_current: "docs-commands-config-read"
Command: `consul config read` Command: `consul config read`
The `config read` command reads the config entry specified by the given The `config read` command reads the config entry specified by the given
kind and name and outputs its JSON representation. See the kind and name and outputs its JSON representation. See the
[agent configuration](/docs/agent/options.html#enable_central_service_config) [configuration entries docs](/docs/agent/config_entries.html) for more
for more information on how to enable this functionality for centrally details about configuration entries.
configuring services.
## Usage ## Usage
@ -35,9 +34,6 @@ Usage: `consul config read [options]`
"Kind": "service-defaults", "Kind": "service-defaults",
"Name": "web", "Name": "web",
"Protocol": "http", "Protocol": "http",
"Connect": {
"SidecarProxy": false
},
"CreateIndex": 13, "CreateIndex": 13,
"ModifyIndex": 13 "ModifyIndex": 13
} }

View file

@ -9,10 +9,8 @@ sidebar_current: "docs-commands-config-write"
Command: `consul config write` Command: `consul config write`
The `config write` command creates or updates a centralized config entry. The `config write` command creates or updates a centralized config entry.
See the See the [configuration entries docs](/docs/agent/config_entries.html) for more
[agent configuration](/docs/agent/options.html#enable_central_service_config) details about configuration entries.
for more information on how to enable this functionality for centrally
configuring services.
## Usage ## Usage
@ -24,9 +22,9 @@ Usage: `consul config write [options] FILE`
#### Config Write Options #### Config Write Options
* `-cas` - Specifies to use a Check-And-Set operation. If the index is * `-cas` - Specifies to use a Check-And-Set operation. If the index is
0, Consul will only store the entry if it does not already exist. If the index is 0, Consul will only store the entry if it does not already exist. If the index is
non-zero, the entry is only set if the current index matches the `ModifyIndex` non-zero, the entry is only set if the current index matches the `ModifyIndex`
of that entry. of that entry.
## Examples ## Examples
@ -47,17 +45,14 @@ supported types are `service-defaults` and `proxy-defaults`.
#### Service defaults #### Service defaults
Service defaults control default global values for a service, such as the Service defaults control default global values for a service, such as the
protocol and Connect fields. protocol and Connect fields.
```json ```json
{ {
"Kind": "service-defaults", "Kind": "service-defaults",
"Name": "web", "Name": "web",
"Protocol": "http", "Protocol": "http",
"Connect": {
"SidecarProxy": false
}
} }
``` ```

View file

@ -408,6 +408,9 @@
<li<%= sidebar_current("docs-agent-config") %>> <li<%= sidebar_current("docs-agent-config") %>>
<a href="/docs/agent/options.html">Configuration</a> <a href="/docs/agent/options.html">Configuration</a>
</li> </li>
<li<%= sidebar_current("docs-agent-cfg_entries") %>>
<a href="/docs/agent/config_entries.html">Configuration Entries</a>
</li>
<li<%= sidebar_current("docs-agent-cloud-auto-join") %>> <li<%= sidebar_current("docs-agent-cloud-auto-join") %>>
<a href="/docs/agent/cloud-auto-join.html">Cloud Auto-join</a> <a href="/docs/agent/cloud-auto-join.html">Cloud Auto-join</a>
</li> </li>