Skip to content

Commit aaad86c

Browse files
authored
Merge pull request kubernetes#80037 from dims/remove-support-for-etcd2-from-images-etcd
Remove support for etcd2 from cluster/images/etcd image
2 parents eb4ff66 + 88b0be7 commit aaad86c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+15
-5861
lines changed

cluster/images/etcd/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# Build the etcd image
1616
#
1717
# Usage:
18-
# [BUNDLED_ETCD_VERSIONS=2.2.1 2.3.7 3.0.17 3.1.12 3.2.24 3.3.10] [REGISTRY=k8s.gcr.io] [ARCH=amd64] [BASEIMAGE=busybox] make (build|push)
18+
# [BUNDLED_ETCD_VERSIONS=3.0.17 3.1.12 3.2.24 3.3.10] [REGISTRY=k8s.gcr.io] [ARCH=amd64] [BASEIMAGE=busybox] make (build|push)
1919
#
2020
# The image contains different etcd versions to simplify
2121
# upgrades. Thus be careful when removing any versions from here.
@@ -26,15 +26,15 @@
2626
# Except from etcd-$(version) and etcdctl-$(version) binaries, we also
2727
# need etcd and etcdctl binaries for backward compatibility reasons.
2828
# That binary will be set to the last version from $(BUNDLED_ETCD_VERSIONS).
29-
BUNDLED_ETCD_VERSIONS?=2.2.1 2.3.7 3.0.17 3.1.12 3.2.24 3.3.10
29+
BUNDLED_ETCD_VERSIONS?=3.0.17 3.1.12 3.2.24 3.3.10
3030

3131
# LATEST_ETCD_VERSION identifies the most recent etcd version available.
3232
LATEST_ETCD_VERSION?=3.3.10
3333

3434
# REVISION provides a version number fo this image and all it's bundled
3535
# artifacts. It should start at zero for each LATEST_ETCD_VERSION and increment
3636
# for each revision of this image at that etcd version.
37-
REVISION?=1
37+
REVISION?=2
3838

3939
# IMAGE_TAG Uniquely identifies k8s.gcr.io/etcd docker image with a tag of the form "<etcd-version>-<revision>".
4040
IMAGE_TAG=$(LATEST_ETCD_VERSION)-$(REVISION)

cluster/images/etcd/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ version.
3434
Upgrades to any target version are supported. The data will be automatically upgraded
3535
in steps to each minor version until the target version is reached.
3636

37-
Downgrades to the previous minor version of the 3.x series and from 3.0 to 2.3.7 are supported.
37+
Downgrades to the previous minor version of the 3.x series is supported.
3838

3939
#### Permissions
4040

cluster/images/etcd/migrate-if-needed.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,15 @@
1717
# NOTES
1818
# This script performs etcd upgrade based on the following environmental
1919
# variables:
20-
# TARGET_STORAGE - API of etcd to be used (supported: 'etcd2', 'etcd3')
21-
# TARGET_VERSION - etcd release to be used (supported: '2.2.1', '2.3.7', '3.0.17', '3.1.12', '3.2.24', "3.3.10")
20+
# TARGET_STORAGE - API of etcd to be used (supported: 'etcd3')
21+
# TARGET_VERSION - etcd release to be used (supported: '3.0.17', '3.1.12', '3.2.24', "3.3.10")
2222
# DATA_DIRECTORY - directory with etcd data
2323
#
2424
# The current etcd version and storage format is detected based on the
2525
# contents of "${DATA_DIRECTORY}/version.txt" file (if the file doesn't
26-
# exist, we default it to "2.2.1/etcd2".
26+
# exist, we default it to "3.0.17/etcd2".
2727
#
2828
# The update workflow support the following upgrade steps:
29-
# - 2.2.1/etcd2 -> 2.3.7/etcd2
30-
# - 2.3.7/etcd2 -> 3.0.17/etcd2
3129
# - 3.0.17/etcd3 -> 3.1.12/etcd3
3230
# - 3.1.12/etcd3 -> 3.2.24/etcd3
3331
# - 3.2.24/etcd3 -> 3.3.10/etcd3
@@ -43,7 +41,7 @@ set -o nounset
4341

4442
# NOTE: BUNDLED_VERSION has to match release binaries present in the
4543
# etcd image (to make this script work correctly).
46-
BUNDLED_VERSIONS="2.2.1, 2.3.7, 3.0.17, 3.1.12, 3.2.24, 3.3.10"
44+
BUNDLED_VERSIONS="3.0.17, 3.1.12, 3.2.24, 3.3.10"
4745

4846
ETCD_NAME="${ETCD_NAME:-etcd-$(hostname)}"
4947
if [ -z "${DATA_DIRECTORY:-}" ]; then

cluster/images/etcd/migrate/BUILD

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,13 @@ go_library(
2020
"migrate_client.go",
2121
"migrate_server.go",
2222
"migrator.go",
23-
"rollback_v2.go",
2423
"versions.go",
2524
],
2625
importpath = "k8s.io/kubernetes/cluster/images/etcd/migrate",
2726
deps = [
28-
"//third_party/forked/etcd221/wal:go_default_library",
2927
"//vendor/github.com/blang/semver:go_default_library",
3028
"//vendor/github.com/coreos/etcd/client:go_default_library",
3129
"//vendor/github.com/coreos/etcd/clientv3:go_default_library",
32-
"//vendor/github.com/coreos/etcd/etcdserver:go_default_library",
33-
"//vendor/github.com/coreos/etcd/etcdserver/etcdserverpb:go_default_library",
34-
"//vendor/github.com/coreos/etcd/etcdserver/membership:go_default_library",
35-
"//vendor/github.com/coreos/etcd/mvcc/backend:go_default_library",
36-
"//vendor/github.com/coreos/etcd/mvcc/mvccpb:go_default_library",
37-
"//vendor/github.com/coreos/etcd/pkg/pbutil:go_default_library",
38-
"//vendor/github.com/coreos/etcd/pkg/types:go_default_library",
39-
"//vendor/github.com/coreos/etcd/raft/raftpb:go_default_library",
40-
"//vendor/github.com/coreos/etcd/snap:go_default_library",
41-
"//vendor/github.com/coreos/etcd/store:go_default_library",
42-
"//vendor/github.com/coreos/etcd/wal:go_default_library",
43-
"//vendor/github.com/coreos/etcd/wal/walpb:go_default_library",
44-
"//vendor/github.com/coreos/go-semver/semver:go_default_library",
4530
"//vendor/github.com/spf13/cobra:go_default_library",
4631
"//vendor/k8s.io/klog:go_default_library",
4732
],

cluster/images/etcd/migrate/integration_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ import (
4040
)
4141

4242
var (
43-
testSupportedVersions = MustParseSupportedVersions("2.2.1, 2.3.7, 3.0.17, 3.1.12")
44-
testVersionOldest = &EtcdVersion{semver.MustParse("2.2.1")}
43+
testSupportedVersions = MustParseSupportedVersions("3.0.17, 3.1.12")
4544
testVersionPrevious = &EtcdVersion{semver.MustParse("3.0.17")}
4645
testVersionLatest = &EtcdVersion{semver.MustParse("3.1.12")}
4746
)
@@ -55,15 +54,13 @@ func TestMigrate(t *testing.T) {
5554
protocol string
5655
}{
5756
// upgrades
58-
{"v2-v3-up", 1, "2.2.1/etcd2", "3.0.17/etcd3", "https"},
5957
{"v3-v3-up", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https"},
60-
{"oldest-newest-up", 1, "2.2.1/etcd2", "3.1.12/etcd3", "https"},
58+
{"oldest-newest-up", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https"},
6159

6260
// warning: v2->v3 ha upgrades not currently supported.
6361
{"ha-v3-v3-up", 3, "3.0.17/etcd3", "3.1.12/etcd3", "https"},
6462

6563
// downgrades
66-
{"v3-v2-down", 1, "3.0.17/etcd3", "2.2.1/etcd2", "https"},
6764
{"v3-v3-down", 1, "3.1.12/etcd3", "3.0.17/etcd3", "https"},
6865

6966
// warning: ha downgrades not yet supported.

cluster/images/etcd/migrate/migrator.go

Lines changed: 2 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,9 @@ func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
9595
}
9696
return nil
9797
case current.storageVersion == storageEtcd2 && target.storageVersion == storageEtcd3:
98-
klog.Info("upgrading from etcd2 storage to etcd3 storage")
99-
current, err = m.etcd2ToEtcd3Upgrade(current, target)
98+
return fmt.Errorf("upgrading from etcd2 storage to etcd3 storage is not supported")
10099
case current.version.Major == 3 && target.version.Major == 2:
101-
klog.Info("downgrading from etcd 3.x to 2.x")
102-
current, err = m.rollbackToEtcd2(current, target)
100+
return fmt.Errorf("downgrading from etcd 3.x to 2.x is not supported")
103101
case current.version.Major == target.version.Major && current.version.Minor < target.version.Minor:
104102
stepVersion := m.cfg.supportedVersions.NextVersionPair(current)
105103
klog.Infof("upgrading etcd from %s to %s", current, stepVersion)
@@ -114,18 +112,6 @@ func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
114112
}
115113
}
116114

117-
func (m *Migrator) backupEtcd2(current *EtcdVersion) error {
118-
backupDir := fmt.Sprintf("%s/%s", m.dataDirectory, "migration-backup")
119-
klog.Info("Backup etcd before starting migration")
120-
err := os.Mkdir(backupDir, 0666)
121-
if err != nil {
122-
return fmt.Errorf("failed to create backup directory before starting migration: %v", err)
123-
}
124-
m.client.Backup(current, backupDir)
125-
klog.Infof("Backup done in %s", backupDir)
126-
return nil
127-
}
128-
129115
func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
130116
if target.version.Minor != current.version.Minor-1 {
131117
return nil, fmt.Errorf("rollback from %s to %s not supported, only rollbacks to the previous minor version are supported", current.version, target.version)
@@ -191,56 +177,6 @@ func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *E
191177
return target, nil
192178
}
193179

194-
func (m *Migrator) rollbackToEtcd2(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
195-
if !(current.version.Major == 3 && current.version.Minor == 0 && target.version.Major == 2 && target.version.Minor == 2) {
196-
return nil, fmt.Errorf("etcd3 -> etcd2 downgrade is supported only between 3.0.x and 2.2.x, got current %s target %s", current, target)
197-
}
198-
klog.Info("Backup and remove all existing v2 data")
199-
err := m.dataDirectory.Backup()
200-
if err != nil {
201-
return nil, err
202-
}
203-
err = RollbackV3ToV2(m.dataDirectory.path, time.Hour)
204-
if err != nil {
205-
return nil, fmt.Errorf("rollback to etcd 2.x failed: %v", err)
206-
}
207-
return target, nil
208-
209-
}
210-
211-
func (m *Migrator) etcd2ToEtcd3Upgrade(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
212-
if current.storageVersion != storageEtcd2 || target.version.Major != 3 || target.storageVersion != storageEtcd3 {
213-
return nil, fmt.Errorf("etcd2 to etcd3 upgrade is supported only for x.x.x/etcd2 to 3.0.x/etcd3, got current %s target %s", current, target)
214-
}
215-
runner := m.newServer()
216-
217-
klog.Info("Performing etcd2 -> etcd3 migration")
218-
err := m.client.Migrate(target.version)
219-
if err != nil {
220-
return nil, err
221-
}
222-
klog.Info("Attaching leases to TTL entries")
223-
224-
// Now attach lease to all keys.
225-
// To do it, we temporarily start etcd on a random port (so that
226-
// apiserver actually cannot access it).
227-
err = runner.Start(target.version)
228-
if err != nil {
229-
return nil, err
230-
}
231-
defer func() {
232-
err = runner.Stop()
233-
}()
234-
235-
// Create a lease and attach all keys to it.
236-
err = m.client.AttachLease(1 * time.Hour)
237-
if err != nil {
238-
return nil, err
239-
}
240-
241-
return target, err
242-
}
243-
244180
func (m *Migrator) minorVersionUpgrade(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
245181
runner := m.newServer()
246182

0 commit comments

Comments
 (0)