etcd-io / etcd-io/etcd

[test] support cluster-api style rolling replacement upgrade

Open
#20,804 10 comments 0 reactions 2 assignees Claimed by @akstron View on GitHub
area/testing help wanted stage/tracked type/feature
Dominant language
Go
Stars
52.3k
Forks
10.5k
Avg merge
3d 1h
Merged PRs (30d)
44

Description

### What would you like to be added?

Currently our e2e framework supports `in-place` upgrade. We just replace the binary, and reuse the existing data.

https://github.com/etcd-io/etcd/blob/30452ab110473eda5f60bdb301c046194a154e91/tests/framework/e2e/downgrade.go#L131

However, the cluster-api/Kubeadm upgrades Kubernetes cluster in a rolling replacement approach,
- add a new learner first;
- promote it later
- remove an old node
- repeat the above steps until all nodes are replaced.

The key difference is the new member(learner) gets started without local data, so it may receive a snapshot from the leader.

We should update our e2e test framework to support both upgrade approaches,
- rolling in-place upgrade
- rolling replacement upgrade

### Why is this needed?

To improve test coverage.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.