Skip to content

Commit 3edd1c6

Browse files
Han Kangjberkusserathiuswenjiasweahrtr
authored
set up SIG-etcd (#7372)
* Create SIG-etcd Co-authored-by: Josh Berkus <[email protected]> Co-authored-by: Marek Siarkowicz <[email protected]> * Remove unnecessary eviations * Update sig-etcd/charter.md Co-authored-by: Benjamin Wang <[email protected]> * Update charter.md to remove OWNERS file from deviation Adding OWNERS file will be a hard requirement for etcd repo. I also added an issue in etcd repo for tracking: etcd-io/etcd#16367. * update charter.md, vision.md and README.md to address comments * update sig-etcd with new chairs * Update charter.md * Update charter.md to include implicit k8s-etcd-contract as part of sig-etcd's responsibility in a sentence, instead of a linked google doc * Update sig-etcd/vision.md Co-authored-by: Tim Bannister <[email protected]> * Update sig-etcd/vision.md Co-authored-by: Tim Bannister <[email protected]> * update etcd meeting link, time and youtube link --------- Co-authored-by: Josh Berkus <[email protected]> Co-authored-by: Marek Siarkowicz <[email protected]> Co-authored-by: Wenjia <[email protected]> Co-authored-by: Benjamin Wang <[email protected]> Co-authored-by: Tim Bannister <[email protected]>
1 parent e7383ee commit 3edd1c6

File tree

8 files changed

+410
-0
lines changed

8 files changed

+410
-0
lines changed

OWNERS_ALIASES

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ aliases:
5454
- reylejano
5555
- sftim
5656
- tengqm
57+
sig-etcd-leads:
58+
- ahrtr
59+
- jmhbnz
60+
- serathius
61+
- wenjiaswe
5762
sig-instrumentation-leads:
5863
- dashpole
5964
- dgrisonnet

liaisons.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ members will assume one of the departing members groups.
4040
| [SIG Cluster Lifecycle](sig-cluster-lifecycle/README.md) | Nabarun Pal (**[@palnabarun](https://github.com/palnabarun)**) |
4141
| [SIG Contributor Experience](sig-contributor-experience/README.md) | Bob Killen (**[@mrbobbytables](https://github.com/mrbobbytables)**) |
4242
| [SIG Docs](sig-docs/README.md) | Carlos Tadeu Panato Jr. (**[@cpanato](https://github.com/cpanato)**) |
43+
| [SIG etcd](sig-etcd/README.md) | TBD (**[@TBD](https://github.com/TBD)**) |
4344
| [SIG Instrumentation](sig-instrumentation/README.md) | Christoph Blecker (**[@cblecker](https://github.com/cblecker)**) |
4445
| [SIG K8s Infra](sig-k8s-infra/README.md) | Stephen Augustus (**[@justaugustus](https://github.com/justaugustus)**) |
4546
| [SIG Multicluster](sig-multicluster/README.md) | Bob Killen (**[@mrbobbytables](https://github.com/mrbobbytables)**) |

sig-etcd/OWNERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# See the OWNERS docs at https://go.k8s.io/owners
2+
3+
reviewers:
4+
- sig-etcd-leads
5+
approvers:
6+
- sig-etcd-leads
7+
labels:
8+
- sig/etcd

sig-etcd/README.md

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<!---
2+
This is an autogenerated file!
3+
4+
Please do not edit this file directly, but instead make changes to the
5+
sigs.yaml file in the project root.
6+
7+
To understand how this file is generated, see https://git.k8s.io/community/generator/README.md
8+
--->
9+
# etcd Special Interest Group
10+
11+
etcd is a production-ready store for building cloud-native distributed systems and managing cloud-native infrastructure via orchestrators like Kubernetes.
12+
Etcd should provide distributed system primitives** (such as distributed locking and leader election) that allow users to **create scalable, highly available and fault-tolerant systems.
13+
Etcd is the place to store the infrastructure configuration, not only as part of Kubernetes, but also as a standalone solution.
14+
15+
The [charter](charter.md) defines the scope and governance of the etcd Special Interest Group.
16+
17+
## Meetings
18+
*Joining the [mailing list](https://groups.google.com/g/etcd-dev) for the group will typically add invites for the following meetings to your calendar.*
19+
* Regular SIG Meeting: [Thursdays at 11:00 PT (Pacific Time)](https://zoom.us/my/cncfetcdproject) (biweekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=11:00&tz=PT%20%28Pacific%20Time%29).
20+
* [Meeting notes and Agenda](https://docs.google.com/document/d/16XEGyPBisZvmmoIHSZzv__LoyOeluC5a4x353CX0SIM/edit?usp=sharing).
21+
* [Meeting recordings](https://www.youtube.com/playlist?list=PLRGL688DpO9rtufHbiunuCHddYY6MGkwW).
22+
23+
## Leadership
24+
25+
### Chairs
26+
The Chairs of the SIG run operations and processes governing the SIG.
27+
28+
* James Blair (**[@jmhbnz](https://github.com/jmhbnz)**), Red Hat
29+
* Wenjia Zhang (**[@wenjiaswe](https://github.com/wenjiaswe)**), Google
30+
31+
### Technical Leads
32+
The Technical Leads of the SIG establish new subprojects, decommission existing
33+
subprojects, and resolve cross-subproject technical issues and decisions.
34+
35+
* Benjamin Wang (**[@ahrtr](https://github.com/ahrtr)**), VMWare
36+
* Marek Siarkowicz (**[@serathius](https://github.com/serathius)**), Google
37+
38+
## Contact
39+
- Slack: [#etcd](https://kubernetes.slack.com/messages/etcd)
40+
- [Mailing list](https://groups.google.com/g/etcd-dev)
41+
- [Open Community Issues/PRs](https://github.com/kubernetes/community/labels/sig%2Fetcd)
42+
- GitHub Teams:
43+
- [@kubernetes/sig-etcd-leads](https://github.com/orgs/kubernetes/teams/sig-etcd-leads) - SIG Chairs and Tech Leads
44+
- Steering Committee Liaison: TBD (**[@TBD](https://github.com/TBD)**)
45+
46+
## Subprojects
47+
48+
The following [subprojects][subproject-definition] are owned by sig-etcd:
49+
### bbolt
50+
An embedded key/value database for Go.
51+
- **Owners:**
52+
- [etcd-io/bbolt/MAINTAINERS](https://github.com/etcd-io/bbolt/blob/master/MAINTAINERS)
53+
### cetcd
54+
Serve Consul with etcd
55+
- **Owners:**
56+
- [etcd-io/cetcd/MAINTAINERS](https://github.com/etcd-io/cetcd/blob/master/MAINTAINERS)
57+
### dbtester
58+
Distributed database benchmark tester
59+
- **Owners:**
60+
- [etcd-io/dbtester/MAINTAINERS](https://github.com/etcd-io/dbtester/blob/master/MAINTAINERS)
61+
### discovery.etcd.io
62+
Kubernetes manifests powering discovery.etcd.io
63+
- **Owners:**
64+
- [etcd-io/discovery.etcd.io/MAINTAINERS](https://github.com/etcd-io/discovery.etcd.io/blob/master/MAINTAINERS)
65+
### discoveryserver
66+
Public etcd Discovery Service
67+
- **Owners:**
68+
- [etcd-io/discoveryserver/MAINTAINERS](https://github.com/etcd-io/discoveryserver/blob/master/MAINTAINERS)
69+
### etcd
70+
Distributed reliable key-value store for the most critical data of a distributed system
71+
- **Owners:**
72+
- [etcd-io/etcd/MAINTAINERS](https://github.com/etcd-io/etcd/blob/master/MAINTAINERS)
73+
### etcd-play
74+
etcd playground
75+
- **Owners:**
76+
- [etcd-io/etcd-play/MAINTAINERS](https://github.com/etcd-io/etcd-play/blob/master/MAINTAINERS)
77+
### etcdlabs
78+
etcd playground
79+
- **Owners:**
80+
- [etcd-io/etcdlabs/MAINTAINERS](https://github.com/etcd-io/etcdlabs/blob/master/MAINTAINERS)
81+
### gofail
82+
failpoints for go
83+
- **Owners:**
84+
- [etcd-io/gofail/MAINTAINERS](https://github.com/etcd-io/gofail/blob/master/MAINTAINERS)
85+
### govanityurls
86+
Use a custom domain in your Go import path
87+
- **Owners:**
88+
- [etcd-io/govanityurls/MAINTAINERS](https://github.com/etcd-io/govanityurls/blob/master/MAINTAINERS)
89+
### jetcd
90+
etcd java client
91+
- **Owners:**
92+
- [etcd-io/jetcd/MAINTAINERS](https://github.com/etcd-io/jetcd/blob/master/MAINTAINERS)
93+
### maintainers
94+
issue tracking for project wide non-code concerns
95+
- **Owners:**
96+
- [etcd-io/maintainers/MAINTAINERS](https://github.com/etcd-io/maintainers/blob/master/MAINTAINERS)
97+
### protodoc
98+
protodoc generates Protocol Buffer documentation.
99+
- **Owners:**
100+
- [etcd-io/protodoc/MAINTAINERS](https://github.com/etcd-io/protodoc/blob/master/MAINTAINERS)
101+
### raft
102+
Raft library for maintaining a replicated state machine
103+
- **Owners:**
104+
- [etcd-io/raft/MAINTAINERS](https://github.com/etcd-io/raft/blob/master/MAINTAINERS)
105+
### website
106+
etcd-io
107+
- **Owners:**
108+
- [etcd-io/website/MAINTAINERS](https://github.com/etcd-io/website/blob/master/MAINTAINERS)
109+
### zetcd
110+
Serve the Apache Zookeeper API but back it with an etcd cluster
111+
- **Owners:**
112+
- [etcd-io/zetcd/MAINTAINERS](https://github.com/etcd-io/zetcd/blob/master/MAINTAINERS)
113+
114+
[subproject-definition]: https://github.com/kubernetes/community/blob/master/governance.md#subprojects
115+
[working-group-definition]: https://github.com/kubernetes/community/blob/master/governance.md#working-groups
116+
<!-- BEGIN CUSTOM CONTENT -->
117+
118+
<!-- END CUSTOM CONTENT -->

sig-etcd/charter.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# SIG etcd Charter
2+
3+
This charter adheres to the conventions described in the [Kubernetes Charter README] and uses
4+
the Roles and Organization Management outlined in [sig-governance].
5+
6+
[Kubernetes Charter README]: https://github.com/kubernetes/community/blob/master/committee-steering/governance/README.md
7+
[sig-governance]: https://github.com/kubernetes/community/blob/master/committee-steering/governance/sig-governance.md
8+
9+
## Scope
10+
11+
Owns the etcd project and how it is used by Kubernetes.
12+
13+
### In scope
14+
15+
#### Code, Binaries and Services
16+
17+
- Development of [etcd] and other repositories under [etcd-io organization]
18+
- Maintenance of [etcd image] packaged with Kubernetes
19+
20+
[etcd]: https://github.com/etcd-io/etcd
21+
[etcd-io organization]: https://github.com/etcd-io
22+
[etcd image]: https://github.com/kubernetes/kubernetes/tree/master/cluster/images/etcd
23+
24+
#### Cross-cutting and Externally Facing Processes
25+
26+
- Specifying, testing and improving the implicit Kubernetes-ETCD Contract, which includes storage requirements, write and delete requirements, read requirements and watch requirements.
27+
- Release process of etcd and other binaries belonging to [etcd-io organization]
28+
29+
### Out of scope
30+
31+
- Structure of data stored in etcd by Kubernetes components is owned by SIG API Machinery
32+
33+
## Roles and Organization Management
34+
35+
This SIG follows the Roles and Organization Management outlined in [sig-governance]
36+
and opts-in to updates and modifications to [sig-governance].
37+
38+
### Additional responsibilities of Tech Leads
39+
40+
- Release of etcd and other binaries belonging to [etcd-io organization]
41+
42+
### Deviations from [sig-governance]
43+
44+
- SIG etcd's participation in the Kubernetes release cycle is limited by etcd having a different schedule for its releases.
45+
- SIG etcd communication utilizes pre-existing forums for communication:
46+
- Email: [etcd-dev](https://groups.google.com/forum/?hl=en#!forum/etcd-dev).
47+
- Slack: [#etcd](https://kubernetes.slack.com/messages/C3HD8ARJ5/details/) channel on Kubernetes.
48+
- SIG etcd contributing instructions ([CONTRIBUTING.md]) be defined in etcd project.
49+
50+
[CONTRIBUTING.md]: https://github.com/etcd-io/etcd/blob/main/CONTRIBUTING.md
51+
52+
### Deviations from [kubernetes-repositories]
53+
54+
- SIG etcd repositories live in github.com/etcd-io
55+
- SIG etcd repositories should (but not must) adopt merge bot, Kubernetes PR commands/bot.
56+
- SIG etcd repositories will follow [rules for donated repositories].
57+
58+
[kubernetes-repositories]: https://github.com/kubernetes/community/blob/master/github-management/kubernetes-repositories.md#sig-repositories
59+
[rules for donated repositories]: https://github.com/kubernetes/community/blob/master/github-management/kubernetes-repositories.md#rules-for-donated-repositories
60+
61+
### Subproject Creation
62+
63+
By SIG Technical Leads

sig-etcd/vision.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# SIG etcd Vision
2+
3+
The long-term success of the etcd project depends on the following:
4+
- Etcd is a reliable key-value storage
5+
- Etcd is simple to operate
6+
- Etcd is a standalone solution for managing infrastructure
7+
- Etcd scales beyond Kubernetes dimensions
8+
9+
The goals and milestones listed here are for future releases.
10+
The scope of release v3.6 has already been defined and is unlikely to change.
11+
12+
## Etcd is a reliable key-value storage service
13+
14+
Reliability remains the most important property of etcd.
15+
The project cannot allow for another [data inconsistency incident].
16+
If we could only pick one thing from the list of goals above, this would be it.
17+
No matter what features we add in the future,
18+
they must not diminish etcd's reliability.
19+
We must establish processes and safeguards to prevent future incidents.
20+
21+
How?
22+
- Etcd API guarantees are well understood, documented and tested.
23+
- Etcd adopts a production readiness review process for new features, similar to Kubernetes one.
24+
- Robustness tests should cover most of the API and most common failures.
25+
- New features must have accompanying e2e tests and be covered by robustness tests.
26+
- Etcd must be able to immediately detect corruption.
27+
- Etcd must be able to automatically recover from data corruption.
28+
29+
[data inconsistency incident]: https://github.com/etcd-io/etcd/blob/main/Documentation/postmortems/v3.5-data-inconsistency.md
30+
31+
## Etcd is simple to operate
32+
33+
Etcd should be easy to operate.
34+
Currently, there are many steps involved in operating etcd,
35+
and some of these steps require external tools.
36+
For example, Kubernetes provides tools to [downgrade/upgrade etcd].
37+
These tools are not part of the etcd,
38+
but they are available as part of the Kubernetes distribution of etcd.
39+
40+
How?
41+
- Etcd should not require users to run periodic defrag
42+
- Etcd officially supports live upgrades and downgrades
43+
- Disaster recovery for Etcd & Kubernetes
44+
- Reliable cluster membership changes via learners with automated promotion
45+
- Two node etcd clusters
46+
47+
## Etcd is a standalone solution for managing infrastructure configuration
48+
49+
Kubernetes is not the only way to manage infrastructure.
50+
It was the first to introduce many concepts that have now become the standard,
51+
but they are not unique to Kubernetes.
52+
The most important design principle of Kubernetes,
53+
the reconciliation protocol, is not something unique to it.
54+
55+
Reconciliation can be implemented solely on etcd,
56+
as has been shown by projects like Cillium,
57+
Calico Typha that support etcd-based control planes.
58+
The reason why this idea has not propagated further is
59+
the amount of work that was put into making
60+
the reconciliation protocol scale in Kubernetes.
61+
The watch cache is a key part of this scaling,
62+
and it is not part of the etcd project.
63+
64+
If etcd provided a Kubernetes-like storage interface
65+
and primitives for the reconciliation protocol,
66+
it would be a more viable solution for managing infrastructure.
67+
This would allow users to build etcd-based control planes that
68+
could scale to meet the needs of large and complex deployments.
69+
70+
How?
71+
- Introduce Kubernetes like storage interface into etcd-client
72+
- Provide etcd primitives for reconciliation protocol
73+
- Strip out the Kubernetes watch cache and make it part of the etcd client.
74+
- Use the watch cache in the client to build an eventually consistent etcd proxy.
75+
76+
[downgrade/upgrade etcd]: https://github.com/kubernetes/kubernetes/tree/master/cluster/images/etcd
77+
78+
## Etcd scales beyond Kubernetes dimensions
79+
80+
Etcd has proven its scalability by enabling Kubernetes clusters of up to 5,000 nodes.
81+
However, as the cloud native ecosystem has evolved, new projects have been built on top of Kubernetes.
82+
These projects, such as [KCP] (a multi-cluster control plane) and [Kueue] (a batch job queuing system),
83+
have different scalability requirements than pure Kubernetes.
84+
For example, they need support for larger storage sizes and higher throughput.
85+
86+
Etcd's strong points are its reliable raft and efficient watch implementation.
87+
However, its storage capabilities are not as strong.
88+
To address this, we should look into growing out storage capabilities and making them more flexible depending on the use case.
89+
90+
How?
91+
- Well-defined and tested scalability dimensions
92+
- Increase raft throughput (async and batch proposal handling)
93+
- Increasing bbolt supported storage size
94+
- Pluggable storage layer
95+
- Hybrid clusters with write and read optimized members
96+
97+
98+
[KCP]: https://cloud.redhat.com/blog/an-introduction-to-kcp
99+
[Kueue]: https://github.com/kubernetes-sigs/kueue
100+

0 commit comments

Comments
 (0)