Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Config Entry docs #5734

Merged
merged 7 commits into from
May 1, 2019
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
246 changes: 246 additions & 0 deletions website/source/api/config.html.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
---
layout: api
page_title: Config - HTTP API
sidebar_current: api-config
description: |-
The /config endpoints are for managing centralized configuration
in Consul.
---

# Config HTTP Endpoint

The `/config` endpoints create, update, delete and query central configuration
entries registered with Consul.

## Apply Configuration

This endpoint creates or updates the given config entry.

| Method | Path | Produces |
| ------ | ---------------------------- | -------------------------- |
| `PUT` | `/config` | `application/json` |

The table below shows this endpoint's support for
[blocking queries](/api/index.html#blocking-queries),
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
[consistency modes](/api/index.html#consistency-modes),
[agent caching](/api/index.html#agent-caching), and
[required ACLs](/api/index.html#acls).

| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
| ---------------- | ----------------- | ------------- | ------------- |
| `NO` | `none` | `none` | `service:write`<br>`operator:write`<sup>1</sup> |

<sup>1</sup> The ACL required depends on the Kind of the config entry being updated:
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved

| Config Entry Kind | Required ACL |
| ----------------- | ---------------- |
| service-defaults | `service:write` |
| proxy-defaults | `operator:write` |

### Parameters

- `dc` `(string: "")` - Specifies the datacenter to query. This will default to
the datacenter of the agent being queried. This is specified as part of the
URL as a query parameter.

- `cas` `(int: 0)` - Specifies to use a Check-And-Set operation. If the index is
0, Consul will only put the entry if it does not already exist. If the index is
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
non-zero, the entry is only set if the current index matches the `ModifyIndex`
of that entry.

### Sample Payload


```javascript
{
"Kind": "service-defaults",
"Name": "web",
"Protocol": "http",
"Connect": {
"SidecarProxy": false
}
}
```

### Sample Request

```text
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
$ curl \
--request PUT \
--data @payload \
http://127.0.0.1:8500/v1/config
```

## Get Configuration

This endpoint returns a specific config entry.

| Method | Path | Produces |
| ------ | ---------------------------- | -------------------------- |
| `GET` | `/config/:kind/:name` | `application/json` |

The table below shows this endpoint's support for
[blocking queries](/api/index.html#blocking-queries),
[consistency modes](/api/index.html#consistency-modes),
[agent caching](/api/index.html#agent-caching), and
[required ACLs](/api/index.html#acls).

| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
| ---------------- | ----------------- | ------------- | ------------- |
| `YES` | `all` | `none` | `service:read`<sup>1</sup> |

<sup>1</sup> The ACL required depends on the Kind of the config entry being read:
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved

| Config Entry Kind | Required ACL |
| ----------------- | ---------------- |
| service-defaults | `service:read` |
| proxy-defaults | `<none>` |

### Parameters

- `dc` `(string: "")` - Specifies the datacenter to query. This will default to
the datacenter of the agent being queried. This is specified as part of the
URL as a query parameter.

- `kind` `(string: <required>)` - Specifies the Kind of the entry to read. This
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
is specified as part of the URL.

- `name` `(string: <required>)` - Specifies the Name of the entry to read. This
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
is specified as part of the URL.

### Sample Request

```text
$ curl \
--request GET \
http://127.0.0.1:8500/v1/service-defaults/web
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
```

### Sample Response

```json
{
"Kind": "service-defaults",
"Name": "web",
"Protocol": "http",
"Connect": {
"SidecarProxy": true
},
"CreateIndex": 15,
"ModifyIndex": 35
}
```

## List Configurations

This endpoint returns all config entries of the given Kind.

| Method | Path | Produces |
| ------ | ---------------------------- | -------------------------- |
| `GET` | `/config/:kind` | `application/json` |

The table below shows this endpoint's support for
[blocking queries](/api/index.html#blocking-queries),
[consistency modes](/api/index.html#consistency-modes),
[agent caching](/api/index.html#agent-caching), and
[required ACLs](/api/index.html#acls).

| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
| ---------------- | ----------------- | ------------- | ------------- |
| `YES` | `all` | `none` | `service:read`<sup>1</sup> |

<sup>1</sup> The ACL required depends on the Kind of the config entry being read:

| Config Entry Kind | Required ACL |
| ----------------- | ---------------- |
| service-defaults | `service:read` |
| proxy-defaults | `<none>` |

### Parameters

- `dc` `(string: "")` - Specifies the datacenter to query. This will default to
the datacenter of the agent being queried. This is specified as part of the
URL as a query parameter.

- `kind` `(string: <required>)` - Specifies the Kind of the entry to list. This
is specified as part of the URL.

### Sample Request

```text
$ curl \
--request GET \
http://127.0.0.1:8500/v1/service-defaults
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
```

### Sample Response

```json
[
{
"Kind": "service-defaults",
"Name": "db",
"Protocol": "tcp",
"Connect": {
"SidecarProxy": false
},
"CreateIndex": 16,
"ModifyIndex": 16
},
{
"Kind": "service-defaults",
"Name": "web",
"Protocol": "http",
"Connect": {
"SidecarProxy": true
},
"CreateIndex": 13,
"ModifyIndex": 13
}
]
```

## Delete Configuration

This endpoint creates or updates the given config entry.

| Method | Path | Produces |
| -------- | ---------------------------- | -------------------------- |
| `DELETE` | `/config/:kind/:name` | `application/json` |

The table below shows this endpoint's support for
[blocking queries](/api/index.html#blocking-queries),
[consistency modes](/api/index.html#consistency-modes),
[agent caching](/api/index.html#agent-caching), and
[required ACLs](/api/index.html#acls).

| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
| ---------------- | ----------------- | ------------- | ------------- |
| `NO` | `none` | `none` | `service:write`<br>`operator:write`<sup>1</sup> |

<sup>1</sup> The ACL required depends on the Kind of the config entry being deleted:
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved

| Config Entry Kind | Required ACL |
| ----------------- | ---------------- |
| service-defaults | `service:write` |
| proxy-defaults | `operator:write` |

### Parameters

- `dc` `(string: "")` - Specifies the datacenter to query. This will default to
the datacenter of the agent being queried. This is specified as part of the
URL as a query parameter.

- `kind` `(string: <required>)` - Specifies the Kind of the entry to delete. This
is specified as part of the URL.

- `name` `(string: <required>)` - Specifies the Name of the entry to delete. This
is specified as part of the URL.

### Sample Request

```text
$ curl \
--request DELETE \
http://127.0.0.1:8500/v1/config/service-defaults/web
```
5 changes: 5 additions & 0 deletions website/source/docs/agent/options.html.md
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,11 @@ default will automatically work with some tooling.
`server_name`) to set up the client for HTTP or gRPC health checks. This allows services requiring 2-way TLS to
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>
When set, the Consul agent will merge any service registrations with centrally configured defaults, if available.
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
This allows for things like service protocol or proxy configuration to be defined centrally and inherited by any
affected service registrations.

* <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
are available with an `operator:read` ACL regardles of the value of `enable_debug`.
Expand Down
49 changes: 49 additions & 0 deletions website/source/docs/commands/config.html.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
layout: "docs"
page_title: "Commands: Config"
sidebar_current: "docs-commands-config"
---

# Consul Config

Command: `consul config`

The `config` command is used to interact with Consul's central configuration
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
system. It exposes commands for creating, updating, reading, and deleting
different kinds of config entries.

## Usage

Usage: `consul config <subcommand>`

For the exact documentation for your Consul version, run `consul config -h` to view
the complete list of subcommands.

```text
Usage: consul config <subcommand> [options] [args]

This command has subcommands for interacting with Consul's Centralized
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
Configuration system. Here are some simple examples, and more detailed
kyhavlov marked this conversation as resolved.
Show resolved Hide resolved
examples are available in the subcommands or the documentation.

Write a config:

$ consul config write web.serviceconf.hcl

Read a config:

$ consul config read -kind service-defaults -name web

List all configs for a type:

$ consul config list -kind service-defaults

Delete a config:

$ consul config delete -kind service-defaults -name web

For more examples, ask for subcommand help or view the documentation.
```

For more information, examples, and usage about a subcommand, click on the name
of the subcommand in the sidebar.
30 changes: 30 additions & 0 deletions website/source/docs/commands/config/delete.html.md.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
layout: "docs"
page_title: "Commands: Config Delete"
sidebar_current: "docs-commands-config-delete"
---

# Consul Config Delete

Command: `consul config delete`

The `config delete` command deletes the configuration entry
specified by the kind and name.

## Usage

Usage: `consul config delete [options]`

#### API Options

<%= partial "docs/commands/http_api_options_client" %>

#### Config Delete Options

* `-kind` - Specifies the kind of the config entry to read.

* `-name` - Specifies the name of the config entry to read.

## Examples

$ consul config delete -kind service-defaults -name web
32 changes: 32 additions & 0 deletions website/source/docs/commands/config/list.html.md.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
layout: "docs"
page_title: "Commands: Config List"
sidebar_current: "docs-commands-config-list"
---

# Consul Config List

Command: `consul config list`

The `config list` command lists all given config entries of the given kind.

## Usage

Usage: `consul config list [options]`

#### API Options

<%= partial "docs/commands/http_api_options_client" %>

#### Config List Options

* `-kind` - Specifies the kind of the config entry to read.

## Examples

$ consul config list -kind service-defaults
billing
db
web


Loading