mirror of https://github.com/hashicorp/consul
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.
335 lines
12 KiB
335 lines
12 KiB
--- |
|
layout: api |
|
page_title: Config - HTTP API |
|
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. See the |
|
[agent configuration](/consul/docs/agent/config/config-files#enable_central_service_config) |
|
for more information on how to enable this functionality for centrally |
|
configuring services and [configuration entries docs](/consul/docs/agent/config-entries) for a description |
|
of the configuration entries content. |
|
|
|
## 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](/consul/api-docs/features/blocking), |
|
[consistency modes](/consul/api-docs/features/consistency), |
|
[agent caching](/consul/api-docs/features/caching), and |
|
[required ACLs](/consul/api-docs/api-structure#authentication). |
|
|
|
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required | |
|
| ---------------- | ----------------- | ------------- | ------------------------------------------------- | |
|
| `NO` | `none` | `none` | Refer to [Permissions](#permissions) | |
|
|
|
The corresponding CLI command is [`consul config write`](/consul/commands/config/write). |
|
|
|
### Permissions |
|
|
|
The ACL required depends on the config entry being written: |
|
|
|
| Config Entry Kind | Required ACLs | |
|
| ------------------- | -------------------------------- | |
|
| api-gateway | `mesh:write` or `operator:write` | |
|
| bound-api-gateway | Not writable. | |
|
| exported-services | `mesh:write` or `operator:write` | |
|
| http-route | `mesh:write` or `operator:write` | |
|
| ingress-gateway | `mesh:write` or `operator:write` | |
|
| inline-certificate | `mesh:write` or `operator:write` | |
|
| mesh | `mesh:write` or `operator:write` | |
|
| proxy-defaults | `mesh:write` or `operator:write` | |
|
| service-defaults | `service:write` | |
|
| service-intentions | `intentions:write` | |
|
| service-resolver | `service:write` | |
|
| service-router | `service:write` | |
|
| service-splitter | `service:write` | |
|
| tcp-route | `mesh:write` or `operator:write` | |
|
| terminating-gateway | `mesh:write` or `operator:write` | |
|
|
|
### Query Parameters |
|
|
|
- `dc` `(string: "")` - Specifies the datacenter to query. |
|
This parameter defaults to the datacenter of the agent being queried. |
|
|
|
- `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 |
|
non-zero, the entry is only set if the current index matches the `ModifyIndex` |
|
of that entry. |
|
|
|
- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of the config entry you apply. |
|
You can also [specify the namespace through other methods](#methods-to-specify-namespace). |
|
|
|
### Sample Payload |
|
|
|
```json |
|
{ |
|
"Kind": "service-defaults", |
|
"Name": "web", |
|
"Protocol": "http" |
|
} |
|
``` |
|
|
|
### Sample Request |
|
|
|
```shell-session |
|
$ 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](/consul/api-docs/features/blocking), |
|
[consistency modes](/consul/api-docs/features/consistency), |
|
[agent caching](/consul/api-docs/features/caching), and |
|
[required ACLs](/consul/api-docs/api-structure#authentication). |
|
|
|
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required | |
|
| ---------------- | ----------------- | ------------- | -------------------------------------- | |
|
| `YES` | `all` | `none` | Refer to [Permissions](#permissions-1) | |
|
|
|
|
|
The corresponding CLI command is [`consul config read`](/consul/commands/config/read). |
|
|
|
### Permissions |
|
|
|
The ACL required depends on the config entry kind being read: |
|
|
|
| Config Entry Kind | Required ACLs | |
|
| ------------------- | -------------------------------- | |
|
| api-gateway | `service:read` | |
|
| bound-api-gateway | `service:read` | |
|
| exported-services | `mesh:read` or `operator:read` | |
|
| http-route | `mesh:read` or `operator:read` | |
|
| ingress-gateway | `service:read` | |
|
| inline-certificate | `mesh:read` or `operator:read` | |
|
| mesh | No ACL required | |
|
| proxy-defaults | No ACL required | |
|
| service-defaults | `service:read` | |
|
| service-intentions | `intentions:read` | |
|
| service-resolver | `service:read` | |
|
| service-router | `service:read` | |
|
| service-splitter | `service:read` | |
|
| tcp-route | `mesh:read` or `operator:read` | |
|
| terminating-gateway | `service:read` | |
|
|
|
### Path Parameters |
|
|
|
- `kind` `(string: <required>)` - Specifies the kind of the entry to read. |
|
|
|
- `name` `(string: <required>)` - Specifies the name of the entry to read. |
|
The name of the `proxy-defaults` config entry |
|
must be `global`, and the name of the `mesh` config entry must be `mesh`. |
|
|
|
### Query Parameters |
|
|
|
- `dc` `(string: "")` - Specifies the datacenter to query. |
|
This parameter defaults to the datacenter of the agent being queried. |
|
|
|
- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of the config entry you lookup |
|
You can also [specify the namespace through other methods](#methods-to-specify-namespace). |
|
|
|
### Sample Request |
|
|
|
```shell-session |
|
$ curl \ |
|
--request GET \ |
|
http://127.0.0.1:8500/v1/config/service-defaults/web |
|
``` |
|
|
|
### Sample Response |
|
|
|
```json |
|
{ |
|
"Kind": "service-defaults", |
|
"Name": "web", |
|
"Protocol": "http", |
|
"CreateIndex": 15, |
|
"ModifyIndex": 35 |
|
} |
|
``` |
|
|
|
## List Configurations |
|
|
|
This endpoint returns all config entries of the given kind. |
|
|
|
@include 'http_api_results_filtered_by_acls.mdx' |
|
|
|
| Method | Path | Produces | |
|
| ------ | --------------- | ------------------ | |
|
| `GET` | `/config/:kind` | `application/json` | |
|
|
|
The table below shows this endpoint's support for |
|
[blocking queries](/consul/api-docs/features/blocking), |
|
[consistency modes](/consul/api-docs/features/consistency), |
|
[agent caching](/consul/api-docs/features/caching), and |
|
[required ACLs](/consul/api-docs/api-structure#authentication). |
|
|
|
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required | |
|
| ---------------- | ----------------- | ------------- | -------------------------------------- | |
|
| `YES` | `all` | `none` | Refer to [Permissions](#permissions-2) | |
|
|
|
### Permissions |
|
|
|
The ACL required depends on the config entry kind being read: |
|
|
|
| Config Entry Kind | Required ACLs | |
|
| ------------------- | -------------------------------- | |
|
| api-gateway | `service:read` | |
|
| bound-api-gateway | `service:read` | |
|
| exported-services | `mesh:read` or `operator:read` | |
|
| http-route | `mesh:read` or `operator:read` | |
|
| ingress-gateway | `service:read` | |
|
| inline-certificate | `mesh:read` or `operator:read` | |
|
| mesh | No ACL required | |
|
| proxy-defaults | No ACL required | |
|
| service-defaults | `service:read` | |
|
| service-intentions | `intentions:read` | |
|
| service-resolver | `service:read` | |
|
| service-router | `service:read` | |
|
| service-splitter | `service:read` | |
|
| tcp-route | `mesh:read` or `operator:read` | |
|
| terminating-gateway | `service:read` | |
|
|
|
The corresponding CLI command is [`consul config list`](/consul/commands/config/list). |
|
|
|
### Path Parameters |
|
|
|
- `kind` `(string: <required>)` - Specifies the kind of the entry to list. |
|
|
|
### Query Parameters |
|
|
|
- `dc` `(string: "")` - Specifies the datacenter to query. |
|
This parameter defaults to the datacenter of the agent being queried. |
|
|
|
- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of the config entries you lookup. |
|
You can also [specify the namespace through other methods](#methods-to-specify-namespace). |
|
|
|
### Sample Request |
|
|
|
```shell-session |
|
$ curl \ |
|
--request GET \ |
|
http://127.0.0.1:8500/v1/config/service-defaults |
|
``` |
|
|
|
### Sample Response |
|
|
|
```json |
|
[ |
|
{ |
|
"Kind": "service-defaults", |
|
"Name": "db", |
|
"Protocol": "tcp", |
|
"CreateIndex": 16, |
|
"ModifyIndex": 16 |
|
}, |
|
{ |
|
"Kind": "service-defaults", |
|
"Name": "web", |
|
"Protocol": "http", |
|
"CreateIndex": 13, |
|
"ModifyIndex": 13 |
|
} |
|
] |
|
``` |
|
|
|
## Delete Configuration |
|
|
|
This endpoint deletes the given config entry. |
|
|
|
| Method | Path | Produces | |
|
| -------- | --------------------- | ------------------ | |
|
| `DELETE` | `/config/:kind/:name` | `application/json` | |
|
|
|
The table below shows this endpoint's support for |
|
[blocking queries](/consul/api-docs/features/blocking), |
|
[consistency modes](/consul/api-docs/features/consistency), |
|
[agent caching](/consul/api-docs/features/caching), and |
|
[required ACLs](/consul/api-docs/api-structure#authentication). |
|
|
|
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required | |
|
| ---------------- | ----------------- | ------------- | ------------------------------------------------- | |
|
| `NO` | `none` | `none` | Refer to [Permissions](#permissions-3) | |
|
|
|
### Permissions |
|
|
|
The ACL required depends on the config entry kind being deleted: |
|
|
|
| Config Entry Kind | Required ACLs | |
|
| ------------------- | -------------------------------- | |
|
| api-gateway | `mesh:write` or `operator:write` | |
|
| bound-api-gateway | Not writable. | |
|
| exported-services | `mesh:write` or `operator:write` | |
|
| http-route | `mesh:write` or `operator:write` | |
|
| ingress-gateway | `mesh:write` or `operator:write` | |
|
| inline-certificate | `mesh:write` or `operator:write` | |
|
| mesh | `mesh:write` or `operator:write` | |
|
| proxy-defaults | `mesh:write` or `operator:write` | |
|
| service-defaults | `service:write` | |
|
| service-intentions | `intentions:write` | |
|
| service-resolver | `service:write` | |
|
| service-router | `service:write` | |
|
| service-splitter | `service:write` | |
|
| tcp-route | `mesh:write` or `operator:write` | |
|
| terminating-gateway | `mesh:write` or `operator:write` | |
|
|
|
The corresponding CLI command is [`consul config delete`](/consul/commands/config/delete). |
|
|
|
### Path Parameters |
|
|
|
- `kind` `(string: <required>)` - Specifies the kind of the entry to delete. |
|
|
|
- `name` `(string: <required>)` - Specifies the name of the entry to delete. |
|
The name of the `proxy-defaults` config entry |
|
must be `global`, and the name of the `mesh` config entry must be `mesh`. |
|
|
|
### Query Parameters |
|
|
|
- `dc` `(string: "")` - Specifies the datacenter to query. |
|
This parameter defaults to the datacenter of the agent being queried. |
|
|
|
- `cas` `(int: 0)` - Specifies to use a Check-And-Set operation. Unlike `PUT`, |
|
the index must be greater than 0 for Consul to take any action: a 0 index will |
|
not delete the config entry. If the index is non-zero, the config entry is only |
|
deleted if the index matches the `ModifyIndex` of that config entry. |
|
|
|
- `ns` `(string: "")` <EnterpriseAlert inline /> - Specifies the namespace of the config entry you delete. |
|
You can also [specify the namespace through other methods](#methods-to-specify-namespace). |
|
|
|
### Sample Request |
|
|
|
```shell-session |
|
$ curl \ |
|
--request DELETE \ |
|
http://127.0.0.1:8500/v1/config/service-defaults/web |
|
``` |
|
|
|
## Methods to Specify Namespace <EnterpriseAlert inline /> |
|
|
|
Config endpoints |
|
support several methods for specifying the namespace of configuration entry resources |
|
with the following order of precedence: |
|
1. `ns` query parameter |
|
1. `X-Consul-Namespace` request header |
|
1. Namespace is inherited from the namespace of the request's ACL token (if any) |
|
1. The `default` namespace
|
|
|