Skip to content

Commit

Permalink
Replaced github.com/coreos/etcd with go.etcd.io/etcd (CentaurusInfra#222
Browse files Browse the repository at this point in the history
)

Repalced CAFile with TrustedCAFile
Moved storage from etcd to etcd3
hack/pin-dependency.sh go.etcd.io/etcd c65a9e2dd1fd
hack/pin-dependency.sh google.golang.org/grpc v1.23.0
hack/pin-dependency.sh github.com/google/btree v1.0.0
hack/pin-dependency.sh github.com/dustin/go-humanize v1.0.0
hack/update-vendor.sh

Co-authored-by: Ubuntu <[email protected]>
  • Loading branch information
jshaofuturewei and Ubuntu authored May 26, 2020
1 parent 1031ecd commit d922109
Show file tree
Hide file tree
Showing 940 changed files with 54,778 additions and 15,684 deletions.
19 changes: 2 additions & 17 deletions cluster/images/etcd/migrate/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,14 @@ go_library(
"migrate_client.go",
"migrate_server.go",
"migrator.go",
"rollback_v2.go",
"versions.go",
],
importpath = "k8s.io/kubernetes/cluster/images/etcd/migrate",
deps = [
"//third_party/forked/etcd221/wal:go_default_library",
"//vendor/github.com/blang/semver:go_default_library",
"//vendor/github.com/coreos/etcd/client:go_default_library",
"//vendor/github.com/coreos/etcd/clientv3:go_default_library",
"//vendor/github.com/coreos/etcd/etcdserver:go_default_library",
"//vendor/github.com/coreos/etcd/etcdserver/etcdserverpb:go_default_library",
"//vendor/github.com/coreos/etcd/etcdserver/membership:go_default_library",
"//vendor/github.com/coreos/etcd/mvcc/backend:go_default_library",
"//vendor/github.com/coreos/etcd/mvcc/mvccpb:go_default_library",
"//vendor/github.com/coreos/etcd/pkg/pbutil:go_default_library",
"//vendor/github.com/coreos/etcd/pkg/types:go_default_library",
"//vendor/github.com/coreos/etcd/raft/raftpb:go_default_library",
"//vendor/github.com/coreos/etcd/snap:go_default_library",
"//vendor/github.com/coreos/etcd/store:go_default_library",
"//vendor/github.com/coreos/etcd/wal:go_default_library",
"//vendor/github.com/coreos/etcd/wal/walpb:go_default_library",
"//vendor/github.com/coreos/go-semver/semver:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/go.etcd.io/etcd/client:go_default_library",
"//vendor/go.etcd.io/etcd/clientv3:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
],
)
Expand Down
4 changes: 2 additions & 2 deletions cluster/images/etcd/migrate/migrate_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import (

"context"

clientv2 "github.com/coreos/etcd/client"
"github.com/coreos/etcd/clientv3"
clientv2 "go.etcd.io/etcd/client"
"go.etcd.io/etcd/clientv3"
"k8s.io/klog"
)

Expand Down
69 changes: 3 additions & 66 deletions cluster/images/etcd/migrate/migrator.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
Copyright 2018 The Kubernetes Authors.
Copyright 2020 Authors of Arktos - file modified.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -95,11 +96,9 @@ func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
}
return nil
case current.storageVersion == storageEtcd2 && target.storageVersion == storageEtcd3:
klog.Infof("upgrading from etcd2 storage to etcd3 storage")
current, err = m.etcd2ToEtcd3Upgrade(current, target)
return fmt.Errorf("upgrading from etcd2 storage to etcd3 storage is not supported")
case current.version.Major == 3 && target.version.Major == 2:
klog.Infof("downgrading from etcd 3.x to 2.x")
current, err = m.rollbackToEtcd2(current, target)
return fmt.Errorf("downgrading from etcd 3.x to 2.x is not supported")
case current.version.Major == target.version.Major && current.version.Minor < target.version.Minor:
stepVersion := m.cfg.supportedVersions.NextVersionPair(current)
klog.Infof("upgrading etcd from %s to %s", current, stepVersion)
Expand All @@ -114,18 +113,6 @@ func (m *Migrator) MigrateIfNeeded(target *EtcdVersionPair) error {
}
}

func (m *Migrator) backupEtcd2(current *EtcdVersion) error {
backupDir := fmt.Sprintf("%s/%s", m.dataDirectory, "migration-backup")
klog.Infof("Backup etcd before starting migration")
err := os.Mkdir(backupDir, 0666)
if err != nil {
return fmt.Errorf("failed to create backup directory before starting migration: %v", err)
}
m.client.Backup(current, backupDir)
klog.Infof("Backup done in %s", backupDir)
return nil
}

func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
if target.version.Minor != current.version.Minor-1 {
return nil, fmt.Errorf("rollback from %s to %s not supported, only rollbacks to the previous minor version are supported", current.version, target.version)
Expand Down Expand Up @@ -191,56 +178,6 @@ func (m *Migrator) rollbackEtcd3MinorVersion(current *EtcdVersionPair, target *E
return target, nil
}

func (m *Migrator) rollbackToEtcd2(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
if !(current.version.Major == 3 && current.version.Minor == 0 && target.version.Major == 2 && target.version.Minor == 2) {
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)
}
klog.Infof("Backup and remove all existing v2 data")
err := m.dataDirectory.Backup()
if err != nil {
return nil, err
}
err = RollbackV3ToV2(m.dataDirectory.path, time.Hour)
if err != nil {
return nil, fmt.Errorf("rollback to etcd 2.x failed: %v", err)
}
return target, nil

}

func (m *Migrator) etcd2ToEtcd3Upgrade(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
if current.storageVersion != storageEtcd2 || target.version.Major != 3 || target.storageVersion != storageEtcd3 {
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)
}
runner := m.newServer()

klog.Infof("Performing etcd2 -> etcd3 migration")
err := m.client.Migrate(target.version)
if err != nil {
return nil, err
}
klog.Infof("Attaching leases to TTL entries")

// Now attach lease to all keys.
// To do it, we temporarily start etcd on a random port (so that
// apiserver actually cannot access it).
err = runner.Start(target.version)
if err != nil {
return nil, err
}
defer func() {
err = runner.Stop()
}()

// Create a lease and attach all keys to it.
err = m.client.AttachLease(1 * time.Hour)
if err != nil {
return nil, err
}

return target, err
}

func (m *Migrator) minorVersionUpgrade(current *EtcdVersionPair, target *EtcdVersionPair) (*EtcdVersionPair, error) {
runner := m.newServer()

Expand Down
Loading

0 comments on commit d922109

Please sign in to comment.