Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
2 changes: 2 additions & 0 deletions content/en/docs/v3.4/how-to-migrate.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ etcd v2.Y releases store data in the v2store, which supports the legacy API v2.
This document focus on how to migrate existing data from the v2store to the v3store. For a detailed guideline of migrating from API v2 to API v3, please refer to [Migrate applications from using API v2 to API v3](https://etcd.io/docs/v3.4/op-guide/v2-migration/).

{{% alert color="warning" %}}

⚠️ **Deprecated functionality:**

The `etcdctl migrate` command was removed in etcd v3.5.0 ([pull/12971](https://github.com/etcd-io/etcd/pull/12971)). If your etcd cluster is already running v3.5 or higher, you can no longer migrate v2store to v3store using this method.

You **must use etcdctl v3.4 or earlier** to perform the migration (View note from [CHANGELOG-3.5](https://github.com/ahrtr/etcd/blob/main/CHANGELOG/CHANGELOG-3.5.md#etcdctl-v3-3)). However please take appropriate precautions when using it, as it is no longer officially supported or tested in recent releases.

{{% /alert %}}

## Pre-requisites
Expand Down
2 changes: 2 additions & 0 deletions content/en/docs/v3.4/op-guide/v2-migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ First, all members in the etcd cluster must converge to the same state. This can
Second, migrate the v2 keys into v3 with the [migrate][migrate_command] (`ETCDCTL_API=3 etcdctl migrate`) command. The migrate command writes keys in the v2 store to a user-provided transformer program and reads back transformed keys. It then writes transformed keys into the mvcc store. This usually takes at most tens of seconds.

{{% alert title="known issue" color="warning" %}}

The migrate command has a known issue that new members added after the migration do not receive existing data if no .snap file exists.
The workaround is to perform a snapshot restore after the migration.
For more information see [GitHub issue](https://github.com/etcd-io/etcd/issues/8804).

{{% /alert %}}

Restart the etcd members and everything should just work.
Expand Down
8 changes: 8 additions & 0 deletions content/en/docs/v3.5/op-guide/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ You can configure etcd through the following:
- **[Configuration file](#configuration-file)**

{{% alert color="warning" %}}

<i class="fas fa-exclamation-triangle mr-1"></i> **Caution**: If you mix-and-match configuration options, then the following
rules apply.

- Command-line flags take precedence over environment variables.
- If you provide a _configuration file_ all command-line flags and environment variables are **ignored**.

{{% /alert %}}

## Command-line flags
Expand All @@ -27,10 +29,12 @@ Flags are presented below using the format `--flag-name DEFAULT_VALUE`.
The list of flags provided below may not be up-to-date due to ongoing development changes. For the latest available flags, run `etcd --help` or refer to the [etcd help][].

{{% alert color="info" %}}

**Note**: For details concerning new, updated, and deprecated {{< param version >}} flags,
see [CHANGELOG-{{< psubstr version 1 >}}.md][changelog].

[changelog]: https://github.com/etcd-io/etcd/blob/main/CHANGELOG/CHANGELOG-{{< psubstr version 1 >}}.md

{{% /alert %}}

### Member
Expand Down Expand Up @@ -227,7 +231,9 @@ The list of flags provided below may not be up-to-date due to ongoing developmen
### v2 Proxy

{{% alert color="warning" %}}

**<i class="fas fa-exclamation-triangle mr-1"></i> Note**: flags will be deprecated in v3.6.

{{% /alert %}}


Expand Down Expand Up @@ -272,7 +278,9 @@ The list of flags provided below may not be up-to-date due to ongoing developmen
### Unsafe features

{{% alert color="warning" %}}

**<i class="fas fa-exclamation-triangle mr-1"></i> Warning**: using unsafe features may break the guarantees given by the consensus protocol!

{{% /alert %}}

```nocode
Expand Down
6 changes: 6 additions & 0 deletions content/en/docs/v3.5/op-guide/monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,9 @@ Now Prometheus will scrape etcd metrics every 10 seconds.
There is a set of [default alerts](https://github.com/etcd-io/etcd/tree/master/contrib/mixin) for etcd v3 clusters for Prometheus.

{{% alert title="Note" color="info" %}}

Note that `job` labels may need to be adjusted to fit a particular need. The rules were written to apply to a single cluster so it is recommended to choose labels unique to a cluster.

{{% /alert %}}

### Grafana
Expand All @@ -164,7 +166,9 @@ Sample dashboard:
In v3.5 etcd has added support for distributed tracing using [OpenTelemetry](https://github.com/open-telemetry).

{{% alert title="Note" color="info" %}}

This feature is still experimental and can change at any time.

{{% /alert %}}

To enable this experimental feature, pass the `--experimental-enable-distributed-tracing=true` to the etcd server, along with the `--experimental-distributed-tracing-sampling-rate=<number>` flag to choose how many samples to collect per million spans, the default sampling rate is `0`.
Expand All @@ -180,7 +184,9 @@ Configure the distributed tracing by starting etcd server with the following opt
Before enabling the distributed tracing, make sure to have the OpenTelemetry endpoint, if that address differs to the default one, override with the `--experimental-distributed-tracing-address` flag. Due to OpenTelemetry having different ways of running, refer to the [collector documentation](https://opentelemetry.io/docs/collector/getting-started/) to learn more.

{{% alert title="Note" color="info" %}}

There is a resource overhead, as with any observability signal, according to our initial measurements that overhead could be between 2% - 4% CPU overhead.

{{% /alert %}}

[grafana]: http://grafana.org/
Expand Down
2 changes: 2 additions & 0 deletions content/en/docs/v3.5/op-guide/supported-platform.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,14 @@ prints a warning message and exits immediately unless the environment variable
`ETCD_UNSUPPORTED_ARCH` is set to the target architecture.

{{% alert title="32-bit systems" color="warning" %}}

etcd has **known issues** on 32-bit systems due to a bug in the Go runtime.
For more information see the [Go issue #599][go-issue] and the [atomic package
bug note][go-atomic].

[go-atomic]: https://golang.org/pkg/sync/atomic/#pkg-note-BUG
[go-issue]: https://github.com/golang/go/issues/599

{{% /alert %}}

[etcd maintainers]: https://github.com/etcd-io/etcd/blob/main/OWNERS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ description: Performance measures for etcd watchers
---

{{% alert title="Note" color="info" %}}

The watch features are under active development, and their memory usage may change as that development progresses. We do not expect it to significantly increase beyond the figures stated below.

{{% /alert %}}

A primary goal of etcd is supporting a very large number of watchers doing a massively large amount of watching. etcd aims to support O(10k) clients, O(100K) watch streams (O(10) streams per client) and O(10M) total watchings (O(100) watching per stream). The memory consumed by each individual watching accounts for the largest portion of etcd's overall usage, and is therefore the focus of current and future optimizations.
Expand Down
4 changes: 4 additions & 0 deletions content/en/docs/v3.6/downgrades/downgrade_3_5.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ Before [starting a downgrade](#downgrade-procedure), read through the rest of th
content/en/docs/v3.5/op-guide/authentication/rbac.md

{{% alert title="Note" color="info" %}}

If your cluster enables auth, rolling downgrade from 3.5 isn't supported because 3.5 [changes a format of WAL entries related to auth](https://github.com/etcd-io/etcd/pull/11943). You can follow the [authentification instructions](../../op-guide/authentication/rbac/) to disable auth, and delete all users first.

{{% /alert %}}

Highlighted breaking changes from 3.5 to 3.4:
Expand All @@ -26,7 +28,9 @@ Highlighted breaking changes from 3.5 to 3.4:
If you are using any of the following flags in your 3.5 configurations, make sure to remove, rename, or change the default value when downgrading to 3.4.

{{% alert title="Note" color="info" %}}

The diff is based on version 3.5.14 and v.3.4.33. The actual diff would be dependent on your patch version, check with `diff <(etcd-3.5/bin/etcd -h | grep \\-\\-) <(etcd-3.4/bin/etcd -h | grep \\-\\-)` first.

{{% /alert %}}

```diff
Expand Down
6 changes: 6 additions & 0 deletions content/en/docs/v3.6/downgrades/downgrade_3_6.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ Highlighted breaking changes from v3.6 to v3.5:
If you are using any of the following flags in your v3.6 configurations, make sure to remove, rename, or change the default value when downgrading to v3.5.

{{% alert title="Note" color="info" %}}

The diff is based on version v3.6.0 and v.3.5.18. The actual diff would be dependent on your patch version, check with `diff <(etcd-3.6/bin/etcd -h | grep \\-\\-) <(etcd-3.5/bin/etcd -h | grep \\-\\-)` first.

{{% /alert %}}

```diff
Expand Down Expand Up @@ -223,7 +225,9 @@ COMMENT
```

{{% alert title="Note" color="info" %}}

Once downgrade is enabled, the cluster will remain operating with v3.5 protocol even if all the servers are still running the v3.6 binary, unless the downgrade is canceled with `etcdctl downgrade cancel`

{{% /alert %}}

#### Step 5: stop one existing etcd server
Expand Down Expand Up @@ -309,7 +313,9 @@ COMMENT
```

{{% alert title="Note" color="info" %}}

You will see the `DOWNGRADE ENABLED` is false for the v3.5 server, because the downgrade info is not implemented in v3.5 status endpoint, downgrade is still enabled for the cluster at this point.

{{% /alert %}}

#### Step 7: repeat *step 5* and *step 6* for rest of the members
Expand Down
2 changes: 2 additions & 0 deletions content/en/docs/v3.6/feature-gates/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,10 @@ A *Beta* feature means:
discovering new hard-to-spot bugs through wider adoption.

{{% alert title="Note" color="info" %}}

Please do try *Beta* features and give feedback on them!
After they exit beta, it may not be practical for us to make more changes.

{{% /alert %}}

A *General Availability* (GA) feature is also referred to as a *stable* feature. It means:
Expand Down
4 changes: 4 additions & 0 deletions content/en/docs/v3.6/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ source by following these steps:
## Installation via OS packages

{{% alert title="Warning" color="warning" %}}

etcd installations through OS package managers can deliver outdated versions since they are not being automatically maintained nor officially supported by etcd project. Therefore use OS packages with caution.*

{{% /alert %}}

There are various ways of installing etcd on different operating systems and these are just some examples how it can be done.
Expand All @@ -97,7 +99,9 @@ $ etcd --version
## Linux

{{% alert title="Warning" color="warning" %}}

Although installing etcd through many major Linux distributions' official repositories and package managers is possible, the published versions can be significantly outdated. So, installing this way is strongly discouraged.

{{% /alert %}}

The recommended way to install etcd on Linux is either through [pre-built binaries](#install-pre-built-binaries) or by using Homebrew.
Expand Down
2 changes: 2 additions & 0 deletions content/en/docs/v3.6/metrics/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,9 @@ The Prometheus client library provides a number of metrics under the `go` and `p
| process_max_fds | Maximum number of open file descriptors. | Gauge |

{{% alert title="Note" color="info" %}}

The process metrics, such as `process_open_fds` and `process_max_fds`, are not supported on Darwin (macOS) systems at this time.

{{% /alert %}}

Heavy file descriptor (`process_open_fds`) usage (i.e., near the process's file descriptor limit, `process_max_fds`) indicates a potential file descriptor exhaustion issue. If the file descriptors are exhausted, etcd may panic because it cannot create new WAL files.
Expand Down
4 changes: 4 additions & 0 deletions content/en/docs/v3.6/op-guide/clustering.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,9 @@ By setting the size key to the URL, a discovery URL is created with an expected
The URL to use in this case will be `https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83` and the etcd members will use the `https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83` directory for registration as they start.

{{% alert title="Important" %}}

Each member must have a different name flag specified. `Hostname` or `machine-id` can be a good choice. Or discovery will fail due to duplicated name.

{{% /alert %}}

Now we start etcd with those relevant flags for each member:
Expand Down Expand Up @@ -288,7 +290,9 @@ ETCD_DISCOVERY=https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573d
```

{{% alert title="Important" %}}

Each member must have a different name flag specified or else discovery will fail due to duplicated names. `Hostname` or `machine-id` can be a good choice.

{{% /alert %}}

Now we start etcd with those relevant flags for each member:
Expand Down
10 changes: 10 additions & 0 deletions content/en/docs/v3.6/op-guide/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ You can configure etcd through the following:
- **[Configuration file](#configuration-file)**

{{% alert color="warning" %}}

<i class="fas fa-exclamation-triangle mr-1"></i> **Caution**: If you mix-and-match configuration options, then the following
rules apply.

- Command-line flags take precedence over environment variables.
- If you provide a _configuration file_ all command-line flags and environment variables are **ignored**.

{{% /alert %}}

## Command-line flags
Expand All @@ -27,10 +29,12 @@ Flags are presented below using the format `--flag-name DEFAULT_VALUE`.
The list of flags provided below may not be up-to-date due to ongoing development changes. For the latest available flags, run `etcd --help` or refer to the [etcd help][].

{{% alert color="info" %}}

**Note**: For details concerning new, updated, and deprecated {{< param version >}} flags,
see [CHANGELOG-{{< psubstr version 1 >}}.md][changelog].
<!-- markdownlint-disable-next-line MD034 -->
[changelog]: https://github.com/etcd-io/etcd/blob/main/CHANGELOG/CHANGELOG-{{< psubstr version 1 >}}.md

{{% /alert %}}

### Member
Expand Down Expand Up @@ -219,7 +223,9 @@ The list of flags provided below may not be up-to-date due to ongoing developmen
```

{{% alert color="info" %}}

**Note**: Several `--experimental-*` flags have been deprecated in v3.6 and are planned to be removed in v3.7. Be sure to refer to their `--feature-gates=*` replacements when upgrading.

{{% /alert %}}

### Experimental distributed tracing
Expand All @@ -240,7 +246,9 @@ The list of flags provided below may not be up-to-date due to ongoing developmen
### v2 Proxy

{{% alert color="warning" %}}

**<i class="fas fa-exclamation-triangle mr-1"></i> Note**: flags will be deprecated in v3.6.

{{% /alert %}}

```nocode
Expand Down Expand Up @@ -288,7 +296,9 @@ The list of flags provided below may not be up-to-date due to ongoing developmen
### Unsafe features

{{% alert color="warning" %}}

**<i class="fas fa-exclamation-triangle mr-1"></i> Warning**: using unsafe features may break the guarantees given by the consensus protocol!

{{% /alert %}}

```nocode
Expand Down
6 changes: 6 additions & 0 deletions content/en/docs/v3.6/op-guide/maintenance.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,15 @@ Finished defragmenting etcd member[127.0.0.1:2379]
```

{{% alert title="Note" color="info" %}}

Defragmentation to a live member blocks the system from reading and writing data while rebuilding its states.

{{% /alert %}}

{{% alert title="Note" color="info" %}}

Defragmentation request does not get replicated over cluster. That is, the request is only applied to the local node. Specify all members in `--endpoints` flag or `--cluster` flag to automatically find all cluster members.

{{% /alert %}}

Run defragment operations for all endpoints in the cluster associated with the default endpoint:
Expand Down Expand Up @@ -162,7 +166,9 @@ The metric `etcd_mvcc_db_total_size_in_use_in_bytes` indicates the actual databa
`etcd_debugging_mvcc_db_total_size_in_bytes` is renamed to `etcd_mvcc_db_total_size_in_bytes` from v3.4.

{{% alert title="Note" color="info" %}}

It is possible to get an `ErrGRPCNoSpace` error for a Put/Txn/LeaseGrant request, and still have the write request succeed in the backend, because etcd checks space quota at the API layer and the internal Apply layer, and the Apply layer will only raise the `NOSPACE` alarm without blocking the transaction from proceeding.

{{% /alert %}}

## Snapshot backup
Expand Down
6 changes: 6 additions & 0 deletions content/en/docs/v3.6/op-guide/monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,9 @@ Now Prometheus will scrape etcd metrics every 10 seconds.
There is a set of [default alerts](https://github.com/etcd-io/etcd/tree/main/contrib/mixin) for etcd v3 clusters for Prometheus.

{{% alert title="Note" color="info" %}}

Note that `job` labels may need to be adjusted to fit a particular need. The rules were written to apply to a single cluster so it is recommended to choose labels unique to a cluster.

{{% /alert %}}

### Grafana
Expand All @@ -164,7 +166,9 @@ Sample dashboard:
In v3.5 etcd has added support for distributed tracing using [OpenTelemetry](https://github.com/open-telemetry).

{{% alert title="Note" color="info" %}}

This feature is still experimental and can change at any time.

{{% /alert %}}

To enable this experimental feature, pass the `--experimental-enable-distributed-tracing=true` to the etcd server, along with the `--experimental-distributed-tracing-sampling-rate=<number>` flag to choose how many samples to collect per million spans, the default sampling rate is `0`.
Expand All @@ -180,7 +184,9 @@ Configure the distributed tracing by starting etcd server with the following opt
Before enabling the distributed tracing, make sure to have the OpenTelemetry endpoint, if that address differs to the default one, override with the `--experimental-distributed-tracing-address` flag. Due to OpenTelemetry having different ways of running, refer to the [collector documentation](https://opentelemetry.io/docs/collector/getting-started/) to learn more.

{{% alert title="Note" color="info" %}}

There is a resource overhead, as with any observability signal, according to our initial measurements that overhead could be between 2% - 4% CPU overhead.

{{% /alert %}}

[grafana]: http://grafana.org/
Expand Down
8 changes: 8 additions & 0 deletions content/en/docs/v3.6/op-guide/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ description: Securing data in transit
etcd supports automatic TLS as well as authentication through client certificates for both clients to server as well as peer (server to server / cluster) communication.

{{% alert title="Warning" color="warning" %}}

etcd doesn't enable [RBAC based authentication](../authentication) or the authentication feature in the transport layer by default to reduce friction for users getting started with the database. Further, changing this default would be a breaking change for the project which was established since 2013. An etcd cluster which doesn't enable security features can expose its data to any clients.

{{% /alert %}}

To get up and running, first have a CA certificate and a signed key pair for one member. It is recommended to create and sign a new key pair for every member in a cluster.
Expand Down Expand Up @@ -207,7 +209,9 @@ The etcd members will form a cluster and all communication between members in th
## Example 4: Automatic self-signed transport security

{{% alert title="Note" color="info" %}}

When you specify ClientAutoTLS and PeerAutoTLS, the validity period of the client certificate and peer certificate automatically generated by etcd is only 1 year. You can specify the --self-signed-cert-validity flag to set the validity period of the certificate in years.

{{% /alert %}}

For cases where communication encryption, but not authentication, is needed, etcd supports encrypting its messages with automatically generated self-signed certificates. This simplifies deployment because there is no need for managing certificates and keys outside of etcd.
Expand Down Expand Up @@ -246,10 +250,14 @@ $ curl -k https://127.0.0.1:2379/v2/keys/foo -Xput -d value=bar -v
Previously, we described that etcd supports two types of communication: **client-to-server** and **server-to-server (peer communication)**. In this section, we will prepare configuration steps to migrate both communication types to TLS in your existing etcd cluster.

{{% alert title="Important"%}}

Before starting work on converting the cluster to TLS, please make a backup of the etcd database.

{{% /alert %}}
{{% alert title="Important"%}}

Before restarting any etcd members, you must first add the TLS certificates and configuration to each etcd node.

{{% /alert %}}

---
Expand Down
Loading