<commit_before>## Upgrade etcd from 3.3 to 3.4

In the general case, upgrading from etcd 3.3 to 3.4 can be a zero-downtime, rolling upgrade:
 - one by one, stop the etcd v3.3 processes and replace them with etcd v3.4 processes
 - after running all v3.4 processes, new features in v3.4 are available to the cluster

Before [starting an upgrade](#upgrade-procedure), read through the rest of this guide to prepare.



### Upgrade checklists

**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.

Highlighted breaking changes in 3.4.

#### Deprecated `etcd --ca-file` and `etcd --peer-ca-file` flags

`--ca-file` and `--peer-ca-file` flags are deprecated; they have been deprecated since v2.1.

```diff<commit_msg>Documentation/upgrades: highlight ETCDCTL_API change<commit_after>## Upgrade etcd from 3.3 to 3.4

In the general case, upgrading from etcd 3.3 to 3.4 can be a zero-downtime, rolling upgrade:
 - one by one, stop the etcd v3.3 processes and replace them with etcd v3.4 processes
 - after running all v3.4 processes, new features in v3.4 are available to the cluster

Before [starting an upgrade](#upgrade-procedure), read through the rest of this guide to prepare.



### Upgrade checklists

**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.

Highlighted breaking changes in 3.4.

#### Make `ETCDCTL_API=3 etcdctl` default

`ETCDCTL_API=3` is now the default.

```diff
./bin/etcdctl set foo bar
Error: unknown command "set" for "etcdctl"

-./bin/etcdctl set foo bar
+ETCDCTL_API=2 ./bin/etcdctl set foo bar
bar

ETCDCTL_API=3 ./bin/etcdctl put foo bar
OK

-ETCDCTL_API=3 ./bin/etcdctl put foo bar
+./bin/etcdctl put foo bar
```

#### Deprecated `etcd --ca-file` and `etcd --peer-ca-file` flags

`--ca-file` and `--peer-ca-file` flags are deprecated; they have been deprecated since v2.1.

```diff
{'fraction_non_alphanumeric': 0.09371554575523705, 'fraction_numerical': 0.029768467475192944, 'mean_word_length': 3.976234003656307, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2632295', 'n_tokens_mistral': 902, 'n_tokens_neox': 853, 'n_words': 385}