Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

proposals: add "etcd" as "Incubating" CNCF project #143

Merged
merged 1 commit into from Dec 11, 2018
Merged

proposals: add "etcd" as "Incubating" CNCF project #143

merged 1 commit into from Dec 11, 2018

Conversation

gyuho
Copy link
Contributor

@gyuho gyuho commented Aug 8, 2018

@gyuho
Copy link
Contributor Author

gyuho commented Aug 8, 2018

/cc @caniszczyk

@caniszczyk caniszczyk changed the title proposals: add "etcd" as "Incubating" project proposals: add "etcd" as "Incubating" CNCF project Aug 8, 2018
Copy link

@ghost ghost left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. I'm fully in support of etcd at incubation.

I added some minor comments that might improve the document. Definitely not blockers though.


*Description*:

etcd is a consistent distributed key-value store, designed to hold small amounts of data that can fit entirely in memory (although etcd still writes to disk for durabilities) and mainly used as a separate coordination service for other distributed systems like Kubernetes. Typical etcd cluster is distributed over 3 to 5 nodes, for high availability, while it prioritizes consistency and partition tolerance. Which means, it provides on logical cluster view of many physical servers. So long as majority of cluster is up, etcd continues to work, even under machine failures. This redundancy provides fault tolerance.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: durability. Also, wrapping lines around 80-120 chars makes it easier to comment.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits:
A typical etcd cluster...
a majority.


etcd is a consistent distributed key-value store, designed to hold small amounts of data that can fit entirely in memory (although etcd still writes to disk for durabilities) and mainly used as a separate coordination service for other distributed systems like Kubernetes. Typical etcd cluster is distributed over 3 to 5 nodes, for high availability, while it prioritizes consistency and partition tolerance. Which means, it provides on logical cluster view of many physical servers. So long as majority of cluster is up, etcd continues to work, even under machine failures. This redundancy provides fault tolerance.

etcd server implements Raft consensus algorithm for data replication. Raft is a leader-based protocol. Data is replicated from leader to follower; follower forwards proposals to leader, and leader decides what to commit or not. Leader persists and replicates an entry, once it has been agreed by the quorum of cluster. The underlying storage layer for Raft log is write-ahead log (WAL). Committed entries are written out to disk, so they can be replayed on restart. etcd uses gRPC for transport layer. Client employs HTTP/2 Ping for server health checking, and implements automatic failover under faulty networks.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps worth noting explicitly that leader-based replication does not provide horizontal write scalability. Write (and consistent read) throughput is limited to durable write throughput of a single leader node.


*External dependencies*: https://github.com/coreos/etcd/blob/master/bill-of-materials.json

*Statement on alignment with CNCF mission*: etcd has enabled adoption of cloud native systems: etcd is "container packaged" by publishing container image for every release, and etcd is a critical component and most reliable storage implementation to many "dynamically managed" systems like Kubernetes.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: This paragraph could do with some word-smithing. "has enabled adoption" and "most reliable" are strong claims, and unnecessary, IMO, to justify alignment with the CNCF's mission:

https://www.cncf.io/about/charter/

@philips
Copy link

philips commented Aug 8, 2018

overall looks reasonable. I agree with @quinton-hoole's nits.

@gyuho
Copy link
Contributor Author

gyuho commented Aug 8, 2018

Address @quinton-hoole's feedback. Thanks!

@caniszczyk
Copy link
Contributor

RFC @cncf/toc - will leave this open for a week or so for community feedback

@philips
Copy link

philips commented Aug 9, 2018

We need to add own, monitor, manage, and maintain discovery.etcd.io to this list as well. etcd-io/etcd#9965 (comment)

@gyuho
Copy link
Contributor Author

gyuho commented Aug 9, 2018

@philips That makes sense, since we are donating etcd.io as well.


*Issue tracker*: https://github.com/coreos/etcd/issues

*Initial committers*: https://github.com/philips[Brandon Phillips] and
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the full list of committers/maintainers is in https://github.com/coreos/etcd/blob/master/MAINTAINERS, then I suggest we remove the 2 specific individuals from here. There are active maintainers from at least Redhat (CoreOS), Amazon, and Google, correct?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is a misunderstanding of what "Initial Committers" means. Does it mean the people who were initially on the project when it started or the people who will be on the project when donated to CNCF?

For context Xiang and I started the project 5 years ago so I assume that is why we are listed here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, this may not be all that important, but perhaps @caniszczyk has guidance.

Copy link
Contributor Author

@gyuho gyuho Aug 18, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@caniszczyk Shall we remove, if this reads confusing?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gyuho this means who has commit access to the project when donated, essentially we want to see who has write access, how diverse the committership is etc

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@caniszczyk @bgrant0607 Updated to only list maintainers who have write access to etcd repository. Look forward to expanding more!


*External dependencies*: https://github.com/coreos/etcd/blob/master/bill-of-materials.json

*Statement on alignment with CNCF mission*: etcd helps adopt cloud native
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe @philips could help improve the wording here

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bgrant0607 how about this?

A consistent and partition tolerant datastore, like etcd, is a base dependency for many cloud native architectures. They hold on to critical cluster configuration and locks while providing guarantees against individual machine failure, network partitions, or data center power loss. In the literature and ecosystem etcd, or similar systems (e.g. chubby, zookeeper, etc), provide the persistence layer for applications like Kubernetes, CoreDNS, Vitess, Borg, Mesos, and countless others.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@philips @bgrant0607 Just updated this part. Thanks!

@caniszczyk
Copy link
Contributor

Another question, are you considering making the https://github.com/coreos/etcd-operator part of this contribution?

@philips
Copy link

philips commented Aug 13, 2018 via email

@bgrant0607
Copy link
Contributor

@gyuho Is it correct that etcd has just one repo now? It looks like go-etcd, etcdctl, and etcd-ca repos are deprecated?

Is discovery.etcd.io still in use?

@gyuho
Copy link
Contributor Author

gyuho commented Aug 21, 2018

@bgrant0607

go-etcd, etcdctl, and etcd-ca repos are deprecated?

Yes. They were deprecated.

All core etcd components (package raft, "etcd" command, "etcdctl" command) are in one https://github.com/coreos/etcd repository.

Is discovery.etcd.io still in use?

Some people still use it. @philips should have more data on this.

See https://github.com/coreos/etcd/blob/master/Documentation/production-users.md[etcd production users] for more.

Integrations: Kubernetes API server persists cluster metadata in etcd.
OpenStack uses etcd to keep track service liveness. CockroachDB, TiKV, and
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"keep track of"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, thanks @jpbetz !

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
@philips
Copy link

philips commented Aug 22, 2018

@bgrant0607 discovery.etcd.io is still in extremely wide use and is used by default in OpenStack spin-up scripts. We had an outage recently on that service and dozens of people noticed on twitter, github, etc.

@jonboulle
Copy link
Contributor

@caniszczyk where did this end up?

@caniszczyk
Copy link
Contributor

@jonboulle voting is open: https://lists.cncf.io/g/cncf-toc/message/2237

The project team is still finalizing on when they would like to make the announcement, our approach has been to work with the project communities on their preferred time of announcement (there are enough votes for this to technically pass)

@caniszczyk caniszczyk added this to In progress (due diligence) in TOC Project Backlog Oct 10, 2018
@caniszczyk caniszczyk self-assigned this Oct 16, 2018
@caniszczyk caniszczyk moved this from In progress (due diligence) to TOC Approved (sponsors/voting) in TOC Project Backlog Nov 15, 2018
@caniszczyk
Copy link
Contributor

+1 binding TOC votes (8/9):

Quinton: https://lists.cncf.io/g/cncf-toc/message/2259
Camille: https://lists.cncf.io/g/cncf-toc/message/2262
Brian: https://lists.cncf.io/g/cncf-toc/message/2268
Ben: https://lists.cncf.io/g/cncf-toc/message/2270
Sam: https://lists.cncf.io/g/cncf-toc/message/2271
Alexis: https://lists.cncf.io/g/cncf-toc/message/2278
Ken: https://lists.cncf.io/g/cncf-toc/message/2308
Jon: https://lists.cncf.io/g/cncf-toc/message/2431

Welcome etcd to the CNCF community :)

@caniszczyk caniszczyk merged commit b187d38 into cncf:master Dec 11, 2018
@caniszczyk caniszczyk moved this from TOC Approved (sponsors/voting) to Done in TOC Project Backlog Dec 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

6 participants