Distributed reliable key-value store for the most critical data of a distributed system

Overview

etcd

Go Report Card Coverage Tests asset-transparency codeql-analysis self-hosted-linux-arm64-graviton2-tests Docs Godoc Releases LICENSE

Note: The main branch may be in an unstable or even broken state during development. For stable versions, see releases.

etcd Logo

etcd is a distributed reliable key-value store for the most critical data of a distributed system, with a focus on being:

  • Simple: well-defined, user-facing API (gRPC)
  • Secure: automatic TLS with optional client cert authentication
  • Fast: benchmarked 10,000 writes/sec
  • Reliable: properly distributed using Raft

etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.

etcd is used in production by many companies, and the development team stands behind it in critical deployment scenarios, where etcd is frequently teamed with applications such as Kubernetes, locksmith, vulcand, Doorman, and many others. Reliability is further ensured by rigorous testing.

See etcdctl for a simple command line client.

Community meetings

etcd contributors and maintainers have monthly (every four weeks) meetings at 11:00 AM (USA Pacific) on Thursday.

An initial agenda will be posted to the shared Google docs a day before each meeting, and everyone is welcome to suggest additional topics or other agendas.

Time:

Join Hangouts Meet: meet.google.com/umg-nrxn-qvs

Join by phone: +1 405-792-0633‬ PIN: ‪299 906‬#

Maintainers

MAINTAINERS strive to shape an inclusive open source project culture where users are heard and contributors feel respected and empowered. MAINTAINERS maintain productive relationships across different companies and disciplines. Read more about MAINTAINERS role and responsibilities.

Getting started

Getting etcd

The easiest way to get etcd is to use one of the pre-built release binaries which are available for OSX, Linux, Windows, and Docker on the release page.

For more installation guides, please check out play.etcd.io and operating etcd.

For those wanting to try the very latest version, build the latest version of etcd from the main branch. This first needs Go installed (version 1.16+ is required). All development occurs on main, including new features and bug fixes. Bug fixes are first targeted at main and subsequently ported to release branches, as described in the branch management guide.

Running etcd

First start a single-member cluster of etcd.

If etcd is installed using the pre-built release binaries, run it from the installation location as below:

/tmp/etcd-download-test/etcd

The etcd command can be simply run as such if it is moved to the system path as below:

mv /tmp/etcd-download-test/etcd /usr/local/bin/
etcd

If etcd is built from the main branch, run it as below:

./bin/etcd

This will bring up etcd listening on port 2379 for client communication and on port 2380 for server-to-server communication.

Next, let's set a single key, and then retrieve it:

etcdctl put mykey "this is awesome"
etcdctl get mykey

etcd is now running and serving client requests. For more, please check out:

etcd TCP ports

The official etcd ports are 2379 for client requests, and 2380 for peer communication.

Running a local etcd cluster

First install goreman, which manages Procfile-based applications.

Our Procfile script will set up a local example cluster. Start it with:

goreman start

This will bring up 3 etcd members infra1, infra2 and infra3 and optionally etcd grpc-proxy, which runs locally and composes a cluster.

Every cluster member and proxy accepts key value reads and key value writes.

Follow the steps in Procfile.learner to add a learner node to the cluster. Start the learner node with:

goreman -f ./Procfile.learner start

Install etcd client v3

go get go.etcd.io/etcd/client/v3

Next steps

Now it's time to dig into the full etcd API and other guides.

Contact

Contributing

See CONTRIBUTING for details on submitting patches and the contribution workflow.

Reporting bugs

See reporting bugs for details about reporting any issues.

Reporting a security vulnerability

See security disclosure and release process for details on how to report a security vulnerability and how the etcd team manages it.

Issue and PR management

See issue triage guidelines for details on how issues are managed.

See PR management for guidelines on how pull requests are managed.

etcd Emeritus Maintainers

These emeritus maintainers dedicated a part of their career to etcd and reviewed code, triaged bugs, and pushed the project forward over a substantial period of time. Their contribution is greatly appreciated.

  • Fanmin Shi
  • Anthony Romano

License

etcd is under the Apache 2.0 license. See the LICENSE file for details.

Issues
  • Random performance issue on etcd 3.4

    Random performance issue on etcd 3.4

    Hello,

    We are running a 5 node etcd cluster:

    $ etcdctl endpoint status 
    etcd01, 507905ef22a349ce, 3.4.7, 3.1 GB, true, false, 785, 17694912855, 17694912855, 
    etcd02, 96622104eaa8652d, 3.4.7, 3.1 GB, false, false, 785, 17694912881, 17694912880, 
    ectd03, e91fce12ee84c080, 3.4.7, 3.1 GB, false, false, 785, 17694912903, 17694912903, 
    etcd04, 400fc14411f50272, 3.4.7, 3.1 GB, false, false, 785, 17694912989, 17694912985, 
    etcd05, 87c46f0b178dc777, 3.4.7, 3.1 GB, false, false, 785, 17694913043, 17694913028, 
    

    And we're having some weird performance issue eg:

    # etcdctl endpoint health
    etcd01 is healthy: successfully committed proposal: took = 12.462058ms
    etcd03 is healthy: successfully committed proposal: took = 18.826686ms
    etcd02 is healthy: successfully committed proposal: took = 19.418745ms
    etcd04 is healthy: successfully committed proposal: took = 24.314474ms
    etcd05 is healthy: successfully committed proposal: took = 244.761598ms
    
    # etcdctl endpoint health
    etcd01 is healthy: successfully committed proposal: took = 13.505405ms
    etcd03 is healthy: successfully committed proposal: took = 21.905048ms
    etcd04 is healthy: successfully committed proposal: took = 22.569332ms
    etcd02 is healthy: successfully committed proposal: took = 23.10597ms
    etcd05 is healthy: successfully committed proposal: took = 24.182998ms
    
    # etcdctl endpoint health
    etcd05is healthy: successfully committed proposal: took = 24.854541ms
    etcd01 is healthy: successfully committed proposal: took = 86.045049ms
    etcd03 is healthy: successfully committed proposal: took = 171.771975ms
    etcd04 is healthy: successfully committed proposal: took = 576.218846ms
    etcd02 is healthy: successfully committed proposal: took = 1.06666032s
    

    Not sure how to debug it, it looks pretty random. Feel free to ask for more info!

    stale 
    opened by Sh4d1 76
  • Data inconsistency in etcd version 3.3.11

    Data inconsistency in etcd version 3.3.11

    etcdctl get command returns values sometimes and sometimes it does not return a value even if key value is present in etcd. You can see following command output executed immediately one by one.

    bash-4.4$ etcdctl put /test thisistestvalue OK bash-4.4$ etcdctl get /test bash-4.4$ bash-4.4$ etcdctl get /test bash-4.4$ etcdctl get /test /test thisistestvalue bash-4.4$ etcdctl get /test /test thisistestvalue

    From below command, we can see that the inconsistence happens. We can see each time we query using etcdctl get and create_revision is different sometimes giving different values.

    bash-4.4$ ETCDCTL_API=3 etcdctl get /test --write-out json --consistency="s" {"header":{"cluster_id":10661059405016682411,"member_id":7511149175418186860,"revision":36793,"raft_term":16}} bash-4.4$ ETCDCTL_API=3 etcdctl get /test --write-out json --consistency="s"

    {"header":{"cluster_id":10661059405016682411,"member_id":14491470182485552592,"revision":10495,"raft_term":16} ,"kvs":[{"key":"L3Rlc3Q=","create_revision":6830,"mod_revision":6830,"version":1,"value":"dGVzdHZhbHVl"}],"count":1} bash-4.4$ ETCDCTL_API=3 etcdctl get /test --write-out json --consistency="s" {"header":{"cluster_id":10661059405016682411,"member_id":12240595110633392601,"revision":36802,"raft_term":16}} bash-4.4$

    bash-4.4$ ETCDCTL_API=3 etcdctl get /test1 --prefix=true --write-out json

    {"header":{"cluster_id":10661059405016682411,"member_id":12240595110633392601,"revision":36818,"raft_term":16} ,"kvs":[{"key":"L2VyaWMtY2Nlcy1leHRlbnNpb24tbWFuYWdlci90ZXN0","create_revision":33064,"mod_revision":33064,"version":1,"value":"dmFsdWV0ZXN0"}],"count":1} bash-4.4$ bash-4.4$ ETCDCTL_API=3 etcdctl get /test1 --prefix=true --write-out json

    {"header":{"cluster_id":10661059405016682411,"member_id":14491470182485552592,"revision":10511,"raft_term":16} ,"kvs":[{"key":"L2VyaWMtY2Nlcy1leHRlbnNpb24tbWFuYWdlci90ZXN0","create_revision":3641,"mod_revision":3641,"version":1,"value":"bXl0ZXN0dmFsdWU="}],"count":1} bash-4.4$ ETCDCTL_API=3 etcdctl get /test1 --prefix=true --write-out json

    {"header":{"cluster_id":10661059405016682411,"member_id":7511149175418186860,"revision":36819,"raft_term":16} ,"kvs":[{"key":"L2VyaWMtY2Nlcy1leHRlbnNpb24tbWFuYWdlci90ZXN0","create_revision":33064,"mod_revision":33064,"version":1,"value":"dmFsdWV0ZXN0"}],"count":1}

    Check the operation test as below: After performing Delete operation also we are able to get value for the deleted key.

    bash-4.4$ etcdctl put /temp/test mytestvalue OK bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ bash-4.4$ etcdctl del /temp/test 1 bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl del /temp/test 0 bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl del /temp/test 0 bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue

    These kind of data inconsistency is seen in etcd . ETCD guarantees Data consistency. Could you please help understanding the issue here.? whats happening exactly?

    opened by rahulbapumore 73
  • 3.5 release next steps: Code freeze Monday 5/17

    3.5 release next steps: Code freeze Monday 5/17

    etcd 3.5 has seen a tremendous amount of new features bug fixes and performance and stability improvements. At this time I would like to thank everyone for the hard work and dedication. As per the community meeting on May 6th we have outlined Monday, May 17th as code freeze for the 3.5 release. Below are the proposed series of events for input.

    Steps:

    • [x] cut release-3.5 branch from master (now main). All future merges to main will be 3.6 moving forward (Monday AM 5/17).
    • [x] cut new v3.5.0-beta.3
    • [x] cut new modularized release v3.5.0-beta.3 (Monday AM 5/17).
    • [x] begin correctness and performance/stress testing (ideas, ownership?)

    After testing and validation of the beta, we can consider a sequential beta release or move towards a v3.5 release candidate.

    Your input is greatly appreciated.

    cc @xiang90 @wenjiaswe @ptabor @gyuho @jingyih @lilic @jpbetz @spzala

    area/community 
    opened by hexfusion 73
  • Bad latency (>100ms) of storage

    Bad latency (>100ms) of storage

    https://github.com/coreos/etcd/pull/4070 added a new benchmark for stressing etcd storage. It found a very high latency of put process.

    When a number of written keys is not so large (e.g. 1000), the result will be like this:

    total: 2.686489ms
    average: 2.686µs
    minimum latency: 1.545µs
    maximum latency: 18.209µs
    

    When the number of keys is larger (e.g. 10000), the result will be like this:

    total: 184.821125ms
    average: 18.482µs
    rate: 54106.3691
    minimum latency: 1.719µs
    maximum latency: 142.160798ms
    

    The high latency is also confirmed by @xiang90 : https://github.com/coreos/etcd/pull/4070#issuecomment-168287088

    The result can be easily reproduced with the benchmark e.g. ./benchmark storage put --total 10000.

    opened by mitake 62
  • client: file and environment variables based configuration

    client: file and environment variables based configuration

    Current etcd client library doesn't provide a mechanism for creating client.Client object based on file or env vars. Therefore users must write their own feature for the purpose in their applications.

    For avoiding the duplicated implementations, this PR adds new functions for creating client with file and environment variables based on viper.

    NewWithFile(client.Config, configPath string): create a new Client with a file. Any file formats supported by viper will be accepted.

    NewWithEnv(client.Config): create a new Client with values in environment variables.

    Like the existing New(), application must pass a client.Config object because there are some fields which isn't related to configuration (e.g. Transport).

    Fixes https://github.com/coreos/etcd/issues/4008

    opened by mitake 60
  • Move etcd to github.com/etcd-io/etcd*

    Move etcd to github.com/etcd-io/etcd*

    We are moving etcd and other sub-projects to its own GitHub organization.

    The new org will be https://github.com/etcd-io.

    Many popular Go projects have done this, for better project management:

    • https://github.com/google/protobuf/issues/4796
    • https://github.com/kubernetes/kubernetes/issues/12211, https://github.com/kubernetes/kubernetes/issues/29014
    • https://github.com/vitessio/vitess/pull/3702, https://github.com/vitessio/vitess/pull/3725

    Some of our motivations are:

    • Better team management.
    • Better CI resource utilization; currently, etcd relies on free-tier public CI service, and sharing all resources with other github.com/coreos projects slows down development process.
    • More visibilities to sub-projects and adopt more community projects under etcd organization.

    Move github.com/coreos/etcd and github.com/coreos/bbolt:

    • [x] Decide which namespace we will be using (1 ~ 2 weeks)
    • [x] Announce to etcd and Kubernetes communities (Mon, August 6, 2018)
    • [x] Update all internal github.com/coreos/etcd import paths in all branches (5PM PST, Mon, August 27, 2018)
    • [x] Disable CI integration with current org (5PM PST, Mon, August 27, 2018)
    • [x] Transfer ownership (5PM PST, Mon, August 27, 2018)
    • [x] Set up new CIs (5PM PST, Mon, August 27, 2018)
      • Add environmental variable ETCD_ELECTION_TIMEOUT_TICKS=600
    • [x] Make sure old URL redirects to new URL (5PM PST, Mon, August 27, 2018)
    • [x] Set up vanity import paths to go.etcd.io/$proj

    Sub-projects that do not have downstream projects can be transferred right away:

    • [x] https://github.com/coreos/cetcd (9PM PST, Tue, August 7, 2018)
    • [x] https://github.com/coreos/zetcd (9PM PST, Tue, August 7, 2018)
    • [x] https://github.com/coreos/gofail (9PM PST, Tue, August 7, 2018)
    • [x] https://github.com/coreos/dbtester (Mon, August 6, 2018)
    • [x] https://github.com/coreos/etcdlabs (Mon, August 6, 2018)
    • [x] https://github.com/coreos/etcd-play (Mon, August 6, 2018)
    • [x] https://github.com/coreos/protodoc (Mon, August 6, 2018)
    • [x] https://github.com/coreos/jetcd (9PM PST, Tue, August 7, 2018)

    Projects that won't be moved:

    • https://github.com/coreos/etcd-operator
    • https://github.com/coreos/discovery.etcd.io

    Note: GitHub will redirect all requests to new URL.

    /cc @xiang90 @jpbetz @lburgazzoli @philips @jberkus

    opened by gyuho 59
  • etcd not compatible with grpc v1.30.0

    etcd not compatible with grpc v1.30.0

    To reproduce:

    $ go get google.golang.org/[email protected]
    go: google.golang.org/grpc latest => v1.30.0
    $ go mod tidy
    ...
    go.etcd.io/etcd/v3/clientv3/naming imports
            google.golang.org/grpc/naming: module google.golang.org/[email protected] found (v1.30.0), but does not contain package google.golang.org/grpc/naming
    

    This is a problem for dependents of etcd who want to use the latest grpc.

    The naming package was removed at https://github.com/grpc/grpc-go/pull/3314 and was deprecated in favour of resolver.

    I can work on a pull request if that's helpful.

    area/clientv3 
    opened by xiegeo 55
  • clientv3: grpc-go (v1.27.0) made API changes to balancer / resolver.

    clientv3: grpc-go (v1.27.0) made API changes to balancer / resolver.

    After the release of grpc-go v1.27.0, an error occurred while pulling etcd / clientv3. The steps to reproduce it are as follows:

    1. go.mod:
    go 1.13
    
    require (
    	github.com/coreos/etcd v3.3.18+incompatible // indirect
    	github.com/coreos/go-systemd v0.0.0-00010101000000-000000000000 // indirect
    	github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
    	github.com/gogo/protobuf v1.3.1 // indirect
    	github.com/google/uuid v1.1.1 // indirect
    	go.etcd.io/etcd v3.3.18+incompatible // indirect
    	go.uber.org/zap v1.13.0 // indirect
    	google.golang.org/grpc v1.27.0 // indirect
    )
    
    replace github.com/coreos/go-systemd => github.com/coreos/go-systemd/v22 v22.0.0
    
    1. command:
    $ go get go.etcd.io/etcd/clientv3
    # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:182:31: undefined: resolver.ResolveNowOption
    # github.com/coreos/etcd/clientv3/balancer/picker
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/picker/err.go:37:44: undefined: balancer.PickOptions
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/picker/roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
    
    1. PR:https://github.com/etcd-io/etcd/pull/11564
    area/clientv3 
    opened by eddycjy 54
  • Proxies & Config API

    Proxies & Config API

    Overview

    This pull request adds the ability for nodes to join as proxies when the cluster size limit is reached.

    Changes

    • Peer & Proxy Management added to Registry.
    • Mode added to PeerServer. This can be either PeerMode or ProxyMode.
    • JoinCommand sets overflow nodes as proxies.
    • RemoveCommand removes proxies in addition to peers.
    • Leader responses return X-Leader-Peer-URL & X-Leader-Client-URL headers.
    • New Error (402): Proxy Internal Error

    Questions

    How should we update the proxy urls?

    I would like to minimize the internal state that proxies have to hold and make them as dumb as possible. Currently it retrieves the proxy url via the initial join command. It can also update the proxy urls if the leader changes but the original leader is still available. However, it doesn't handle a leader failure.

    My thought is to simply have a new leader continually ping the proxies after leader change until all proxies have been notified.

    The other option would be to maintain a cluster configuration within the proxies but that means that we're maintaining more state.

    /cc @philips @xiangli-cmu

    opened by benbjohnson 54
  • Etcd size sometimes starts growing and grows until

    Etcd size sometimes starts growing and grows until "mvcc: database space exceeded"

    We have observed already few cases, where suddenly (after days of running a GKE cluster), the size of database starts growing.

    As an example, we have a cluster, that was running without any issues for ~2 weeks (size of database was ~16MB), and then its database started growing. The growth wasn't immediate - it took ~2days, before it reached 4GB limit and there were steps of growing. For the reference we have backups (snapshots) (done via etcdctl snapshot) that reflect the growth speed (the name contains the time when it was made)

      ... // all snapshots are roughly 16MB
      2017-05-24T04:57:24-07:00_snapshot.db 16,27 MB
      2017-05-24T05:57:26-07:00_snapshot.db 29,06 MB
      2017-05-24T06:57:30-07:00_snapshot.db 108,98 MB
      2017-05-24T07:57:36-07:00_snapshot.db 177,57 MB
      2017-05-24T08:57:51-07:00_snapshot.db 308,4 MB        
      2017-05-24T09:58:32-07:00_snapshot.db 534,54 MB
      2017-05-24T11:00:16-07:00_snapshot.db 655,73 MB
      2017-05-24T12:00:55-07:00_snapshot.db 764,22 MB
      ... // all snapshots of the same size
      2017-05-25T15:15:10-07:00_snapshot.db 764,22 MB
      2017-05-25T16:16:25-07:00_snapshot.db 818,14 MB
      2017-05-25T17:26:35-07:00_snapshot.db 963,93 MB
      ... // all snapshots of the same size
      2017-05-25T22:25:08-07:00_snapshot.db 963,93 MB
      2017-05-25T23:27:03-07:00_snapshot.db 1,56 GB
      2017-05-26T00:30:13-07:00_snapshot.db 1,56 GB
      2017-05-26T01:05:24-07:00_snapshot.db 1,56 GB
      2017-05-26T02:24:21-07:00_snapshot.db 2,18 GB
      ... // all snapshots of the same size
      2017-05-26T08:43:07-07:00_snapshot.db 2,18 GB
      2017-05-26T09:46:47-07:00_snapshot.db 2,19 GB
      ... // all snapshots of the same size
      2017-05-26T16:11:31-07:00_snapshot.db 2,19 GB
      2017-05-26T17:16:47-07:00_snapshot.db 2,65 GB
      2017-05-26T18:22:37-07:00_snapshot.db 3,12 GB
      2017-05-26T19:29:07-07:00_snapshot.db 3,86 GB
      2017-05-26T20:33:24-07:00_snapshot.db 4,6 GB
      <boom>
    

    We've checked that we were doing compaction very regularly every 5m for the whole time - so it doesn't seem to be the same as: https://github.com/coreos/etcd/issues/7944 I'm attaching the interested lines from etcd logs in etcd-compaction.txt

    [Note time in that logs are in UTC, and time in snapshot names is PST, so 7 hours difference]

    To summarize, the compaction was always at most few thousands of transactions (so it's not that we did a lot during some 5m period), though there were some longer compactions, up to ~7s.

    I started digging into individual snapshots and found some strange thing (I was using bolt)

    1. 16MB snapshot:
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 10
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 789
            Number of physical leaf overflow pages: 518
    Tree statistics
            Number of keys/value pairs: 1667
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 40960
            Bytes actually used for branch data: 26494 (64%)
            Bytes allocated for physical leaf pages: 5353472
            Bytes actually used for leaf data: 3411680 (63%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 534MB snapshot (5 hours later):
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 65
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 5559
            Number of physical leaf overflow pages: 107743
    Tree statistics
            Number of keys/value pairs: 13073
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 266240
            Bytes actually used for branch data: 186912 (70%)
            Bytes allocated for physical leaf pages: 464084992
            Bytes actually used for leaf data: 451590110 (97%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 1.56GB snapshot (another ~36 hours later):
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 70
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 4525
            Number of physical leaf overflow pages: 115179
    Tree statistics
            Number of keys/value pairs: 10978
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 286720
            Bytes actually used for branch data: 152723 (53%)
            Bytes allocated for physical leaf pages: 490307584
            Bytes actually used for leaf data: 478196884 (97%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 3.86GB snapshot (another ~18 hours later)
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 90
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 6219
            Number of physical leaf overflow pages: 6791
    Tree statistics
            Number of keys/value pairs: 15478
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 368640
            Bytes actually used for branch data: 209621 (56%)
            Bytes allocated for physical leaf pages: 53288960
            Bytes actually used for leaf data: 36704465 (68%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 4.6GB snapshot (1hour later, right before exceeding space):
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 89
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 6074
            Number of physical leaf overflow pages: 6713
    Tree statistics
            Number of keys/value pairs: 15173
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 364544
            Bytes actually used for branch data: 204788 (56%)
            Bytes allocated for physical leaf pages: 52375552
            Bytes actually used for leaf data: 36092789 (68%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 564 (0%)
    

    What is extremely interesting to me is that both:

    • Number of physical leaf overflow pages
    • Bytes allocated for physical leaf pages dropped by order of magnitude in this 3.86GB snapshot, but the total size of database didn't drop

    Unfortunately I can't provide any of those snapshots due to privacy reasons, but maybe you can see anything that we can investigate (or share results of some commands) that can help with debugging?

    @xiang90 @hongchaodeng @mml @lavalamp

    opened by wojtek-t 53
  • Query: apply entries took too long for 1 get request

    Query: apply entries took too long for 1 get request

    Environment: 4 core, Intel i5 , 4 GB , Ubuntu 14.04

    started 3 node etcd cluster in local machine using

    goreman start the Procfile is the default provided, no changes.

    did a get operation using root user ./etcdctl get key1 --user=root

    get following text in the logs:

    19:25:07 etcd3 | 2016-09-27 19:25:07.511023 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765 19:25:07 etcd3 | 2016-09-27 19:25:07.511068 W | etcdserver: apply entries took too long [79.880367ms for 1 entries] 19:25:07 etcd3 | 2016-09-27 19:25:07.511076 W | etcdserver: avoid queries with large range/delete range! 19:25:07 etcd2 | 2016-09-27 19:25:07.521366 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765 19:25:07 etcd2 | 2016-09-27 19:25:07.521439 W | etcdserver: apply entries took too long [90.269411ms for 1 entries] 19:25:07 etcd2 | 2016-09-27 19:25:07.521482 W | etcdserver: avoid queries with large range/delete range! 19:25:07 etcd1 | 2016-09-27 19:25:07.526534 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765 19:25:07 etcd1 | 2016-09-27 19:25:07.526579 W | etcdserver: apply entries took too long [95.582386ms for 1 entries] 19:25:07 etcd1 | 2016-09-27 19:25:07.526588 W | etcdserver: avoid queries with large range/delete range!

    Memory Usage: top-etcd

    takes 10 GB per process

    Query:

    • why does a get operation generates this log, as if the nodes are under load ? did i miss to set some options?
    • is the memory usage normal? what can i do to reduce it.
    • using v3 api, does a get request go through the raft layer? is there a non-linearizable read option in v3 , which doesnt go through raft layer?
    opened by vimalk78 52
  • Unreachable code in `tests/functional/runner/lease_renewer_command.go`

    Unreachable code in `tests/functional/runner/lease_renewer_command.go`

    In the following code, the for statement at line 74 and the break statement at line 81 are unreachable.

    https://github.com/etcd-io/etcd/blob/cabdb13dadad2d853bb2f4be226bce3c220b94eb/tests/functional/runner/lease_renewer_command.go#L69-L89

    Found with revive rule unreachable-code

    opened by chavacava 0
  • datarace: range value `i` is captured (by-reference) in goroutine

    datarace: range value `i` is captured (by-reference) in goroutine

    The range value i is captured in the goroutine (line 119)

    https://github.com/etcd-io/etcd/blob/cabdb13dadad2d853bb2f4be226bce3c220b94eb/client/v3/client_test.go#L113-L122

    fix: pass i as argument of the goroutine

    Found with revive rule datarace

    opened by chavacava 0
  • [3.4] Test failure:

    [3.4] Test failure: "Too many goroutines running after all test"

    We are going to release 3.4.19, and the top priority is to make the pipeline as stable as possible.

    Too many goroutines running after all test(s).
    1 instances of:
    go.etcd.io/etcd/etcdserver/api/v3rpc.(*serverWatchStream).recvLoop(...)
    	/home/runner/work/etcd/etcd/etcdserver/api/v3rpc/watch.go:336 +0x214
    go.etcd.io/etcd/etcdserver/api/v3rpc.(*watchServer).Watch.func2(...)
    	/home/runner/work/etcd/etcd/etcdserver/api/v3rpc/watch.go:190 +0x45
    created by go.etcd.io/etcd/etcdserver/api/v3rpc.(*watchServer).Watch
    	/home/runner/work/etcd/etcd/etcdserver/api/v3rpc/watch.go:189 +0x2ec
    FAIL	go.etcd.io/etcd/clientv3/integration	270.490s
    FAIL
    

    Refer to https://github.com/etcd-io/etcd/runs/7049120619?check_suite_focus=true

    area/testing Help Wanted 
    opened by ahrtr 0
  • [3.4] Test failure on TestRoundRobinBalancedResolvableFailoverFromRequestFail

    [3.4] Test failure on TestRoundRobinBalancedResolvableFailoverFromRequestFail

    We are going to release 3.4.19, and the top priority is to make the pipeline as stable as possible.

    --- FAIL: TestRoundRobinBalancedResolvableFailoverFromRequestFail (0.00s)
        balancer_test.go:308: expected balanced loads for 20 requests, got switches 6
    

    Refer to https://github.com/etcd-io/etcd/runs/7049120841?check_suite_focus=true

    area/testing Help Wanted 
    opened by ahrtr 0
Releases(v3.5.4)
  • v3.5.4(Apr 24, 2022)

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.4 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.4 \
      gcr.io/etcd-development/etcd:v3.5.4 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.4-darwin-amd64.zip(33.82 MB)
    etcd-v3.5.4-linux-amd64.tar.gz(18.53 MB)
    etcd-v3.5.4-linux-arm64.tar.gz(16.66 MB)
    etcd-v3.5.4-linux-ppc64le.tar.gz(16.06 MB)
    etcd-v3.5.4-linux-s390x.tar.gz(17.82 MB)
    etcd-v3.5.4-windows-amd64.zip(18.75 MB)
    SHA256SUMS(581 bytes)
  • v3.5.3(Apr 13, 2022)

    Highlights:

    • Version 3.5.3 is fixing critical correctness issues (https://github.com/etcd-io/etcd/issues/13766, https://github.com/etcd-io/etcd/issues/13514) introduced in the 3.5 branch that could lead to not applying a committed transaction across all replicas in case of a server crash.
    • It's likely 3.5.4 will be releases soon that reverts SRV change added to 3.5.3. Please see the discussion (https://github.com/etcd-io/etcd/issues/13948)

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.3 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.3 \
      gcr.io/etcd-development/etcd:v3.5.3 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.3-darwin-amd64.zip(33.84 MB)
    etcd-v3.5.3-linux-amd64.tar.gz(18.54 MB)
    etcd-v3.5.3-linux-arm64.tar.gz(16.67 MB)
    etcd-v3.5.3-linux-ppc64le.tar.gz(16.08 MB)
    etcd-v3.5.3-linux-s390x.tar.gz(17.84 MB)
    etcd-v3.5.3-windows-amd64.zip(18.77 MB)
    SHA256SUMS(581 bytes)
  • v3.5.2(Feb 1, 2022)

    This release is no longer recommended for production. Please use v3.4 minor until v3.5.3 is released. Read more in https://github.com/etcd-io/etcd/tree/main/CHANGELOG.

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.2
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.2
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.2 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.2 \
      gcr.io/etcd-development/etcd:v3.5.2 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.2-darwin-amd64.zip(33.80 MB)
    etcd-v3.5.2-linux-amd64.tar.gz(18.50 MB)
    etcd-v3.5.2-linux-arm64.tar.gz(16.63 MB)
    etcd-v3.5.2-linux-ppc64le.tar.gz(16.03 MB)
    etcd-v3.5.2-linux-s390x.tar.gz(17.79 MB)
    etcd-v3.5.2-windows-amd64.zip(18.72 MB)
    SHA256SUMS(581 bytes)
  • v3.5.1(Oct 15, 2021)

    This release is no longer recommended for production. Please use v3.4 minor until v3.5.3 is released. Read more in https://github.com/etcd-io/etcd/tree/main/CHANGELOG.

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    

    ####### Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.1 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.1 \
      gcr.io/etcd-development/etcd:v3.5.1 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.1-darwin-amd64.zip(33.79 MB)
    etcd-v3.5.1-linux-amd64.tar.gz(18.50 MB)
    etcd-v3.5.1-linux-arm64.tar.gz(16.62 MB)
    etcd-v3.5.1-linux-ppc64le.tar.gz(16.03 MB)
    etcd-v3.5.1-linux-s390x.tar.gz(17.79 MB)
    etcd-v3.5.1-windows-amd64.zip(18.72 MB)
    SHA256SUMS(581 bytes)
  • v3.4.18(Oct 15, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.18
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.18
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.18 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.18 \
      gcr.io/etcd-development/etcd:v3.4.18 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.18-darwin-amd64.zip(26.86 MB)
    etcd-v3.4.18-linux-amd64.tar.gz(16.60 MB)
    etcd-v3.4.18-linux-arm64.tar.gz(15.39 MB)
    etcd-v3.4.18-linux-ppc64le.tar.gz(15.20 MB)
    etcd-v3.4.18-windows-amd64.zip(16.57 MB)
    SHA256SUMS(489 bytes)
  • v3.3.27(Oct 15, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.27
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.27
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.27 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.27 \
      gcr.io/etcd-development/etcd:v3.3.27 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.27-darwin-amd64.zip(23.50 MB)
    etcd-v3.3.27-linux-amd64.tar.gz(13.61 MB)
    etcd-v3.3.27-linux-arm64.tar.gz(12.49 MB)
    etcd-v3.3.27-linux-ppc64le.tar.gz(12.29 MB)
    etcd-v3.3.27-windows-amd64.zip(13.55 MB)
    SHA256SUMS(489 bytes)
  • v3.4.17(Oct 4, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.17
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.17
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.17 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.17 \
      gcr.io/etcd-development/etcd:v3.4.17 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.17-darwin-amd64.zip(26.86 MB)
    etcd-v3.4.17-linux-amd64.tar.gz(16.60 MB)
    etcd-v3.4.17-linux-arm64.tar.gz(15.39 MB)
    etcd-v3.4.17-linux-ppc64le.tar.gz(15.20 MB)
    etcd-v3.4.17-windows-amd64.zip(16.58 MB)
    SHA256SUMS(489 bytes)
  • v3.3.26(Oct 4, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.26
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.26
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.26 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.26 \
      gcr.io/etcd-development/etcd:v3.3.26 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.26-darwin-amd64.zip(23.50 MB)
    etcd-v3.3.26-linux-amd64.tar.gz(13.61 MB)
    etcd-v3.3.26-linux-arm64.tar.gz(12.49 MB)
    etcd-v3.3.26-linux-ppc64le.tar.gz(12.29 MB)
    etcd-v3.3.26-windows-amd64.zip(13.55 MB)
    SHA256SUMS(489 bytes)
  • v3.5.0(Jun 15, 2021)

    This release is no longer recommended for production. Please use v3.4 minor until v3.5.3 is released. Read more in https://github.com/etcd-io/etcd/tree/main/CHANGELOG.

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    

    ####### Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0 \
      gcr.io/etcd-development/etcd:v3.5.0 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-darwin-amd64.zip(33.77 MB)
    etcd-v3.5.0-linux-amd64.tar.gz(18.49 MB)
    etcd-v3.5.0-linux-arm64.tar.gz(16.61 MB)
    etcd-v3.5.0-linux-ppc64le.tar.gz(16.02 MB)
    etcd-v3.5.0-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-windows-amd64.zip(18.71 MB)
    SHA256SUMS(581 bytes)
  • v3.5.0-rc.1(Jun 9, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-rc.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-rc.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-rc.1 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-rc.1 \
      gcr.io/etcd-development/etcd:v3.5.0-rc.1 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-rc.1-darwin-amd64.zip(33.77 MB)
    etcd-v3.5.0-rc.1-linux-amd64.tar.gz(18.49 MB)
    etcd-v3.5.0-rc.1-linux-arm64.tar.gz(16.61 MB)
    etcd-v3.5.0-rc.1-linux-ppc64le.tar.gz(16.02 MB)
    etcd-v3.5.0-rc.1-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-rc.1-windows-amd64.zip(18.71 MB)
    SHA256SUMS(611 bytes)
  • v3.5.0-rc.0(Jun 4, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-rc.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-rc.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-rc.0 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-rc.0 \
      gcr.io/etcd-development/etcd:v3.5.0-rc.0 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-rc.0-darwin-amd64.zip(33.77 MB)
    etcd-v3.5.0-rc.0-linux-amd64.tar.gz(18.48 MB)
    etcd-v3.5.0-rc.0-linux-arm64.tar.gz(16.61 MB)
    etcd-v3.5.0-rc.0-linux-ppc64le.tar.gz(16.02 MB)
    etcd-v3.5.0-rc.0-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-rc.0-windows-amd64.zip(18.71 MB)
    SHA256SUMS(611 bytes)
  • v3.5.0-beta.4(May 26, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-beta.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-beta.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-beta.4 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-beta.4 \
      gcr.io/etcd-development/etcd:v3.5.0-beta.4 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-beta.4-darwin-amd64.zip(33.76 MB)
    etcd-v3.5.0-beta.4-linux-amd64.tar.gz(18.47 MB)
    etcd-v3.5.0-beta.4-linux-arm64.tar.gz(16.60 MB)
    etcd-v3.5.0-beta.4-linux-ppc64le.tar.gz(16.01 MB)
    etcd-v3.5.0-beta.4-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-beta.4-windows-amd64.zip(18.70 MB)
    SHA256SUMS(623 bytes)
  • v3.5.0-beta.3(May 18, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-beta.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-beta.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-beta.3 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-beta.3 \
      gcr.io/etcd-development/etcd:v3.5.0-beta.3 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-beta.3-darwin-amd64.zip(33.74 MB)
    etcd-v3.5.0-beta.3-linux-amd64.tar.gz(18.47 MB)
    etcd-v3.5.0-beta.3-linux-arm64.tar.gz(16.60 MB)
    etcd-v3.5.0-beta.3-linux-ppc64le.tar.gz(16.01 MB)
    etcd-v3.5.0-beta.3-linux-s390x.tar.gz(17.77 MB)
    etcd-v3.5.0-beta.3-windows-amd64.zip(18.69 MB)
    SHA256SUMS(623 bytes)
  • v3.5.0-beta.1(May 18, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-beta.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-beta.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-beta.1 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-beta.1 \
      gcr.io/etcd-development/etcd:v3.5.0-beta.1 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-beta.1-darwin-amd64.zip(33.75 MB)
    etcd-v3.5.0-beta.1-linux-amd64.tar.gz(18.47 MB)
    etcd-v3.5.0-beta.1-linux-arm64.tar.gz(16.60 MB)
    etcd-v3.5.0-beta.1-linux-ppc64le.tar.gz(16.01 MB)
    etcd-v3.5.0-beta.1-linux-s390x.tar.gz(17.77 MB)
    etcd-v3.5.0-beta.1-windows-amd64.zip(18.69 MB)
    SHA256SUMS(623 bytes)
  • v3.4.16(May 12, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.16
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.16
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.16 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.16 \
      gcr.io/etcd-development/etcd:v3.4.16 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.16-darwin-amd64.zip(26.85 MB)
    etcd-v3.4.16-linux-amd64.tar.gz(16.60 MB)
    etcd-v3.4.16-linux-arm64.tar.gz(15.39 MB)
    etcd-v3.4.16-linux-ppc64le.tar.gz(15.19 MB)
    etcd-v3.4.16-windows-amd64.zip(16.57 MB)
    SHA256SUMS(489 bytes)
  • v3.2.32(Mar 28, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.2.32
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GITHUB_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.2.32
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.2.32 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.2.32 \
      gcr.io/etcd-development/etcd:v3.2.32 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new
    
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.2.32-darwin-amd64.zip(22.63 MB)
    etcd-v3.2.32-linux-amd64.tar.gz(12.92 MB)
    etcd-v3.2.32-linux-arm64.tar.gz(11.84 MB)
    etcd-v3.2.32-linux-ppc64le.tar.gz(11.68 MB)
    etcd-v3.2.32-windows-amd64.zip(12.86 MB)
    SHA256SUMS(489 bytes)
  • v3.4.15(Feb 26, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Note

    Initially the tarballs were pushed without *.tar.gz artifacts (see https://github.com/etcd-io/etcd/issues/12734#issuecomment-804006322). The new version of gziped artifacts were added on 2021-03-22, but (most-likely) due to different gzip version, the SHA256 checksum changed. The original SHA256SUMS was renamed to SHA256SUMS.old and the new version of SHA256SUMS file was pushed.

    Linux
    ETCD_VER=v3.4.15
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.15
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.15 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.15 \
      gcr.io/etcd-development/etcd:v3.4.15 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.15-darwin-amd64.zip(26.84 MB)
    etcd-v3.4.15-linux-amd64.tar(44.74 MB)
    etcd-v3.4.15-linux-amd64.tar.gz(16.59 MB)
    etcd-v3.4.15-linux-arm64.tar(43.03 MB)
    etcd-v3.4.15-linux-arm64.tar.gz(15.38 MB)
    etcd-v3.4.15-linux-ppc64le.tar(43.73 MB)
    etcd-v3.4.15-linux-ppc64le.tar.gz(15.19 MB)
    etcd-v3.4.15-windows-amd64.zip(16.56 MB)
    SHA256SUMS(487 bytes)
    SHA256SUMS.old(489 bytes)
  • v3.5.0-alpha.0(Feb 25, 2021)

    v3.5.0-alpha.0 is an experimental release in order to:

    • test the "modularized" release process
    • enable integration testing with the modularized code of 3.5.x.

    See https://github.com/etcd-io/etcd/issues/12498 for more context.

    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-alpha.0-darwin-amd64.zip(22.97 MB)
    etcd-v3.5.0-alpha.0-linux-amd64.tar.gz(12.57 MB)
    etcd-v3.5.0-alpha.0-linux-arm64.tar.gz(11.33 MB)
    etcd-v3.5.0-alpha.0-linux-ppc64le.tar.gz(10.99 MB)
    etcd-v3.5.0-alpha.0-linux-s390x.tar.gz(12.14 MB)
    etcd-v3.5.0-alpha.0-windows-amd64.zip(12.63 MB)
  • v3.4.14(Nov 25, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.14
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.14
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.14 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.14 \
      gcr.io/etcd-development/etcd:v3.4.14 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.14-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.14-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.14-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.14-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.14-windows-amd64.zip(16.54 MB)
    SHA256SUMS(489 bytes)
  • v3.4.13(Aug 24, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.13
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.13
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.13 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.13 \
      gcr.io/etcd-development/etcd:v3.4.13 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.13-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.13-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.13-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.13-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.13-windows-amd64.zip(16.54 MB)
    SHA256SUMS(489 bytes)
  • v3.3.25(Aug 24, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.25
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.25
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.25 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.25 \
      gcr.io/etcd-development/etcd:v3.3.25 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.25-darwin-amd64.zip(23.49 MB)
    etcd-v3.3.25-linux-amd64.tar.gz(13.60 MB)
    etcd-v3.3.25-linux-arm64.tar.gz(12.48 MB)
    etcd-v3.3.25-linux-ppc64le.tar.gz(12.29 MB)
    etcd-v3.3.25-windows-amd64.zip(13.55 MB)
    SHA256SUMS(489 bytes)
  • v3.4.12(Aug 19, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.12
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.12
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.12 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.12 \
      gcr.io/etcd-development/etcd:v3.4.12 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.12-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.12-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.12-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.12-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.12-windows-amd64.zip(16.54 MB)
    SHA256SUMS(489 bytes)
  • v3.4.11(Aug 18, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.11
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.11
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.11 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.11 \
      gcr.io/etcd-development/etcd:v3.4.11 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.11-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.11-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.11-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.11-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.11-windows-amd64.zip(16.53 MB)
    SHA256SUMS(489 bytes)
  • v3.3.24(Aug 18, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.24
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.24
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.24 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.24 \
      gcr.io/etcd-development/etcd:v3.3.24 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new
    
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.24-darwin-amd64.zip(23.84 MB)
    etcd-v3.3.24-linux-amd64.tar.gz(13.83 MB)
    etcd-v3.3.24-linux-arm64.tar.gz(12.68 MB)
    etcd-v3.3.24-linux-ppc64le.tar.gz(12.49 MB)
    etcd-v3.3.24-windows-amd64.zip(13.75 MB)
    SHA256SUMS(489 bytes)
  • v3.2.31(Aug 18, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.2.31
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GITHUB_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.2.31
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.2.31 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.2.31 \
      gcr.io/etcd-development/etcd:v3.2.31 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new
    
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.2.31-darwin-amd64.zip(22.63 MB)
    etcd-v3.2.31-linux-amd64.tar.gz(12.92 MB)
    etcd-v3.2.31-linux-arm64.tar.gz(11.84 MB)
    etcd-v3.2.31-linux-ppc64le.tar.gz(11.68 MB)
    etcd-v3.2.31-windows-amd64.zip(12.86 MB)
    SHA256SUMS(489 bytes)
  • v3.4.10(Jul 16, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.10
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.10
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p -m700 /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.10 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.10 \
      gcr.io/etcd-development/etcd:v3.4.10 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.10-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.10-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.10-linux-arm64.tar.gz(15.35 MB)
    etcd-v3.4.10-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.10-windows-amd64.zip(16.53 MB)
    SHA256SUMS(489 bytes)
  • v3.3.23(Jul 16, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.23
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.23
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p -m700 /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.23 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.23 \
      gcr.io/etcd-development/etcd:v3.3.23 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.23-darwin-amd64.zip(24.81 MB)
    etcd-v3.3.23-linux-amd64.tar.gz(14.36 MB)
    etcd-v3.3.23-linux-arm64.tar.gz(13.17 MB)
    etcd-v3.3.23-linux-ppc64le.tar.gz(12.96 MB)
    etcd-v3.3.23-windows-amd64.zip(14.31 MB)
    SHA256SUMS(489 bytes)
  • v3.4.9(May 21, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.9
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.9
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.9 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.9 \
      gcr.io/etcd-development/etcd:v3.4.9 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.9 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.9 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.9 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.9 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.9 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.9-darwin-amd64.zip(26.78 MB)
    etcd-v3.4.9-linux-amd64.tar.gz(16.55 MB)
    etcd-v3.4.9-linux-arm64.tar.gz(15.34 MB)
    etcd-v3.4.9-linux-ppc64le.tar.gz(15.15 MB)
    etcd-v3.4.9-windows-amd64.zip(16.52 MB)
    SHA256SUMS(484 bytes)
  • v3.3.22(May 21, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.22
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.22
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.22 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.22 \
      gcr.io/etcd-development/etcd:v3.3.22 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --listen-client-urls http://0.0.0.0:2379 \
      --advertise-client-urls http://0.0.0.0:2379 \
      --listen-peer-urls http://0.0.0.0:2380 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.22 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.22 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.22 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.22 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.22 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.22-darwin-amd64.zip(23.48 MB)
    etcd-v3.3.22-linux-amd64.tar.gz(13.60 MB)
    etcd-v3.3.22-linux-arm64.tar.gz(12.47 MB)
    etcd-v3.3.22-linux-ppc64le.tar.gz(12.28 MB)
    etcd-v3.3.22-windows-amd64.zip(13.54 MB)
    SHA256SUMS(489 bytes)
Owner
etcd-io
etcd Development and Communities
etcd-io
BlobStore is a highly reliable,highly available and ultra-large scale distributed storage system

BlobStore Overview Documents Build BlobStore Deploy BlobStore Manage BlobStore License Overview BlobStore is a highly reliable,highly available and ul

CubeFS 14 Apr 28, 2022
A distributed key-value storage system developed by Alibaba Group

Product Overview Tair is fast-access memory (MDB)/persistent (LDB) storage service. Using a high-performance and high-availability distributed cluster

Alibaba 1.9k Jun 20, 2022
The TinyKV course builds a key-value storage system with the Raft consensus algorithm.

The TinyKV Course The TinyKV course builds a key-value storage system with the Raft consensus algorithm. It is inspired by MIT 6.824 and TiKV Project.

jaegerwang 1 Nov 19, 2021
Asynq: simple, reliable, and efficient distributed task queue in Go

Asynq: simple, reliable, and efficient distributed task queue in Go

Ken Hibino 3.4k Jun 25, 2022
gathering distributed key-value datastores to become a cluster

go-ds-cluster gathering distributed key-value datastores to become a cluster About The Project This project is going to implement go-datastore in a fo

FileDrive Team 15 May 31, 2022
Elastic Key-Value Storage With Strong Consistency and Reliability

What is Elasticell? Elasticell is a distributed NoSQL database with strong consistency and reliability. Compatible with Redis protocol Use Elasticell

Deep Fabric 500 Jun 11, 2022
An implementation of a distributed KV store backed by Raft tolerant of node failures and network partitions 🚣

barge A simple implementation of a consistent, distributed Key:Value store which uses the Raft Concensus Algorithm. This project launches a cluster of

Shehjad Khan 0 Nov 24, 2021
Distributed-Services - Distributed Systems with Golang to consequently build a fully-fletched distributed service

Distributed-Services This project is essentially a result of my attempt to under

Hamza Yusuff 6 Jun 1, 2022
Fast, efficient, and scalable distributed map/reduce system, DAG execution, in memory or on disk, written in pure Go, runs standalone or distributedly.

Gleam Gleam is a high performance and efficient distributed execution system, and also simple, generic, flexible and easy to customize. Gleam is built

Chris Lu 3.1k Jun 28, 2022
A distributed system for embedding-based retrieval

Overview Vearch is a scalable distributed system for efficient similarity search of deep learning vectors. Architecture Data Model space, documents, v

vector search infrastructure for AI applications 1.4k Jun 30, 2022
💡 A Distributed and High-Performance Monitoring System. The next generation of Open-Falcon

夜莺简介 夜莺是一套分布式高可用的运维监控系统,最大的特点是混合云支持,既可以支持传统物理机虚拟机的场景,也可以支持K8S容器的场景。同时,夜莺也不只是监控,还有一部分CMDB的能力、自动化运维的能力,很多公司都基于夜莺开发自己公司的运维平台。开源的这部分功能模块也是商业版本的一部分,所以可靠性有保

DiDi 4.8k Jun 30, 2022
a dynamic configuration framework used in distributed system

go-archaius This is a light weight configuration management framework which helps to manage configurations in distributed system The main objective of

null 195 Jun 17, 2022
Verifiable credential system on Cosmos with IBC for Distributed Identities

CertX This is a project designed to demonstrate the use of IBC between different zones in the Cosmos ecosystem for privacy preserving credential manag

bwty 6 Mar 29, 2022
A distributed and coördination-free log management system

OK Log is archived I hoped to find the opportunity to continue developing OK Log after the spike of its creation. Unfortunately, despite effort, no su

OK Log 3k Jun 26, 2022
A distributed MySQL binlog storage system built on Raft

What is kingbus? 中文 Kingbus is a distributed MySQL binlog store based on raft. Kingbus can act as a slave to the real master and as a master to the sl

Fei Chen 844 Jun 16, 2022
Dkron - Distributed, fault tolerant job scheduling system https://dkron.io

Dkron - Distributed, fault tolerant job scheduling system for cloud native environments Website: http://dkron.io/ Dkron is a distributed cron service,

Distributed Works 3.2k Jul 1, 2022
JuiceFS is a distributed POSIX file system built on top of Redis and S3.

JuiceFS is a high-performance POSIX file system released under GNU Affero General Public License v3.0. It is specially optimized for the cloud-native

Juicedata, Inc 5.6k Jul 4, 2022
implementation of some distributed system techniques

Distributed Systems These applications were built with the objective of studding a distributed systems using the most recent technics. The main ideia

Rafael A. C 6 Feb 18, 2022