Codify the the kubernetes-etcd contract into etcd robustness tests
@serathius is already working on this.
Since May 3, 2023.
- Dominant language
- Go
- Stars
- 52.3k
- Forks
- 10.5k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 42
Description
What would you like to be added?
Etcd robustness tests are pretty great way to validate generic contracts, however it's pretty huge problem space and it's hard to know what should be done next.
To drive robustness testing direction and priorities I would like to propose to first to focus on Kubernetes-Etcd contract. Work would include clarifying, documenting and then codifying it into etcd robustness tests.
The end result would be an etcd model that work as a fake that Kubernetes project can use to cross test the contract. A fake is a lightweight implementation that behaves like a real system and can be used for testing.
Plan
- Collect the collective knowledge of the implicit Kubernetes-etcd contract in a document and collect feedback requires joining etcd-dev@googlegroups.com or dev@kubernetes.io to comment.
- https://github.com/etcd-io/website/pull/676
- Validate K8s-etcd contract in etcd robustness tests
- https://github.com/etcd-io/etcd/pull/15817
- https://github.com/etcd-io/etcd/pull/15827
- https://github.com/etcd-io/etcd/pull/15840
- https://github.com/etcd-io/etcd/pull/16072
- Implement list-watch protocol
- Implement pagination https://github.com/etcd-io/etcd/pull/16111
- Update watch validation to match contract watch validation https://github.com/etcd-io/etcd/pull/16136
- PrevKey https://github.com/etcd-io/etcd/issues/16838
- Use WithRequireLeader
- https://github.com/etcd-io/etcd/pull/17833
- Implement non-recursive watch
- Implement Kubernetes like compaction
Why is this needed?
Kubernetes is currently the main user of etcd, still there are a number of untested assumptions in the K8s-etcd contract. Changes to these underlying features may cause Kubernetes to behave incorrectly, or even not work at all.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.