<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>v2.3 docs on etcd</title><link>https://etcd.io/docs/v2.3/</link><description>Recent content in v2.3 docs on etcd</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://etcd.io/docs/v2.3/index.xml" rel="self" type="application/rss+xml"/><item><title>Administration</title><link>https://etcd.io/docs/v2.3/admin_guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/admin_guide/</guid><description>&lt;h2 id="data-directory"&gt;Data Directory&lt;/h2&gt;
&lt;h3 id="lifecycle"&gt;Lifecycle&lt;/h3&gt;
&lt;p&gt;When first started, etcd stores its configuration into a data directory specified by the data-dir configuration parameter.
Configuration is stored in the write ahead log and includes: the local member ID, cluster ID, and initial cluster configuration.
The write ahead log and snapshot files are used during member operation and to recover after a restart.&lt;/p&gt;
&lt;p&gt;Having a dedicated disk to store wal files can improve the throughput and stabilize the cluster.
It is highly recommended to dedicate a wal disk and set &lt;code&gt;--wal-dir&lt;/code&gt; to point to a directory on that device for a production cluster deployment.&lt;/p&gt;</description></item><item><title>Authentication Guide</title><link>https://etcd.io/docs/v2.3/authentication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/authentication/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Authentication -- having users and roles in etcd -- was added in etcd 2.1. This guide will help you set up basic authentication in etcd.&lt;/p&gt;
&lt;p&gt;etcd before 2.1 was a completely open system; anyone with access to the API could change keys. In order to preserve backward compatibility and upgradability, this feature is off by default.&lt;/p&gt;
&lt;p&gt;For a full discussion of the RESTful API, see &lt;a href="../auth_api"&gt;the authentication API documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="special-users-and-roles"&gt;Special Users and Roles&lt;/h2&gt;
&lt;p&gt;There is one special user, &lt;code&gt;root&lt;/code&gt;, and there are two special roles, &lt;code&gt;root&lt;/code&gt; and &lt;code&gt;guest&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Backward Compatibility</title><link>https://etcd.io/docs/v2.3/backward_compatibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/backward_compatibility/</guid><description>&lt;p&gt;The main goal of etcd 2.0 release is to improve cluster safety around bootstrapping and dynamic reconfiguration. To do this, we deprecated the old error-prone APIs and provide a new set of APIs.&lt;/p&gt;
&lt;p&gt;The other main focus of this release was a more reliable Raft implementation, but as this change is internal it should not have any notable effects to users.&lt;/p&gt;
&lt;h2 id="command-line-flags-changes"&gt;Command Line Flags Changes&lt;/h2&gt;
&lt;p&gt;The major flag changes are to mostly related to bootstrapping. The &lt;code&gt;initial-*&lt;/code&gt; flags provide an improved way to specify the required criteria to start the cluster. The advertised URLs now support a list of values instead of a single value, which allows etcd users to gracefully migrate to the new set of IANA-assigned ports (2379/client and 2380/peers) while maintaining backward compatibility with the old ports.&lt;/p&gt;</description></item><item><title>Clustering Guide</title><link>https://etcd.io/docs/v2.3/clustering/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/clustering/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Starting an etcd cluster statically requires that each member knows another in the cluster. In a number of cases, you might not know the IPs of your cluster members ahead of time. In these cases, you can bootstrap an etcd cluster with the help of a discovery service.&lt;/p&gt;
&lt;p&gt;Once an etcd cluster is up and running, adding or removing members is done via &lt;a href="../runtime-configuration/"&gt;runtime reconfiguration&lt;/a&gt;. To better understand the design behind runtime reconfiguration, we suggest you read &lt;a href="../runtime-reconf-design/"&gt;the runtime configuration design document&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Configuration Flags</title><link>https://etcd.io/docs/v2.3/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/configuration/</guid><description>&lt;p&gt;etcd is configurable through command-line flags and environment variables. Options set on the command line take precedence over those from the environment.&lt;/p&gt;
&lt;p&gt;The format of environment variable for flag &lt;code&gt;--my-flag&lt;/code&gt; is &lt;code&gt;ETCD_MY_FLAG&lt;/code&gt;. It applies to all flags.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt" target="_blank" rel="noopener"&gt;official etcd ports&lt;/a&gt; are 2379 for client requests, and 2380 for peer communication. Some legacy code and documentation still references ports 4001 and 7001, but all new etcd use and discussion should adopt the assigned ports.&lt;/p&gt;</description></item><item><title>Design of Runtime Reconfiguration</title><link>https://etcd.io/docs/v2.3/runtime-reconf-design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/runtime-reconf-design/</guid><description>&lt;p&gt;Runtime reconfiguration is one of the hardest and most error prone features in a distributed system, especially in a consensus based system like etcd.&lt;/p&gt;
&lt;p&gt;Read on to learn about the design of etcd&amp;rsquo;s runtime reconfiguration commands and how we tackled these problems.&lt;/p&gt;
&lt;h2 id="two-phase-config-changes-keep-you-safe"&gt;Two Phase Config Changes Keep you Safe&lt;/h2&gt;
&lt;p&gt;In etcd, every runtime reconfiguration has to go through &lt;a href="../runtime-configuration#add-a-new-member"&gt;two phases&lt;/a&gt; for safety reasons. For example, to add a member you need to first inform cluster of new configuration and then start the new member.&lt;/p&gt;</description></item><item><title>Discovery Service Protocol</title><link>https://etcd.io/docs/v2.3/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/discovery_protocol/</guid><description>&lt;p&gt;Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery URL.&lt;/p&gt;
&lt;p&gt;Discovery service protocol is &lt;em&gt;only&lt;/em&gt; used in cluster bootstrap phase, and cannot be used for runtime reconfiguration or cluster monitoring.&lt;/p&gt;
&lt;p&gt;The protocol uses a new discovery token to bootstrap one &lt;em&gt;unique&lt;/em&gt; etcd cluster. Remember that one discovery token can represent only one etcd cluster. As long as discovery protocol on this token starts, even if it fails halfway, it must not be used to bootstrap another etcd cluster.&lt;/p&gt;</description></item><item><title>Error Code</title><link>https://etcd.io/docs/v2.3/errorcode/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/errorcode/</guid><description>&lt;p&gt;This document describes the error code used in key space &amp;lsquo;/v2/keys&amp;rsquo;. Feel free to import &amp;lsquo;&lt;a href="https://github.com/etcd-io/etcd/tree/v2.3.8/error" target="_blank" rel="noopener"&gt;https://github.com/etcd-io/etcd/tree/v2.3.8/error&lt;/a&gt;' to use.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s categorized into four groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Command Related Error&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;name&lt;/th&gt;
 &lt;th&gt;code&lt;/th&gt;
 &lt;th&gt;strerror&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeKeyNotFound&lt;/td&gt;
 &lt;td&gt;100&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Key not found&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeTestFailed&lt;/td&gt;
 &lt;td&gt;101&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Compare failed&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeNotFile&lt;/td&gt;
 &lt;td&gt;102&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Not a file&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeNotDir&lt;/td&gt;
 &lt;td&gt;104&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Not a directory&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeNodeExist&lt;/td&gt;
 &lt;td&gt;105&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Key already exists&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeRootROnly&lt;/td&gt;
 &lt;td&gt;107&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Root is read only&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeDirNotEmpty&lt;/td&gt;
 &lt;td&gt;108&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Directory not empty&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Post Form Related Error&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;name&lt;/th&gt;
 &lt;th&gt;code&lt;/th&gt;
 &lt;th&gt;strerror&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodePrevValueRequired&lt;/td&gt;
 &lt;td&gt;201&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;PrevValue is Required in POST form&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeTTLNaN&lt;/td&gt;
 &lt;td&gt;202&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;The given TTL in POST form is not a number&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeIndexNaN&lt;/td&gt;
 &lt;td&gt;203&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;The given index in POST form is not a number&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeInvalidField&lt;/td&gt;
 &lt;td&gt;209&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Invalid field&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeInvalidForm&lt;/td&gt;
 &lt;td&gt;210&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Invalid POST form&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Raft Related Error&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;name&lt;/th&gt;
 &lt;th&gt;code&lt;/th&gt;
 &lt;th&gt;strerror&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeRaftInternal&lt;/td&gt;
 &lt;td&gt;300&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Raft Internal Error&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeLeaderElect&lt;/td&gt;
 &lt;td&gt;301&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;During Leader Election&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;etcd Related Error&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;name&lt;/th&gt;
 &lt;th&gt;code&lt;/th&gt;
 &lt;th&gt;strerror&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeWatcherCleared&lt;/td&gt;
 &lt;td&gt;400&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;watcher is cleared due to etcd recovery&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;EcodeEventIndexCleared&lt;/td&gt;
 &lt;td&gt;401&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;The event in requested index is outdated and cleared&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>etcd API</title><link>https://etcd.io/docs/v2.3/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/api/</guid><description>&lt;h2 id="running-a-single-machine-cluster"&gt;Running a Single Machine Cluster&lt;/h2&gt;
&lt;p&gt;These examples will use a single member cluster to show you the basics of the etcd REST API.
Let&amp;rsquo;s start etcd:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./bin/etcd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will bring up etcd listening on the IANA assigned ports and listening on localhost.
The IANA assigned ports for etcd are 2379 for client communication and 2380 for server-to-server communication.&lt;/p&gt;
&lt;h2 id="getting-the-etcd-version"&gt;Getting the etcd version&lt;/h2&gt;
&lt;p&gt;The etcd version of a specific instance can be obtained from the &lt;code&gt;/version&lt;/code&gt; endpoint.&lt;/p&gt;</description></item><item><title>etcd v3 API</title><link>https://etcd.io/docs/v2.3/rfc/v3api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/rfc/v3api/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The etcd v3 API is designed to give users a more efficient and cleaner abstraction compared to etcd v2. There are a number of semantic and protocol changes in this new API.&lt;/p&gt;
&lt;p&gt;To prove out the design of the v3 API the team has also built &lt;a href="https://github.com/etcd-io/etcd/tree/v2.3.8/contrib/recipes" target="_blank" rel="noopener"&gt;a number of example recipes&lt;/a&gt;, there is a &lt;a href="https://www.youtube.com/watch?v=fj-2RY-3yVU&amp;amp;feature=youtu.be&amp;amp;t=590" target="_blank" rel="noopener"&gt;video discussing these recipes too&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="design"&gt;Design&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Flatten binary key-value space&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep the event history until compaction&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;access to old version of keys&lt;/li&gt;
&lt;li&gt;user controlled history compaction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support range query&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://etcd.io/docs/v2.3/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/faq/</guid><description>&lt;h2 id="1-why-can-an-etcd-client-read-an-old-version-of-data-when-a-majority-of-the-etcd-cluster-members-are-down"&gt;1) Why can an etcd client read an old version of data when a majority of the etcd cluster members are down?&lt;/h2&gt;
&lt;p&gt;In situations where a client connects to a minority, etcd
favors by default availability over consistency. This means that even though
data might be “out of date”, it is still better to return something versus
nothing.&lt;/p&gt;
&lt;p&gt;In order to confirm that a read is up to date with a majority of the cluster,
the client can use the &lt;code&gt;quorum=true&lt;/code&gt; parameter on reads of keys. This means
that a majority of the cluster is checked on reads before returning the data,
otherwise the read will timeout and fail.&lt;/p&gt;</description></item><item><title>Glossary</title><link>https://etcd.io/docs/v2.3/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/glossary/</guid><description>&lt;p&gt;This document defines the various terms used in etcd documentation, command line and source code.&lt;/p&gt;
&lt;h2 id="node"&gt;Node&lt;/h2&gt;
&lt;p&gt;Node is an instance of raft state machine.&lt;/p&gt;
&lt;p&gt;It has a unique identification, and records other nodes&amp;rsquo; progress internally when it is the leader.&lt;/p&gt;
&lt;h2 id="member"&gt;Member&lt;/h2&gt;
&lt;p&gt;Member is an instance of etcd. It hosts a node, and provides service to clients.&lt;/p&gt;
&lt;h2 id="cluster"&gt;Cluster&lt;/h2&gt;
&lt;p&gt;Cluster consists of several members.&lt;/p&gt;
&lt;p&gt;The node in each member follows raft consensus protocol to replicate logs. Cluster receives proposals from members, commits them and apply to local store.&lt;/p&gt;</description></item><item><title>Libraries and Tools</title><link>https://etcd.io/docs/v2.3/libraries-and-tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/libraries-and-tools/</guid><description>&lt;p&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/etcd-io/etcd/tree/v2.3.8/etcdctl" target="_blank" rel="noopener"&gt;etcdctl&lt;/a&gt; - A command line client for etcd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190113041300/https://github.com/fanhattan/etcd-backup" target="_blank" rel="noopener"&gt;etcd-backup&lt;/a&gt; - A powerful command line utility for dumping/restoring etcd - Supports v2&lt;/li&gt;
&lt;li&gt;&lt;a href="https://npmjs.org/package/etcd-dump" target="_blank" rel="noopener"&gt;etcd-dump&lt;/a&gt; - Command line utility for dumping/restoring etcd.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/xetorthio/etcd-fs" target="_blank" rel="noopener"&gt;etcd-fs&lt;/a&gt; - FUSE filesystem for etcd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rekby/etcddir" target="_blank" rel="noopener"&gt;etcddir&lt;/a&gt; - Realtime sync etcd and local directory. Work with windows and linux.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/henszey/etcd-browser" target="_blank" rel="noopener"&gt;etcd-browser&lt;/a&gt; - A web-based key/value editor for etcd using AngularJS&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/datawisesystems/etcd-lock" target="_blank" rel="noopener"&gt;etcd-lock&lt;/a&gt; - Master election &amp;amp; distributed r/w lock implementation using etcd - Supports v2&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/matishsiao/etcd-console" target="_blank" rel="noopener"&gt;etcd-console&lt;/a&gt; - A web-base key/value editor for etcd using PHP&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nikfoundas/etcd-viewer" target="_blank" rel="noopener"&gt;etcd-viewer&lt;/a&gt; - An etcd key-value store editor/viewer written in Java&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mickep76/etcdtool" target="_blank" rel="noopener"&gt;etcdtool&lt;/a&gt; - Export/Import/Edit etcd directory as JSON/YAML/TOML and Validate directory using JSON schema&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190113041300/https://github.com/mickep76/etcdrest" target="_blank" rel="noopener"&gt;etcd-rest&lt;/a&gt; - Create generic REST API in Go using etcd as a backend with validation using JSON schema&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190113041250/https://github.com/kamilhark/etcdsh" target="_blank" rel="noopener"&gt;etcdsh&lt;/a&gt; - A command line client with support of command history and tab completion. Supports v2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Go libraries&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Members API</title><link>https://etcd.io/docs/v2.3/members_api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/members_api/</guid><description>&lt;h2 id="list-members"&gt;List members&lt;/h2&gt;
&lt;p&gt;Return an HTTP 200 OK response code and a representation of all members in the etcd cluster.&lt;/p&gt;
&lt;h3 id="request"&gt;Request&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;GET /v2/members HTTP/1.1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="example"&gt;Example&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl http://10.0.0.10:2379/v2/members
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000;font-weight:bold"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;members&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;272e204152&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;infra1&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;peerURLs&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;http://10.0.0.10:2380&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;clientURLs&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;http://10.0.0.10:2379&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;2225373f43&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;infra2&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;peerURLs&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;http://10.0.0.11:2380&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;clientURLs&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#4e9a06"&gt;&amp;#34;http://10.0.0.11:2379&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000;font-weight:bold"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="add-a-member"&gt;Add a member&lt;/h2&gt;
&lt;p&gt;Returns an HTTP 201 response code and the representation of added member with a newly generated a memberID when successful. Returns a string describing the failure condition when unsuccessful.&lt;/p&gt;</description></item><item><title>Metrics</title><link>https://etcd.io/docs/v2.3/metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/metrics/</guid><description>&lt;p&gt;etcd uses &lt;a href="http://prometheus.io/" target="_blank" rel="noopener"&gt;Prometheus&lt;/a&gt; for metrics reporting. The metrics can be used for real-time monitoring and debugging. etcd does not persist its metrics; if a member restarts, the metrics will be reset.&lt;/p&gt;
&lt;p&gt;The simplest way to see the available metrics is to cURL the metrics endpoint &lt;code&gt;/metrics&lt;/code&gt;. The format is described &lt;a href="http://prometheus.io/docs/instrumenting/exposition_formats/" target="_blank" rel="noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href="http://prometheus.io/docs/introduction/getting_started/" target="_blank" rel="noopener"&gt;Prometheus getting started doc&lt;/a&gt; to spin up a Prometheus server to collect etcd metrics.&lt;/p&gt;
&lt;p&gt;The naming of metrics follows the suggested &lt;a href="http://prometheus.io/docs/practices/naming/" target="_blank" rel="noopener"&gt;Prometheus best practices&lt;/a&gt;. A metric name has an &lt;code&gt;etcd&lt;/code&gt; or &lt;code&gt;etcd_debugging&lt;/code&gt; prefix as its namespace and a subsystem prefix (for example &lt;code&gt;wal&lt;/code&gt; and &lt;code&gt;etcdserver&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Miscellaneous APIs</title><link>https://etcd.io/docs/v2.3/other_apis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/other_apis/</guid><description>&lt;h2 id="getting-the-etcd-version"&gt;Getting the etcd version&lt;/h2&gt;
&lt;p&gt;The etcd version of a specific instance can be obtained from the &lt;code&gt;/version&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -L http://127.0.0.1:2379/version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;etcd 2.0.12
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="checking-health-of-an-etcd-member-node"&gt;Checking health of an etcd member node&lt;/h2&gt;
&lt;p&gt;etcd provides a &lt;code&gt;/health&lt;/code&gt; endpoint to verify the health of a particular member.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl http://10.0.0.10:2379/health
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000;font-weight:bold"&gt;{&lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;&amp;#34;health&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Production Users</title><link>https://etcd.io/docs/v2.3/production-users/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/production-users/</guid><description>&lt;p&gt;This document tracks people and use cases for etcd in production. By creating a list of production use cases we hope to build a community of advisors that we can reach out to with experience using various etcd applications, operation environments, and cluster sizes. The etcd development team may reach out periodically to check-in on your experience and update this list.&lt;/p&gt;
&lt;h2 id="discoveryetcdio"&gt;discovery.etcd.io&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Application&lt;/em&gt;: &lt;a href="https://github.com/etcd-io/discovery.etcd.io" target="_blank" rel="noopener"&gt;https://github.com/etcd-io/discovery.etcd.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Launched&lt;/em&gt;: Feb. 2014&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Cluster Size&lt;/em&gt;: 5 members, 5 discovery proxies&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Order of Data Size&lt;/em&gt;: 100s of Megabytes&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Operator&lt;/em&gt;: CoreOS, &lt;a href="mailto:brandon.philips@coreos.com"&gt;brandon.philips@coreos.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Environment&lt;/em&gt;: AWS&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Backups&lt;/em&gt;: Periodic async to S3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;discovery.etcd.io is the longest continuously running etcd backed service that we know about. It is the basis of automatic cluster bootstrap and was launched in Feb. 2014: &lt;a href="https://coreos.com/blog/etcd-0.3.0-released/" target="_blank" rel="noopener"&gt;https://coreos.com/blog/etcd-0.3.0-released/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Proxy</title><link>https://etcd.io/docs/v2.3/proxy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/proxy/</guid><description>&lt;p&gt;etcd can run as a transparent proxy. Doing so allows for easy discovery of etcd within your infrastructure, since it can run on each machine as a local service. In this mode, etcd acts as a reverse proxy and forwards client requests to an active etcd cluster. The etcd proxy does not participate in the consensus replication of the etcd cluster, thus it neither increases the resilience nor decreases the write performance of the etcd cluster.&lt;/p&gt;</description></item><item><title>Reporting Bugs</title><link>https://etcd.io/docs/v2.3/reporting_bugs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/reporting_bugs/</guid><description>&lt;p&gt;If you find bugs or documentation mistakes in the etcd project, please let us know by &lt;a href="https://github.com/etcd-io/etcd/issues/new" target="_blank" rel="noopener"&gt;opening an issue&lt;/a&gt;. We treat bugs and mistakes very seriously and believe no issue is too small. Before creating a bug report, please check that an issue reporting the same problem does not already exist.&lt;/p&gt;
&lt;p&gt;To make your bug report accurate and easy to understand, please try to create bug reports that are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Specific. Include as much details as possible: which version, what environment, what configuration, etc. You can also attach etcd log (the starting log with etcd configuration is especially important).&lt;/p&gt;</description></item><item><title>Running etcd under Docker</title><link>https://etcd.io/docs/v2.3/docker_guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/docker_guide/</guid><description>&lt;p&gt;The following guide will show you how to run etcd under Docker using the &lt;a href="../clustering#static"&gt;static bootstrap process&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="running-etcd-in-standalone-mode"&gt;Running etcd in standalone mode&lt;/h2&gt;
&lt;p&gt;In order to expose the etcd API to clients outside of the Docker host you&amp;rsquo;ll need use the host IP address when configuring etcd.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;export HostIP=&amp;#34;192.168.12.50&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The following &lt;code&gt;docker run&lt;/code&gt; command will expose the etcd client API over ports 4001 and 2379, and expose the peer port over 2380.&lt;/p&gt;
&lt;p&gt;This will run the latest release version of etcd. You can specify version if needed (e.g. &lt;code&gt;quay.io/coreos/etcd:v2.2.0&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Runtime Reconfiguration</title><link>https://etcd.io/docs/v2.3/runtime-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/runtime-configuration/</guid><description>&lt;p&gt;etcd comes with support for incremental runtime reconfiguration, which allows users to update the membership of the cluster at run time.&lt;/p&gt;
&lt;p&gt;Reconfiguration requests can only be processed when the majority of the cluster members are functioning. It is &lt;strong&gt;highly recommended&lt;/strong&gt; to always have a cluster size greater than two in production. It is unsafe to remove a member from a two member cluster. The majority of a two member cluster is also two. If there is a failure during the removal process, the cluster might not able to make progress and need to &lt;a href="#restart-cluster-from-majority-failure"&gt;restart from majority failure&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Security Model</title><link>https://etcd.io/docs/v2.3/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/security/</guid><description>&lt;p&gt;etcd supports SSL/TLS as well as authentication through client certificates, both for clients to server as well as peer (server to server / cluster) communication.&lt;/p&gt;
&lt;p&gt;To get up and running you first need to have a CA certificate and a signed key pair for one member. It is recommended to create and sign a new key pair for every member in a cluster.&lt;/p&gt;
&lt;p&gt;For convenience, the &lt;a href="https://github.com/cloudflare/cfssl" target="_blank" rel="noopener"&gt;cfssl&lt;/a&gt; tool provides an easy interface to certificate generation, and we provide an example using the tool &lt;a href="https://github.com/etcd-io/etcd/tree/master/hack/tls-setup" target="_blank" rel="noopener"&gt;here&lt;/a&gt;. You can also examine this &lt;a href="https://github.com/coreos/docs/blob/master/os/generate-self-signed-certificates.md" target="_blank" rel="noopener"&gt;alternative guide to generating self-signed key pairs&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Snapshot Migration</title><link>https://etcd.io/docs/v2.3/04_to_2_snapshot_migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/04_to_2_snapshot_migration/</guid><description>&lt;p&gt;You can migrate a snapshot of your data from a v0.4.9+ cluster into a new etcd 2.2 cluster using a snapshot migration. After snapshot migration, the etcd indexes of your data will change. Many etcd applications rely on these indexes to behave correctly. This operation should only be done while all etcd applications are stopped.&lt;/p&gt;
&lt;p&gt;To get started get the newest data snapshot from the 0.4.9+ cluster:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl http://cluster.example.com:4001/v2/migration/snapshot &amp;gt; backup.snap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, import the snapshot into your new cluster:&lt;/p&gt;</description></item><item><title>Tuning</title><link>https://etcd.io/docs/v2.3/tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/tuning/</guid><description>&lt;p&gt;The default settings in etcd should work well for installations on a local network where the average network latency is low.
However, when using etcd across multiple data centers or over networks with high latency you may need to tweak the heartbeat interval and election timeout settings.&lt;/p&gt;
&lt;p&gt;The network isn&amp;rsquo;t the only source of latency. Each request and response may be impacted by slow disks on both the leader and follower. Each of these timeouts represents the total time from request to successful response from the other machine.&lt;/p&gt;</description></item><item><title>Upgrade etcd from 2.1 to 2.2</title><link>https://etcd.io/docs/v2.3/upgrade_2_1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/upgrade_2_1/</guid><description>&lt;p&gt;In the general case, upgrading from etcd 2.0 to 2.1 can be a zero-downtime, rolling upgrade:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one by one, stop the etcd v2.0 processes and replace them with etcd v2.1 processes&lt;/li&gt;
&lt;li&gt;after you are running all v2.1 processes, new features in v2.1 are available to the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before &lt;a href="#upgrade-procedure"&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;
&lt;h2 id="upgrade-checklists"&gt;Upgrade Checklists&lt;/h2&gt;
&lt;h3 id="upgrade-requirements"&gt;Upgrade Requirements&lt;/h3&gt;
&lt;p&gt;To upgrade an existing etcd deployment to 2.1, you must be running 2.0. If you’re running a version of etcd before 2.0, you must upgrade to &lt;a href="https://github.com/etcd-io/etcd/releases/tag/v2.0.13" target="_blank" rel="noopener"&gt;2.0&lt;/a&gt; before upgrading to 2.1.&lt;/p&gt;</description></item><item><title>Upgrade etcd from 2.1 to 2.2</title><link>https://etcd.io/docs/v2.3/upgrade_2_2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/upgrade_2_2/</guid><description>&lt;p&gt;In the general case, upgrading from etcd 2.1 to 2.2 can be a zero-downtime, rolling upgrade:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one by one, stop the etcd v2.1 processes and replace them with etcd v2.2 processes&lt;/li&gt;
&lt;li&gt;after you are running all v2.2 processes, new features in v2.2 are available to the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before &lt;a href="#upgrade-procedure"&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;
&lt;h2 id="upgrade-checklists"&gt;Upgrade Checklists&lt;/h2&gt;
&lt;h3 id="upgrade-requirement"&gt;Upgrade Requirement&lt;/h3&gt;
&lt;p&gt;To upgrade an existing etcd deployment to 2.2, you must be running 2.1. If you’re running a version of etcd before 2.1, you must upgrade to &lt;a href="https://github.com/etcd-io/etcd/releases/tag/v2.1.2" target="_blank" rel="noopener"&gt;2.1&lt;/a&gt; before upgrading to 2.2.&lt;/p&gt;</description></item><item><title>Upgrade etcd from 2.2 to 2.3</title><link>https://etcd.io/docs/v2.3/upgrade_2_3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/upgrade_2_3/</guid><description>&lt;p&gt;In the general case, upgrading from etcd 2.2 to 2.3 can be a zero-downtime, rolling upgrade:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one by one, stop the etcd v2.2 processes and replace them with etcd v2.3 processes&lt;/li&gt;
&lt;li&gt;after running all v2.3 processes, new features in v2.3 are available to the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before &lt;a href="#upgrade-procedure"&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;
&lt;h3 id="upgrade-checklists"&gt;Upgrade Checklists&lt;/h3&gt;
&lt;h4 id="upgrade-requirements"&gt;Upgrade Requirements&lt;/h4&gt;
&lt;p&gt;To upgrade an existing etcd deployment to 2.3, the running cluster must be 2.2 or greater. If it&amp;rsquo;s before 2.2, please upgrade to &lt;a href="https://github.com/etcd-io/etcd/releases/tag/v2.2.0" target="_blank" rel="noopener"&gt;2.2&lt;/a&gt; before upgrading to 2.3.&lt;/p&gt;</description></item><item><title>v2 Auth and Security</title><link>https://etcd.io/docs/v2.3/auth_api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/auth_api/</guid><description>&lt;h2 id="etcd-resources"&gt;etcd Resources&lt;/h2&gt;
&lt;p&gt;There are three types of resources in etcd&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;permission resources: users and roles in the user store&lt;/li&gt;
&lt;li&gt;key-value resources: key-value pairs in the key-value store&lt;/li&gt;
&lt;li&gt;settings resources: security settings, auth settings, and dynamic etcd cluster settings (election/heartbeat)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="permission-resources"&gt;Permission Resources&lt;/h3&gt;
&lt;h4 id="users"&gt;Users&lt;/h4&gt;
&lt;p&gt;A user is an identity to be authenticated. Each user can have multiple roles. The user has a capability (such as reading or writing) on the resource if one of the roles has that capability.&lt;/p&gt;</description></item><item><title>Versioning</title><link>https://etcd.io/docs/v2.3/internal-protocol-versioning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://etcd.io/docs/v2.3/internal-protocol-versioning/</guid><description>&lt;p&gt;Goal: We want to be able to upgrade an individual peer in an etcd cluster to a newer version of etcd.
The process will take the form of individual followers upgrading to the latest version until the entire cluster is on the new version.&lt;/p&gt;
&lt;p&gt;Immediate need: etcd is moving too fast to version the internal API right now.
But, we need to keep mixed version clusters from being started by a rolling upgrade process (e.g. the CoreOS developer alpha).&lt;/p&gt;</description></item></channel></rss>