etcd-io/etcd

[test] support cluster-api style rolling replacement upgrade

Open

#20,804 创建于 2025年10月15日

在 GitHub 查看
 (10 评论) (0 反应) (2 负责人)Go (10,352 fork)batch import
area/testinghelp wantedstage/trackedtype/feature

仓库指标

Star
 (51,701 star)
PR 合并指标
 (平均合并 6天 3小时) (30 天内合并 71 个 PR)

描述

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.

贡献者指南