mrkeyoor.com_
Fri 16 Oct 18:53 UTC
Dataevaluationupdated 05 Oct 2026

etcd review

etcd is a distributed key-value store for small pieces of data that several machines must agree on, such as cluster configuration and service state. It uses Raft to keep that data consistent when a member fails, which is why Kubernetes and other control systems use it instead of a local settings file.

+20stars / 7d
Verdict

Our etcd run installed 559 packages, built in 57 seconds, and passed all 4 tests, so the code path we exercised is in good order while the real cost sits in production operations. Use etcd when quorum-backed configuration or coordination is important enough to justify dedicated disks, certificates, monitoring, and practiced recovery. For ordinary application records or a single small service, choose a database with a less demanding failure model.

We ran it

Lab card: what happened when we ran etcdScreenshot of etcd (etcd.io)
Install✓ · 102s559 packages
Build✓ · 57s
Tests✓ · 16s4 passed · 0 failed of 4 (go test)
Repo1493 files~225,522 lines of source · 15.2 MB · 11 CI workflows · Dockerfile · tests dir

Answers from our run

Does etcd build from source?

Dependencies installed in 102 seconds (559 packages), and the build succeeded in 57 seconds. We cloned commit 64f26db into a clean Debian container with 3 CPUs and no project-specific setup.

Do etcd's tests pass?

Yes: 4 of 4 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use etcd?

Application teams looking for a general document or relational database: etcd is a focused coordination store whose v3.7 operations guide requires compaction, per-member defragmentation, and snapshots.

What are the alternatives to etcd?

Consul, Apache ZooKeeper, TiKV. Our etcd run installed 559 packages, built in 57 seconds, and passed all 4 tests, so the code path we exercised is in good order while the real cost sits in production operations.

Setup3/5Local start is simple; a safe cluster needs careful operations
Docs5/5Detailed guides cover security, hardware, maintenance, and recovery
Community5/5October 2026 push, weekly triage, and active release branches
Maturity5/5Established Raft store with releases and explicit upgrade guides

Who it’s for

Platform teams that need a strongly consistent store for configuration, coordination, leases, or leader election.
Kubernetes operators who want to understand and control the database under the control plane.
Go developers who need an official client, a gRPC API, watch support, and transactions.
Infrastructure teams prepared to run an odd-sized cluster, protect both network paths, and rehearse snapshot recovery.

Who it’s NOT for

Application teams looking for a general document or relational database: etcd is a focused coordination store whose v3.7 operations guide requires compaction, per-member defragmentation, and snapshots.
Small deployments with nobody on call for quorum loss: losing more than (N-1)/2 members permanently stops writes, and recovery creates a new logical cluster from a snapshot.
Teams that assume a default start is a secure production start: the v3.7 security guide says transport protection and RBAC authentication are disabled by default.
Anyone building production releases from the main branch: the README explicitly warns that main may be unstable or broken.
Operators who cannot test upgrades under their own traffic: open issue #22500 reports a MsgApp encoding regression in v3.7.0 through v3.7.2.

Setup reality

Our sandbox installed commit 64f26db in 102 seconds, adding 559 packages. The build succeeded in 57 seconds, and the 16-second Go test step passed all 4 tests with 0 failures. The checkout held 1,493 files, about 225,522 source lines, and used 15.2 MB.

A local single-member server needs no credential and listens on ports 2379 and 2380. Production calls for member names and peer URLs, durable data directories, TLS keys and certificates for client and peer traffic, access policy, monitoring, and scheduled snapshots.

The easy binary start does not represent the operating job. Disk write latency can trigger elections, live defragmentation blocks reads and writes on that member, and a multi-member restore needs the same snapshot on every replacement member. The README also warns against treating main as a stable release.

A single process is easy; quorum is the product

etcd starts a local server on ports 2379 and 2380, then etcdctl put and get are enough to prove the basic path. That small demo can give the wrong impression. The useful part is a replicated log whose members agree on one order of changes. Clients get watches, leases, transactions, and a gRPC API for control data that cannot tolerate two conflicting answers.

That makes etcd a good fit for configuration, coordination, and leader election. It is a poor substitute for a general application database. Exact history consumes space, write progress depends on quorum, and every member participates in a failure model the operator must understand. The README's three-member local example is closer to the production idea than the one-command single server, even though three processes on one laptop do not test machine failure.

What happened when we ran it

Our sandbox installed commit 64f26db in 102 seconds and added 559 packages. The build completed in 57 seconds. The Go test step finished in 16 seconds with 4 passed and 0 failed. We used a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Go 1.24, and no secrets.

The checkout contained 1,493 files, about 225,522 lines of source, and occupied 15.2 MB. We also found 11 CI workflow files, a Dockerfile, and a tests directory. Those are useful repository signals, while the passing 4-test step only describes the command our harness selected. It does not stand in for the project's larger test systems or its separate reliability testing.

Our run did not measure request latency, write throughput, failover time, or behavior during a network partition. It also did not create a multi-machine cluster. The defensible result is narrower: commit 64f26db installed, built, and passed the available test step in our container. Capacity and failure claims still need a workload and topology that resemble your deployment.

Three members survive one permanent loss

A 3-member cluster can tolerate 1 permanent member failure because etcd needs a majority to make progress. Lose 2 permanently and quorum is gone. The v3.7 recovery guide says updates stop at that point, and restoration from a snapshot creates a new logical cluster with new member and cluster identities. That is a reason to rehearse recovery, not merely schedule a backup command.

Kubernetes adds another wrinkle. Restoring an older snapshot can move the revision backward while controllers retain watch-based caches. The official guide recommends a revision bump and marking the restored revision compacted so watchers terminate and rebuild their view. An operator who has never tested that sequence is trusting the most important recovery procedure to syntax read during an outage.

TLS and authentication are disabled by default

The v3.7 security guide states that transport security and RBAC authentication are not enabled by default. A production cluster therefore needs an explicit policy for client traffic on 2379 and peer traffic on 2380. The documented route uses a CA and signed key pair for each member, with separate flags for server certificates, trusted CAs, and peer certificate checks.

This is reasonable machinery for infrastructure that stores credentials, desired state, or cluster membership, but it is still machinery. Certificate names must match how peers connect, renewals cannot strand a member, and clients need the right trust chain. Starting the binary without those controls proves that etcd runs. It does not prove that the endpoint is safe to expose.

Compaction and defragmentation are recurring work

The v3.7 maintenance guide says a live-member defragmentation blocks reads and writes on that member while it rebuilds state. Compaction first removes old key revisions from the usable history; defragmentation then returns the resulting free space to the filesystem. Operators must apply defragmentation per member and watch the space quota, because a full backend raises a cluster-wide alarm that limits normal writes.

Disk quality also affects availability. The hardware guide calls disk write latency the most important performance and stability factor, since a majority must persist requests and slow writes can delay heartbeats enough to trigger elections. Its typical starting point is 2 to 4 CPU cores, 8 GB of memory, and at least 50 sequential IOPS, with dedicated resources and workload testing advised for production.

October activity is strong, but v3.7.2 needs testing

GitHub showed 52,323 stars, 130 open issues, and 243 open pull requests on October 5, 2026. The repository was pushed on October 4. Release v3.7.2 shipped on September 22 alongside v3.6.15 and v3.5.34, evidence that maintainers are servicing three release lines rather than only moving main forward. The README also lists weekly community and issue-triage meetings.

Active maintenance does not make every upgrade automatic. Open issue #22500 reports that the v3.7 MsgApp stream writer can spend 3 to 5 times more CPU per message than v3.6 in the reporter's encoder test, with v3.7.2 among the affected versions. That is the reporter's measurement, not ours, but the issue is specific enough to justify a representative upgrade test before moving a busy cluster to v3.7.2.

etcd belongs under control planes, not ordinary records

etcd v3.7.2 makes sense when a system needs a small, strongly consistent source of truth and the team can operate its failure model. Consul is the better comparison when service discovery and network policy lead the requirements. ZooKeeper fits dependencies already built around its coordination model. TiKV is aimed at a much larger transactional data role.

Our 57-second build and 4 passing tests make the source approachable for a project of 225,522 lines. They do not make a safe cluster effortless. Pick etcd for the semantics, then budget for three members, low-latency disks, two secured network paths, compaction, snapshots, and a restore drill. If those duties sound excessive for the data being stored, that is the answer: use something smaller.

Alternatives

ProjectWhat it isPick it when
Consul gh↗A service networking system with discovery, health checks, and a key-value store.pick this instead when service discovery and network policy are the primary jobs, with key-value storage as a supporting feature.
Apache ZooKeeperA mature coordination service built around watches, naming, and distributed synchronization.pick this instead when an existing JVM stack or a dependency already expects ZooKeeper semantics.
TiKV gh↗A distributed transactional key-value database designed for much larger application data sets.pick this instead when the key-value layer is the application database rather than compact control-plane state.

What people are saying

  1. [github-trending] etcd-io/etcd

Sources

  1. etcd GitHub repository
  2. etcd v3.7.2 release
  3. etcd v3.7 hardware recommendations
  4. etcd v3.7 maintenance guide
  5. etcd v3.7 transport security guide
  6. etcd v3.7 disaster recovery guide
  7. etcd issue #22500: v3.7 MsgApp encoding regression

More data reviews

wine-quality-svc-tuning · dhis2-immunisation-audit · OpenTerminal · The-Quant-Trading-Vault · multimodal-product-discovery · edgequake · the whole board →