See code changes and v3.2 upgrade guide for any breaking changes.
etcd_network_peer_sent_failures_total count.See code changes and v3.2 upgrade guide for any breaking changes.
curl -L http://localhost:2379/v3/election/proclaim -X POST -d '{"value":""}', curl -L http://localhost:2379/v3/election/resign -X POST -d '{"value":""}'.TTL values for Lease Grant.
TTL parameter to Grant request is unit of second.TTL values exceeding math.MaxInt64 expire in unexpected ways.rpctypes.ErrLeaseTTLTooLarge to client, when the requested TTL is larger than 9,000,000,000 seconds (which is >285 years).Lease is meant for short-periodic keepalives or sessions, in the range of seconds or minutes. Not for hours or days!raft.Config.CheckQuorum when starting with ForceNewCluster.See code changes and v3.2 upgrade guide for any breaking changes.
mvcc "unsynced" watcher restore operation.
See code changes and v3.2 upgrade guide for any breaking changes.
See code changes and v3.2 upgrade guide for any breaking changes.
See code changes and v3.2 upgrade guide for any breaking changes.
GracefulStop TLS-enabled server.See code changes and v3.2 upgrade guide for any breaking changes.
google.golang.org/grpc from v1.7.4 to v1.7.5.github.com/grpc-ecosystem/grpc-gateway from v1.3 to v1.3.0.Revision compactor in server-side.clientv3MaxCallSendMsgSize and MaxCallRecvMsgSize fields to clientv3.Config.
MaxCallSendMsgSize default value is 2 MiB, if not configured.MaxCallRecvMsgSize default value is math.MaxInt32, if not configured.See code changes and v3.2 upgrade guide for any breaking changes.
google.golang.org/grpc from v1.7.3 to v1.7.4.See security doc for more details.
clientv3WriteStatus call to prevent TLS-enabled etcd server crash.--listen-metrics-urls flag in monitoring document (non-released in v3.2.x, planned for v3.3.x).See code changes and v3.2 upgrade guide for any breaking changes.
google.golang.org/grpc from v1.2.1 to v1.7.3.github.com/grpc-ecosystem/grpc-gateway from v1.2.0 to v1.3.See security doc for more details.
ServerName with *.{ROOT_DOMAIN} to support non-wildcard subject alternative names in the certs (see issue #8445 for more contexts).
etcd --discovery-srv=etcd.local will only authenticate peers/clients when the provided certs have root domain etcd.local (not *.etcd.local) as an entry in Subject Alternative Name (SAN) field.boltdb/bolt with coreos/bbolt to address backend database size issue.clientv3See code changes and v3.2 upgrade guide for any breaking changes.
See security doc for more details.
golang.org/x/crypto/bcrypt (see golang/crypto@6c586e1).ServerName with *.{ROOT_DOMAIN}, in order to support sub-domain wildcard matching (see issue #8445 for more contexts).
etcd --discovery-srv=etcd.local will only authenticate peers/clients when the provided certs have root domain *.etcd.local as an entry in Subject Alternative Name (SAN) field.See code changes and v3.2 upgrade guide for any breaking changes.
clientgrpc-proxyKeysOnly flag.See code changes and v3.2 upgrade guide for any breaking changes.
clientv3concurrency/stm Put with serializable snapshot.
See code changes and v3.2 upgrade guide for any breaking changes.
--listen-peer-urls flag.--enable-pprof flag to etcd configuration file format.etcd_debugging_mvcc_keys_total inconsistency.See code changes and v3.2 upgrade guide for any breaking changes.
etcdctlendpoint health.See security doc for more details.
SAN. For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server first reverse-lookups the remote IP address to get a list of names mapping to that address (e.g. nslookup IPADDR). Then accepts the connection if those names have a matching name with peer cert's DNS names (either by exact or wildcard match). If none is matched, server forward-lookups each DNS entry in peer cert (e.g. look up example.default.svc when the entry is *.example.default.svc), and accepts connection only when the host's resolved addresses have the matching IP address with the peer's remote IP address. For example, peer B's CSR (with cfssl) SAN field is ["*.example.default.svc", "*.example.default.svc.cluster.local"] when peer B's remote IP address is 10.138.0.2. When peer B tries to join the cluster, peer A reverse-lookup the IP 10.138.0.2 to get the list of host names. And either exact or wildcard match the host names with peer B's cert DNS names in Subject Alternative Name (SAN) field. If none of reverse/forward lookups worked, it returns an error "tls: "10.138.0.2" does not match any of DNSNames ["*.example.default.svc","*.example.default.svc.cluster.local"]. See issue#8268 for more detail./metrics endpoint when --enable-v2=false.grpc-proxyPrevKv flag.gcr.io/etcd-development/etcd.See code changes and v3.2 upgrade guide for any breaking changes.
See code changes and v3.2 upgrade guide for any breaking changes.
docker pull quay.io/coreos/etcd:v3.2 to fetch latest v3.2 versionsSee code changes and v3.2 upgrade guide for any breaking changes.
See security doc for more details.
cfssl) SAN field is ["invalid.domain", "10.138.0.2"] when peer B's remote IP address is 10.138.0.2 and invalid.domain is a invalid host. When peer B tries to join the cluster, peer A successfully authenticates B, since Subject Alternative Name (SAN) field has a valid matching IP address. See issue#8206 for more detail.net.Listener rewrites IPv4 0.0.0.0 to IPv6 [::], breaking IPv6 disabled hosts.See code changes and v3.2 upgrade guide for any breaking changes.
See code changes and v3.2 upgrade guide for any breaking changes.
--snapshot-count default value from 10,000 to 100,000.
--snapshot-count value for lower memory usage.--snapshot-count value for better availabilities of slow followers (less frequent snapshots from leader).clientv3.Lease.TimeToLive returns LeaseTimeToLiveResponse.TTL == -1 on lease not found.clientv3.NewFromConfigFile is moved to clientv3/yaml.NewConfig.embed.Etcd.Peers field is now []*peerListener.--listen-peer-urls and --listen-client-urls (3.1 only prints out warnings), since domain name is invalid for network interface binding.google.golang.org/grpc from v1.0.4 to v1.2.1.github.com/grpc-ecosystem/grpc-gateway to v1.2.0.etcd_debugging_server_lease_expired_total metrics.See security doc for more details.
SAN. For instance, if peer cert contains any IP addresses in Subject Alternative Name (SAN) field, server authenticates a peer only when the remote IP address matches one of those IP addresses. This is to prevent unauthorized endpoints from joining the cluster. For example, peer B's CSR (with cfssl) SAN field is ["*.example.default.svc", "*.example.default.svc.cluster.local", "10.138.0.27"] when peer B's actual IP address is 10.138.0.2, not 10.138.0.27. When peer B tries to join the cluster, peer A will reject B with the error x509: certificate is valid for 10.138.0.27, not 10.138.0.2, because B's remote IP address does not match the one in Subject Alternative Name (SAN) field.DNSNames when checking SAN. For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server authenticates a peer only when forward-lookups (dig b.com) on those DNS names have matching IP with the remote IP address. For example, peer B's CSR (with cfssl) SAN field is ["b.com"] when peer B's remote IP address is 10.138.0.2. When peer B tries to join the cluster, peer A looks up the incoming host b.com to get the list of IP addresses (e.g. dig b.com). And rejects B if the list does not contain the IP 10.138.0.2, with the error tls: 10.138.0.2 does not match any of DNSNames ["b.com"].etcd--enable-v2 flag to enable v2 API server.
--enable-v2=true by default.--auth-token flag.--auto-compaction-retention=10, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2 compacts revision 1000, 1100, and 1200 for every 1-hour.clientv3ErrOldCluster with server version checking.WithPrefix() into WithFromKey() for empty key.etcdctlcheck perf command.--from-key flag to role grant-permission command.lock command takes an optional command to execute.grpc-proxygatewaynsswitch.conf to Docker container image.