[test] support cluster-api style rolling replacement upgrade
- 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
Assessment
This issue has not been assessed yet.