Skip to content

Commit

Permalink
Setting up SIG-etcd
Browse files Browse the repository at this point in the history
  • Loading branch information
Han Kang authored and serathius committed Jul 12, 2023
1 parent 9885966 commit 3003c5e
Show file tree
Hide file tree
Showing 8 changed files with 288 additions and 0 deletions.
3 changes: 3 additions & 0 deletions OWNERS_ALIASES
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ aliases:
- reylejano
- sftim
- tengqm
sig-etcd-leads:
- ahrtr
- serathius
sig-instrumentation-leads:
- dashpole
- dgrisonnet
Expand Down
1 change: 1 addition & 0 deletions liaisons.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ members will assume one of the departing members groups.
| [SIG Cluster Lifecycle](sig-cluster-lifecycle/README.md) | Nabarun Pal (**[@palnabarun](https://github.com/palnabarun)**) |
| [SIG Contributor Experience](sig-contributor-experience/README.md) | Bob Killen (**[@mrbobbytables](https://github.com/mrbobbytables)**) |
| [SIG Docs](sig-docs/README.md) | Carlos Tadeu Panato Jr. (**[@cpanato](https://github.com/cpanato)**) |
| [SIG etcd](sig-etcd/README.md) | TBD (**[@TBD](https://github.com/TBD)**) |
| [SIG Instrumentation](sig-instrumentation/README.md) | Christoph Blecker (**[@cblecker](https://github.com/cblecker)**) |
| [SIG K8s Infra](sig-k8s-infra/README.md) | Stephen Augustus (**[@justaugustus](https://github.com/justaugustus)**) |
| [SIG Multicluster](sig-multicluster/README.md) | Bob Killen (**[@mrbobbytables](https://github.com/mrbobbytables)**) |
Expand Down
8 changes: 8 additions & 0 deletions sig-etcd/OWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# See the OWNERS docs at https://go.k8s.io/owners

reviewers:
- sig-etcd-leads
approvers:
- sig-etcd-leads
labels:
- sig/etcd
56 changes: 56 additions & 0 deletions sig-etcd/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<!---
This is an autogenerated file!
Please do not edit this file directly, but instead make changes to the
sigs.yaml file in the project root.
To understand how this file is generated, see https://git.k8s.io/community/generator/README.md
--->
# etcd Special Interest Group

TBD

The [charter](charter.md) defines the scope and governance of the etcd Special Interest Group.

## Meetings
*Joining the [mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-etcd) for the group will typically add invites for the following meetings to your calendar.*
* Regular SIG Meeting: [Thursdays at 9:30 PT (Pacific Time)](TBD) (biweekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=9:30&tz=PT%20%28Pacific%20Time%29).
* [Meeting notes and Agenda](TBD).

## Leadership

### Chairs
The Chairs of the SIG run operations and processes governing the SIG.

* Benjamin Wang (**[@ahrtr](https://github.com/ahrtr)**), VMWare
* Marek Siarkowicz (**[@serathius](https://github.com/serathius)**), Google

### Technical Leads
The Technical Leads of the SIG establish new subprojects, decommission existing
subprojects, and resolve cross-subproject technical issues and decisions.

* Benjamin Wang (**[@ahrtr](https://github.com/ahrtr)**), VMWare
* Marek Siarkowicz (**[@serathius](https://github.com/serathius)**), Google

## Contact
- Slack: [#sig-etcd](https://kubernetes.slack.com/messages/sig-etcd)
- [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-etcd)
- [Open Community Issues/PRs](https://github.com/kubernetes/community/labels/sig%2Fetcd)
- GitHub Teams:
- [@kubernetes/sig-etcd-approvers](https://github.com/orgs/kubernetes/teams/sig-etcd-approvers) - SIG Top-level Approvers
- [@kubernetes/sig-etcd-leads](https://github.com/orgs/kubernetes/teams/sig-etcd-leads) - SIG Chairs and Tech Leads
- [@kubernetes/sig-etcd-members](https://github.com/orgs/kubernetes/teams/sig-etcd-members) - SIG Membership Roster
- Steering Committee Liaison: TBD (**[@TBD](https://github.com/TBD)**)

## Subprojects

The following [subprojects][subproject-definition] are owned by sig-etcd:
### etcd
- **Owners:**
- [kubernetes-sigs/TBD](https://github.com/kubernetes-sigs/TBD/blob/master/OWNERS)

[subproject-definition]: https://github.com/kubernetes/community/blob/master/governance.md#subprojects
[working-group-definition]: https://github.com/kubernetes/community/blob/master/governance.md#working-groups
<!-- BEGIN CUSTOM CONTENT -->

<!-- END CUSTOM CONTENT -->
69 changes: 69 additions & 0 deletions sig-etcd/charter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# SIG etcd Charter

This charter adheres to the conventions described in the [Kubernetes Charter README] and uses
the Roles and Organization Management outlined in [sig-governance].

[Kubernetes Charter README]: https://github.com/kubernetes/community/blob/master/committee-steering/governance/README.md
[sig-governance]: https://github.com/kubernetes/community/blob/master/committee-steering/governance/sig-governance.md

## Scope

Owns the etcd project and how it is used by Kubernetes.

### In scope

#### Code, Binaries and Services

- Development of [etcd] and other repositories under [etcd-io organization]
- Maintenance of [etcd image] packaged with Kubernetes

[etcd]: https://github.com/etcd-io/etcd
[etcd-io organization]: https://github.com/etcd-io
[etcd image]: https://github.com/kubernetes/kubernetes/tree/master/cluster/images/etcd

#### Cross-cutting and Externally Facing Processes

- Specifying, testing and improving [The Implicit Kubernetes-ETCD Contract]
- Release process of etcd and other binaries belonging to [etcd-io organization]

[The Implicit Kubernetes-ETCD Contract]: https://docs.google.com/document/d/1NUZDiJeiIH5vo_FMaTWf0JtrQKCx0kpEaIIuPoj9P6A/edit?usp=sharing

### Out of scope

- Structure of data stored in etcd is owned by SIG API Machinery

## Roles and Organization Management

This SIG follows adheres to the Roles and Organization Management outlined in [sig-governance]
and opts-in to updates and modifications to [sig-governance].

### Additional responsibilities of Tech Leads

- Release of etcd and other binaries belonging to [etcd-io organization]

### Deviations from [sig-governance]

- SIG etcd does not participate in release planning meetings,
retrospectives and burn-down meetings as etcd release process is independent of Kubernetes.
- SIG etcd communication utilizes pre-existing forums for communication:
- Email: [etcd-dev](https://groups.google.com/forum/?hl=en#!forum/etcd-dev).
- Slack: [#etcd](https://kubernetes.slack.com/messages/C3HD8ARJ5/details/) channel on Kubernetes.
- SIG etcd contributing instructions ([CONTRIBUTING.md]) be defined in etcd project.
- KEPs created by SIG etcd will not follow Kubernetes release cycle and freezes due.

Tech Leads must also fulfill all of the responsibilities of the Chair role as outlined in [sig-governance].

[CONTRIBUTING.md]: https://github.com/etcd-io/etcd/blob/main/CONTRIBUTING.md

### Deviations from [kubernetes-repositories]

- SIG etcd repositories live in github.com/etcd-io
- SIG etcd repositories should (but not must) adopt merge bot, Kubernetes PR commands/bot, OWNERS file.
- SIG etcd repositories will follow [rules for donated repositories].

[kubernetes-repositories]: https://github.com/kubernetes/community/blob/master/github-management/kubernetes-repositories.md#sig-repositories
[rules for donated repositories]: https://github.com/kubernetes/community/blob/master/github-management/kubernetes-repositories.md#sig-repositories

### Subproject Creation

By SIG Technical Leads
100 changes: 100 additions & 0 deletions sig-etcd/vision.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# SIG etcd Vision

The long-term success of the etcd project depends on the following:
- Etcd the most reliable key-value storage
- Etcd is simple to operate
- Etcd is a standalone solution for managing infrastructure
- Etcd scales beyond Kubernetes dimensions

The goals and milestones listed here are for future releases.
The scope of release v3.6 has already been defined and is unlikely to change.

## Etcd the most reliable key-value storage

Reliability remains the most important property of etcd.
The project cannot allow for another [data inconsistency incident].
If we could only pick one thing from the list of goals above, this would be it.
No matter what features we add in the future,
they must not diminish etcd's reliability.
We must establish processes and safeguards to prevent future incidents.

How?
- Etcd API guarantees are well understood, documented and tested.
- Etcd adopts a production readiness review process for new features, similar to Kubernetes one.
- Robustness tests should cover most of the API and most common failures.
- New features must have accompanying e2e tests and be covered by robustness tests.
- Etcd must be able to immediately detect corruption.
- Etcd must be able to automatically recover from data corruption.

[data inconsistency incident]: https://github.com/etcd-io/etcd/blob/main/Documentation/postmortems/v3.5-data-inconsistency.md

## Etcd is simple to operate

Etcd should be easy to operate.
Currently, there are many steps involved in operating etcd,
and some of these steps require external tools.
For example, Kubernetes provides tools to [downgrade/upgrade etcd].
These tools are not part of the etcd,
but they are available as part of the Kubernetes distribution of etcd.

How?
- Etcd should not require users to run periodic defrag
- Etcd officially supports live upgrades and downgrades
- Disaster recovery for Etcd & Kubernetes
- Reliable cluster membership changes via learners with automated promotion
- Two node etcd clusters

## Etcd is a standalone solution for managing infrastructure

Kubernetes is not the only way to manage infrastructure.
It was the first to introduce many concepts that have now become the standard,
but they are not unique to Kubernetes.
The most important design principle of Kubernetes,
the reconciliation protocol, is not something unique to it.

Reconciliation can be implemented solely on etcd,
as has been shown by projects like Cillium,
Calico Typha that support etcd-based control planes.
The reason why this idea has not propagated further is
the amount of work that was put into making
the reconciliation protocol scale in Kubernetes.
The watch cache is a key part of this scaling,
and it is not part of the etcd project.

If etcd provided a Kubernetes-like storage interface
and primitives for the reconciliation protocol,
it would be a more viable solution for managing infrastructure.
This would allow users to build etcd-based control planes that
could scale to meet the needs of large and complex deployments.

How?
- Introduce Kubernetes like storage interface into etcd-client
- Provide etcd primitives for reconciliation protocol
- Strip out the Kubernetes watch cache and make it part of the etcd client.
- Use the watch cache in the client to build an eventually consistent etcd proxy.

[downgrade/upgrade etcd]: https://github.com/kubernetes/kubernetes/tree/master/cluster/images/etcd

## Etcd scales beyond Kubernetes dimensions

Etcd has proven its scalability by enabling Kubernetes clusters of up to 5,000 nodes.
However, as the cloud native ecosystem has evolved, new projects have been built on top of Kubernetes.
These projects, such as [KCP] (a multi-cluster control plane) and [Kueue] (a batch job queuing system),
have different scalability requirements than pure Kubernetes.
For example, they need support for larger storage sizes and higher throughput.

Etcd's strong points are its reliable raft and efficient watch implementation.
However, its storage capabilities are not as strong.
To address this, we should look into growing out storage capabilities and making them more flexible depending on the use case.

How?
- Well-defined and tested scalability dimensions
- Increase raft throughput (async and batch proposal handling)
- Increasing bbolt supported storage size
- Pluggable storage layer
- Hybrid clusters with write and read optimized members


[KCP]: https://cloud.redhat.com/blog/an-introduction-to-kcp
[Kueue]: https://github.com/kubernetes-sigs/kueue

1 change: 1 addition & 0 deletions sig-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ When the need arises, a [new SIG can be created](sig-wg-lifecycle.md)
|[Cluster Lifecycle](sig-cluster-lifecycle/README.md)|[cluster-lifecycle](https://github.com/kubernetes/kubernetes/labels/sig%2Fcluster-lifecycle)|* [Justin Santa Barbara](https://github.com/justinsb), Google<br>* [Lubomir Ivanov](https://github.com/neolit123), VMware<br>* [Vince Prignano](https://github.com/vincepri), Red Hat<br>|* [Slack](https://kubernetes.slack.com/messages/sig-cluster-lifecycle)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-cluster-lifecycle)|* Regular SIG Meeting: [Tuesdays at 09:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/916523531?pwd=eVhPNU5IQWtBYWhmT1N4T0V6bHZFZz09)<br>* (cluster-addons) Cluster Addons meeting: [Tuesdays at 09:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/130096731?pwd=U3pzWloxZ0lpbEtadTZGSERRdENrZz09)<br>* (cluster-api) Cluster API office hours: [Wednesdays at 10:00 PT (Pacific Time) (weekly)](https://zoom.us/j/861487554?pwd=dTVGVVFCblFJc0VBbkFqQlU0dHpiUT09)<br>* (cluster-api-provider-aws) Cluster API Provider AWS office hours: [Mondays at 09:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/423312508?pwd=Tk9OWnZ4WHg2T2xRek9xZXA1eFQ4dz09)<br>* (cluster-api-provider-azure) Cluster API Provider Azure office hours: [Thursdays at 09:00 PT (Pacific Time) (weekly)](https://zoom.us/j/566930821?pwd=N2JuRWljc3hGS3ZnVlBLTk42TFlzQT09)<br>* (cluster-api-provider-digitalocean) Cluster API Provider DigitalOcean office hours: [Thursdays at 09:00 PT (Pacific Time) (monthly, second Thursday of the month)](https://zoom.us/j/91312171751?pwd=bndnMDdJMkhySDVncjZoR1VhdFBTZz09)<br>* (cluster-api-provider-ibmcloud) Cluster API Provider IBM Cloud office hours: [Fridays at 09:00 IST (weekly)](https://zoom.us/j/9392903494)<br>* (cluster-api-provider-kubevirt) Cluster API Provider KubeVirt Syncup Meetings: [Tuesdays at 8:00 PT (Pacific Time) (weekly starting Tuesday December 7th, 2021)](https://zoom.us/j/94685513559?pwd=cnI3RUQyZ3RrckpOc1BQNDA1Q1BrZz09)<br>* (cluster-api-provider-nested) Cluster API Provider Nested Office Hours: [Tuesdays at 10:00 PT (Pacific Time) (weekly)](https://zoom.us/j/91929881559?pwd=WllxazhTUzBFN1BNWTRadTA3NGtQQT09)<br>* (cluster-api-provider-openstack) Cluster API Provider OpenStack Office Hours: [Wednesdays at 14:00 UTC (alternate weeks, check agenda doc for last meeting)](https://zoom.us/j/91405526408?pwd=bVBxempwVDBzejJGQlhSOGlXZnRxUT09)<br>* (cluster-api-provider-vsphere) Cluster API vSphere meeting: [Thursdays at 10:00 PT (Pacific Time) (biweekly starting Thursday June 25th, 2020)](https://zoom.us/j/92253194848?pwd=cVVVNDMxeTl1QVJPUlpvLzNSVU1JZz09)<br>* (etcdadm) etcdadm Office Hours: [Mondays at 09:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/612375927?pwd=MldxRnRSOExCVW1rbjM4ZzBSc3MvUT09)<br>* (image-builder) Image Builder office hours: [Mondays at 08:30 PT (Pacific Time) (biweekly)](https://zoom.us/j/807524571?pwd=WEFTeDJzeWU3bVFkcWQ0UEdZRkRCdz09)<br>* (kOps) kOps Office Hours: [Fridays at 09:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/97072789944?pwd=VVlUR3dhN2h5TEFQZHZTVVd4SnJUdz09)<br>* (kubeadm) kubeadm Office Hours: [Wednesdays at 09:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/179916854?pwd=dzRhbjFnRGVQRDVUVHY1a29JV2JxUT09)<br>* (minikube) minikube office hours: [Mondays at 11:00 PT (Pacific Time) (biweekly)](https://zoom.us/j/97017029363?pwd=U3MvZ3pMMHM5eWorSjgzUnd5OEFtUT09)<br>
|[Contributor Experience](sig-contributor-experience/README.md)|[contributor-experience](https://github.com/kubernetes/kubernetes/labels/sig%2Fcontributor-experience)|* [Josh Berkus](https://github.com/jberkus), Red Hat<br>* [Kaslin Fields](https://github.com/kaslin), Google<br>* [Bob Killen](https://github.com/mrbobbytables), Google<br>* [Nabarun Pal](https://github.com/palnabarun), VMware<br>|* [Slack](https://kubernetes.slack.com/messages/sig-contribex)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-contribex)|* Regular SIG Meeting: [Wednesdays at 9:00 PT (Pacific Time) (weekly alternating slack/zoom)](https://zoom.us/j/397264241?pwd=bHNnZVArNFdPaWVJMmttdko0Sktudz09)<br>* (contributor-comms) Contributor Comms - Contributor Comms Team Meeting: [Fridays at 8:00 PT (Pacific Time) (weekly)](https://zoom.us/j/596959769?pwd=TURBNlZPb3BEWVFmbWlCYXlMVVJiUT09)<br>* (github-management) GitHub Administration Subproject: [Thursdays at 09:00 PT (Pacific Time) (Monthly on 4th Thursday)](https://zoom.us/j/442435463?pwd=Rk1PWWpSSTJDaWJKdzRYb2EyTlkvZz09)<br>
|[Docs](sig-docs/README.md)|[docs](https://github.com/kubernetes/kubernetes/labels/sig%2Fdocs)|* [Divya Mohan](https://github.com/divya-mohan0209), SUSE<br>* [Natali Vlatko](https://github.com/natalisucks), Wayfair<br>* [Rey Lejano](https://github.com/reylejano), SUSE<br>|* [Slack](https://kubernetes.slack.com/messages/sig-docs)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-docs)|* APAC SIG Meeting: [Wednesdays at 05:30 UTC (monthly - Wednesday, after the fourth Tuesday, every month)](https://docs.google.com/document/d/1emuO4nmaQq3K8JZ9-MQeIygtrCPO9kWv7U7RzTaW4F8/edit)<br>* Korean Team Meeting: [Thursdays at 13:00 UTC (biweekly)](https://docs.google.com/document/d/1h5sMhBpPB5unJmBAS7KzDiPs-_eFQOu5o4UyHwMtFCA/edit)<br>* Localization Subproject Meeting: [Mondays at 15:00 UTC (first Monday of the month)](https://docs.google.com/document/d/1NwO1AN8Ea2zlK8uAdaDAKf1-LZDAFvSewIfrKqfl5No/)<br>* New Contributor Meet and Greet: [Tuesdays at 10:30 UTC (first Tuesday of the month)](https://zoom.us/j/92822621820?pwd=S1p4RnB1RmNSZ3JjYlRRUVd4UjFPZz09)<br>* Regular SIG Meeting: [Tuesdays at 17:30 UTC (weekly - except fourth Tuesday every month)](https://docs.google.com/document/d/1emuO4nmaQq3K8JZ9-MQeIygtrCPO9kWv7U7RzTaW4F8/edit)<br>* Spanish Team Meeting: [Tuesdays at 15:30 UTC (weekly)](https://zoom.us/j/95918289494?pwd=Wk9Oa0xZUkFXSDV5OTFoZEZsTURCZz09)<br>
|[etcd](sig-etcd/README.md)|[etcd](https://github.com/kubernetes/kubernetes/labels/sig%2Fetcd)|* [Benjamin Wang](https://github.com/ahrtr), VMWare<br>* [Marek Siarkowicz](https://github.com/serathius), Google<br>|* [Slack](https://kubernetes.slack.com/messages/sig-etcd)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-etcd)|* Regular SIG Meeting: [Thursdays at 9:30 PT (Pacific Time) (biweekly)](TBD)<br>
|[Instrumentation](sig-instrumentation/README.md)|[instrumentation](https://github.com/kubernetes/kubernetes/labels/sig%2Finstrumentation)|* [Elana Hashman](https://github.com/ehashman), Apple<br>* [Han Kang](https://github.com/logicalhan), Google<br>|* [Slack](https://kubernetes.slack.com/messages/sig-instrumentation)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-instrumentation)|* Regular SIG Meeting: [Thursdays at 9:30 PT (Pacific Time) (biweekly)](https://zoom.us/j/5342565819?pwd=RlVsK21NVnR1dmE3SWZQSXhveHZPdz09)<br>* Regular Triage Meeting: [Thursdays at 9:30 PT (Pacific Time) (biweekly - alternating with regular meeting)](https://zoom.us/j/5342565819?pwd=RlVsK21NVnR1dmE3SWZQSXhveHZPdz09)<br>
|[K8s Infra](sig-k8s-infra/README.md)|[k8s-infra](https://github.com/kubernetes/kubernetes/labels/sig%2Fk8s-infra)|* [Arnaud Meukam](https://github.com/ameukam), VMware<br>* [Davanum Srinivas](https://github.com/dims), Amazon Web Services<br>|* [Slack](https://kubernetes.slack.com/messages/sig-k8s-infra)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-k8s-infra)|* Regular SIG Meeting: [Wednesdays at 20:00 UTC (bi-weekly)](https://zoom.us/j/93109963352?pwd=SHJTcFR2bVg1akYxSDREUWQzaldrQT09)<br>* (k8s-infra-dns) Regular SIG Meeting: [Wednesdays at 20:00 UTC (bi-weekly)](https://zoom.us/j/93109963352?pwd=SHJTcFR2bVg1akYxSDREUWQzaldrQT09)<br>* (k8s-infra-groups) Regular SIG Meeting: [Wednesdays at 20:00 UTC (bi-weekly)](https://zoom.us/j/93109963352?pwd=SHJTcFR2bVg1akYxSDREUWQzaldrQT09)<br>* (k8s.io) Regular SIG Meeting: [Wednesdays at 20:00 UTC (bi-weekly)](https://zoom.us/j/93109963352?pwd=SHJTcFR2bVg1akYxSDREUWQzaldrQT09)<br>* (porche) Regular SIG Meeting: [Wednesdays at 20:00 UTC (bi-weekly)](https://zoom.us/j/93109963352?pwd=SHJTcFR2bVg1akYxSDREUWQzaldrQT09)<br>* (registry.k8s.io) Regular SIG Meeting: [Wednesdays at 20:00 UTC (bi-weekly)](https://zoom.us/j/93109963352?pwd=SHJTcFR2bVg1akYxSDREUWQzaldrQT09)<br>
|[Multicluster](sig-multicluster/README.md)|[multicluster](https://github.com/kubernetes/kubernetes/labels/sig%2Fmulticluster)|* [Jeremy Olmsted-Thompson](https://github.com/jeremyot), Google<br>* [Paul Morie](https://github.com/pmorie), Apple<br>|* [Slack](https://kubernetes.slack.com/messages/sig-multicluster)<br>* [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-multicluster)|* Regular SIG Meeting: [Tuesdays at 9:30 PT (Pacific Time) (bi-weekly)](https://zoom.us/my/k8s.mc)<br>
Expand Down
Loading

0 comments on commit 3003c5e

Please sign in to comment.