mirror of https://github.com/hashicorp/consul
Add peering endpoint API docs (#13454)
parent
343586e847
commit
7e30357c17
@ -0,0 +1,322 @@
|
||||
---
|
||||
layout: api
|
||||
page_title: Cluster Peering - HTTP API
|
||||
description: The /peering endpoints allow for managing cluster peerings.
|
||||
---
|
||||
|
||||
# Cluster Peering - HTTP API
|
||||
|
||||
~> **Cluster peering is currently in technical preview:** Functionality associated
|
||||
with cluster peering is subject to change. You should never use the technical
|
||||
preview release in secure environments or production scenarios. Features in
|
||||
technical preview may have performance issues, scaling issues, and limited support.
|
||||
|
||||
The functionality described here is available only in
|
||||
[Consul](https://www.hashicorp.com/products/consul/) version 1.13.0 and later.
|
||||
|
||||
## Generate a Peering Token
|
||||
|
||||
This endpoint generates a peering token.
|
||||
|
||||
| Method | Path | Produces |
|
||||
| ------- | -------------------- | ------------------ |
|
||||
| `POST` | `/peering/token` | `application/json` |
|
||||
|
||||
The table below shows this endpoint's support for
|
||||
[blocking queries](/api-docs/features/blocking),
|
||||
[consistency modes](/api-docs/features/consistency),
|
||||
[agent caching](/api-docs/features/caching), and
|
||||
[required ACLs](/api#authentication).
|
||||
|
||||
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
|
||||
| ---------------- | ----------------- | ------------- | ---------------- |
|
||||
| `NO` | `none` | `none` | `none` |
|
||||
|
||||
### JSON Request Body Schema
|
||||
|
||||
- `PeerName` `(string: <required>)` - The name assigned to the peer cluster.
|
||||
The `PeerName` is used to reference the peer cluster in service discovery queries
|
||||
and configuration entries such as `service-intentions`. This field must be a
|
||||
valid DNS hostname label.
|
||||
|
||||
- `Partition` `(string: "")` - <EnterpriseAlert inline /> The admin partition that the
|
||||
peering token is generated from. Uses `default` when not specified.
|
||||
|
||||
- `Datacenter` `(string: "")` - Specifies the datacenter. Defaults to the
|
||||
agent's datacenter when not specified.
|
||||
|
||||
- `Token` `(string: "")` - Specifies the ACL token to use in the request. Takes precedence
|
||||
over the token specified in the `token` query parameter, `X-Consul-Token` request header,
|
||||
and `CONSUL_HTTP_TOKEN` environment variable.
|
||||
|
||||
- `Meta` `(map<string|string>: <optional>)` - Specifies KV metadata to associate with
|
||||
the peering. This parameter is not required and does not directly impact the cluster
|
||||
peering process.
|
||||
|
||||
### Sample Payload
|
||||
|
||||
```json
|
||||
{
|
||||
"PeerName": "cluster-02",
|
||||
"Meta": {
|
||||
"env": "production"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Sample Request
|
||||
|
||||
```shell-session
|
||||
$ curl --request POST \
|
||||
--header "X-Consul-Token: 5cdcae6c-0cce-4210-86fe-5dff3b984a6e" \
|
||||
--data @payload.json \
|
||||
http://127.0.0.1:8500/v1/peering/token
|
||||
```
|
||||
|
||||
### Sample Response
|
||||
|
||||
```json
|
||||
{
|
||||
"PeeringToken": "eyJDQSI6bnVsbCwiU2V..."
|
||||
}
|
||||
```
|
||||
|
||||
## Establish a Peering
|
||||
|
||||
This endpoint establishes a peering with a given peering token.
|
||||
|
||||
| Method | Path | Produces |
|
||||
| ------- | -------------------- | ------------------ |
|
||||
| `POST` | `/peering/establish` | `application/json` |
|
||||
|
||||
This endpoint returns no data. Success or failure is indicated by the status
|
||||
code returned.
|
||||
|
||||
The table below shows this endpoint's support for
|
||||
[blocking queries](/api-docs/features/blocking),
|
||||
[consistency modes](/api-docs/features/consistency),
|
||||
[agent caching](/api-docs/features/caching), and
|
||||
[required ACLs](/api#authentication).
|
||||
|
||||
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
|
||||
| ---------------- | ----------------- | ------------- | ---------------- |
|
||||
| `NO` | `none` | `none` | `none` |
|
||||
|
||||
### JSON Request Body Schema
|
||||
|
||||
- `PeerName` `(string: <required>)` - The name assigned to the peer cluster.
|
||||
The `PeerName` is used to reference the peer cluster in service discovery queries
|
||||
and configuration entries such as `service-intentions`. This field must be a
|
||||
valid DNS hostname label.
|
||||
|
||||
- `Partition` `(string: "")` - <EnterpriseAlert inline /> The admin partition
|
||||
that peers to the cluster that generated the peering token. Uses `default`
|
||||
when not specified.
|
||||
|
||||
- `PeeringToken` `(string: <required>)` - The peering token fetched from the
|
||||
peer cluster.
|
||||
|
||||
- `Datacenter` `(string: "")` - Specifies the datacenter. Defaults to the
|
||||
agent's datacenter when not specified.
|
||||
|
||||
- `Token` `(string: "")` - Specifies the ACL token to use in the request. Takes precedence
|
||||
over the token specified in the `token` query parameter, `X-Consul-Token` request header,
|
||||
and `CONSUL_HTTP_TOKEN` environment variable.
|
||||
|
||||
- `Meta` `(map<string|string>: <optional>)` - Specifies KV metadata to associate with
|
||||
the peering. This parameter is not required and does not directly impact the cluster
|
||||
peering process.
|
||||
|
||||
### Sample Payload
|
||||
|
||||
```json
|
||||
{
|
||||
"PeerName": "cluster-01",
|
||||
"PeeringToken": "eyJDQSI6bnVsbCwiU2V...",
|
||||
"Meta": {
|
||||
"env": "production"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Sample Request
|
||||
|
||||
```shell-session
|
||||
$ curl --request POST \
|
||||
--header "X-Consul-Token: 5cdcae6c-0cce-4210-86fe-5dff3b984a6e" \
|
||||
--data @payload.json \
|
||||
http://127.0.0.1:8500/v1/peering/establish
|
||||
```
|
||||
|
||||
### Sample Response
|
||||
|
||||
```json
|
||||
{}
|
||||
```
|
||||
|
||||
## Read a Peering
|
||||
|
||||
This endpoint reads a peering with the given name.
|
||||
|
||||
| Method | Path | Produces |
|
||||
| ------ | ------------------ | ------------------ |
|
||||
| `GET` | `/peering/:name` | `application/json` |
|
||||
|
||||
The table below shows this endpoint's support for
|
||||
[blocking queries](/api-docs/features/blocking),
|
||||
[consistency modes](/api-docs/features/consistency),
|
||||
[agent caching](/api-docs/features/caching), and
|
||||
[required ACLs](/api#authentication).
|
||||
|
||||
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
|
||||
| ---------------- | ----------------- | ------------- | ------------ |
|
||||
| `NO` | `consistent` | `none` | `none` |
|
||||
|
||||
### Path Parameters
|
||||
|
||||
- `name` `(string: <required>)` - Specifies the peering to read.
|
||||
|
||||
### Query Parameters
|
||||
|
||||
- `partition` `(string: "")` <EnterpriseAlert inline /> - Specifies the partition of the peering
|
||||
to read. If not specified will default to `default`.
|
||||
|
||||
### Sample Request
|
||||
|
||||
```shell-session
|
||||
$ curl --header "X-Consul-Token: b23b3cad-5ea1-4413-919e-c76884b9ad60" \
|
||||
http://127.0.0.1:8500/v1/peering/cluster-02
|
||||
```
|
||||
|
||||
### Sample Response
|
||||
|
||||
```json
|
||||
{
|
||||
"ID": "462c45e8-018e-f19d-85eb-1fc1bcc2ef12",
|
||||
"Name": "cluster-02",
|
||||
"State": "INITIAL",
|
||||
"PeerID": "e83a315c-027e-bcb1-7c0c-a46650904a05",
|
||||
"PeerServerName": "server.dc1.consul",
|
||||
"PeerServerAddresses": [
|
||||
"10.0.0.1:8300"
|
||||
],
|
||||
"CreateIndex": 89,
|
||||
"ModifyIndex": 89
|
||||
}
|
||||
```
|
||||
|
||||
## Delete a Peering
|
||||
|
||||
This endpoint marks a peering for deletion. Once marked, Consul will
|
||||
delete all the data imported from the peer in the background. Only once
|
||||
all associated data has been deleted will the peering actually disappear.
|
||||
Until then, further reads can be performed on the peering and a `DeletedAt`
|
||||
field will be populated with the timestamp of when the peering was
|
||||
marked for deletion.
|
||||
|
||||
| Method | Path | Produces |
|
||||
| -------- | ------------------ | -------- |
|
||||
| `DELETE` | `/peering/:name` | N/A |
|
||||
|
||||
This endpoint returns no data. Success or failure is indicated by the status
|
||||
code returned.
|
||||
|
||||
The table below shows this endpoint's support for
|
||||
[blocking queries](/api-docs/features/blocking),
|
||||
[consistency modes](/api-docs/features/consistency),
|
||||
[agent caching](/api-docs/features/caching), and
|
||||
[required ACLs](/api#authentication).
|
||||
|
||||
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
|
||||
| ---------------- | ----------------- | ------------- | ------------- |
|
||||
| `NO` | `none` | `none` | `none` |
|
||||
|
||||
### Path Parameters
|
||||
|
||||
- `name` `(string: <required>)` - Specifies the name of the peering to delete.
|
||||
- `partition` `(string: "")` <EnterpriseAlert inline /> - Specifies the partition of the peering
|
||||
to delete. Uses `default` when not specified.
|
||||
|
||||
### Sample Request
|
||||
|
||||
```shell-session
|
||||
$ curl --request DELETE \
|
||||
--header "X-Consul-Token: b23b3cad-5ea1-4413-919e-c76884b9ad60" \
|
||||
http://127.0.0.1:8500/v1/peering/cluster-02
|
||||
```
|
||||
|
||||
### Sample Read Output After Deletion Prior to Removal
|
||||
|
||||
```json
|
||||
{
|
||||
"ID": "462c45e8-018e-f19d-85eb-1fc1bcc2ef12",
|
||||
"Name": "cluster-02",
|
||||
"State": "TERMINATED",
|
||||
"PeerID": "e83a315c-027e-bcb1-7c0c-a46650904a05",
|
||||
"PeerServerName": "server.dc1.consul",
|
||||
"PeerServerAddresses": [
|
||||
"10.0.0.1:8300"
|
||||
],
|
||||
"DeletedAt": "2022-12-14T23:00:00Z",
|
||||
"CreateIndex": 89,
|
||||
"ModifyIndex": 89
|
||||
}
|
||||
```
|
||||
|
||||
## List all Peerings
|
||||
|
||||
This endpoint lists all the peerings.
|
||||
|
||||
@include 'http_api_results_filtered_by_acls.mdx'
|
||||
|
||||
| Method | Path | Produces |
|
||||
| ------ | ------------- | ------------------ |
|
||||
| `GET` | `/peerings` | `application/json` |
|
||||
|
||||
The table below shows this endpoint's support for
|
||||
[blocking queries](/api-docs/features/blocking),
|
||||
[consistency modes](/api-docs/features/consistency),
|
||||
[agent caching](/api-docs/features/caching), and
|
||||
[required ACLs](/api#authentication).
|
||||
|
||||
| Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
|
||||
| ---------------- | ----------------- | ------------- | ------------- |
|
||||
| `NO` | `consistent` | `none` | `none` |
|
||||
|
||||
### Sample Request
|
||||
|
||||
```shell-session
|
||||
$ curl --header "X-Consul-Token: 0137db51-5895-4c25-b6cd-d9ed992f4a52" \
|
||||
http://127.0.0.1:8500/v1/peerings
|
||||
```
|
||||
|
||||
### Sample Response
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"ID": "462c45e8-018e-f19d-85eb-1fc1bcc2ef12",
|
||||
"Name": "cluster-02",
|
||||
"State": "ACTIVE",
|
||||
"Partition": "default",
|
||||
"PeerID": "e83a315c-027e-bcb1-7c0c-a46650904a05",
|
||||
"PeerServerName": "server.dc1.consul",
|
||||
"PeerServerAddresses": [
|
||||
"10.0.0.1:8300"
|
||||
],
|
||||
"CreateIndex": 89,
|
||||
"ModifyIndex": 89
|
||||
},
|
||||
{
|
||||
"ID": "1460ada9-26d2-f30d-3359-2968aa7dc47d",
|
||||
"Name": "cluster-03",
|
||||
"State": "INITIAL",
|
||||
"Partition": "default",
|
||||
"Meta": {
|
||||
"env": "production"
|
||||
},
|
||||
"CreateIndex": 109,
|
||||
"ModifyIndex": 119
|
||||
},
|
||||
]
|
||||
```
|
Loading…
Reference in new issue