mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Add client listening URLs flag to etcd migrate.
This commit is contained in:
parent
fd5d61060a
commit
e8fcc44286
@ -56,21 +56,23 @@ func init() {
|
|||||||
|
|
||||||
func TestMigrate(t *testing.T) {
|
func TestMigrate(t *testing.T) {
|
||||||
migrations := []struct {
|
migrations := []struct {
|
||||||
title string
|
title string
|
||||||
memberCount int
|
memberCount int
|
||||||
startVersion string
|
startVersion string
|
||||||
endVersion string
|
endVersion string
|
||||||
protocol string
|
protocol string
|
||||||
|
clientListenUrls string
|
||||||
}{
|
}{
|
||||||
// upgrades
|
// upgrades
|
||||||
{"v3-v3-up", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https"},
|
{"v3-v3-up", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https", ""},
|
||||||
{"oldest-newest-up", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https"},
|
{"oldest-newest-up", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https", ""},
|
||||||
|
{"v3-v3-up-with-additional-client-url", 1, "3.0.17/etcd3", "3.1.12/etcd3", "https", "http://127.0.0.1:2379,http://10.128.0.1:2379"},
|
||||||
|
|
||||||
// warning: v2->v3 ha upgrades not currently supported.
|
// warning: v2->v3 ha upgrades not currently supported.
|
||||||
{"ha-v3-v3-up", 3, "3.0.17/etcd3", "3.1.12/etcd3", "https"},
|
{"ha-v3-v3-up", 3, "3.0.17/etcd3", "3.1.12/etcd3", "https", ""},
|
||||||
|
|
||||||
// downgrades
|
// downgrades
|
||||||
{"v3-v3-down", 1, "3.1.12/etcd3", "3.0.17/etcd3", "https"},
|
{"v3-v3-down", 1, "3.1.12/etcd3", "3.0.17/etcd3", "https", ""},
|
||||||
|
|
||||||
// warning: ha downgrades not yet supported.
|
// warning: ha downgrades not yet supported.
|
||||||
}
|
}
|
||||||
@ -80,7 +82,7 @@ func TestMigrate(t *testing.T) {
|
|||||||
start := MustParseEtcdVersionPair(m.startVersion)
|
start := MustParseEtcdVersionPair(m.startVersion)
|
||||||
end := MustParseEtcdVersionPair(m.endVersion)
|
end := MustParseEtcdVersionPair(m.endVersion)
|
||||||
|
|
||||||
testCfgs := clusterConfig(t, m.title, m.memberCount, m.protocol)
|
testCfgs := clusterConfig(t, m.title, m.memberCount, m.protocol, m.clientListenUrls)
|
||||||
|
|
||||||
servers := []*EtcdMigrateServer{}
|
servers := []*EtcdMigrateServer{}
|
||||||
for _, cfg := range testCfgs {
|
for _, cfg := range testCfgs {
|
||||||
@ -217,7 +219,7 @@ func checkPermissions(t *testing.T, path string, expected os.FileMode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func clusterConfig(t *testing.T, name string, memberCount int, protocol string) []*EtcdMigrateCfg {
|
func clusterConfig(t *testing.T, name string, memberCount int, protocol string, clientListenUrls string) []*EtcdMigrateCfg {
|
||||||
peers := []string{}
|
peers := []string{}
|
||||||
for i := 0; i < memberCount; i++ {
|
for i := 0; i < memberCount; i++ {
|
||||||
memberName := fmt.Sprintf("%s-%d", name, i)
|
memberName := fmt.Sprintf("%s-%d", name, i)
|
||||||
@ -243,6 +245,7 @@ func clusterConfig(t *testing.T, name string, memberCount int, protocol string)
|
|||||||
port: uint64(2379 + i*10000),
|
port: uint64(2379 + i*10000),
|
||||||
peerListenUrls: peerURL,
|
peerListenUrls: peerURL,
|
||||||
peerAdvertiseUrls: peerURL,
|
peerAdvertiseUrls: peerURL,
|
||||||
|
clientListenUrls: clientListenUrls,
|
||||||
etcdDataPrefix: "/registry",
|
etcdDataPrefix: "/registry",
|
||||||
ttlKeysDirectory: "/registry/events",
|
ttlKeysDirectory: "/registry/events",
|
||||||
supportedVersions: testSupportedVersions,
|
supportedVersions: testSupportedVersions,
|
||||||
|
@ -65,8 +65,8 @@ func runMigrate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
migrate(
|
migrate(
|
||||||
opts.name, opts.port, opts.peerListenUrls, opts.peerAdvertiseUrls, opts.binDir,
|
opts.name, opts.port, opts.peerListenUrls, opts.peerAdvertiseUrls, opts.clientListenUrls,
|
||||||
opts.dataDir, opts.etcdDataPrefix, opts.ttlKeysDirectory, opts.initialCluster,
|
opts.binDir, opts.dataDir, opts.etcdDataPrefix, opts.ttlKeysDirectory, opts.initialCluster,
|
||||||
target, opts.supportedVersions, opts.etcdServerArgs)
|
target, opts.supportedVersions, opts.etcdServerArgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,8 @@ func copyBinaries() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// migrate opens or initializes the etcd data directory, configures the migrator, and starts the migration.
|
// migrate opens or initializes the etcd data directory, configures the migrator, and starts the migration.
|
||||||
func migrate(name string, port uint64, peerListenUrls string, peerAdvertiseUrls string, binPath string, dataDirPath string, etcdDataPrefix string, ttlKeysDirectory string,
|
func migrate(name string, port uint64, peerListenUrls string, peerAdvertiseUrls string, clientListenUrls string,
|
||||||
|
binPath string, dataDirPath string, etcdDataPrefix string, ttlKeysDirectory string,
|
||||||
initialCluster string, target *EtcdVersionPair, bundledVersions SupportedVersions, etcdServerArgs string) {
|
initialCluster string, target *EtcdVersionPair, bundledVersions SupportedVersions, etcdServerArgs string) {
|
||||||
|
|
||||||
dataDir, err := OpenOrCreateDataDirectory(dataDirPath)
|
dataDir, err := OpenOrCreateDataDirectory(dataDirPath)
|
||||||
@ -98,6 +99,7 @@ func migrate(name string, port uint64, peerListenUrls string, peerAdvertiseUrls
|
|||||||
port: port,
|
port: port,
|
||||||
peerListenUrls: peerListenUrls,
|
peerListenUrls: peerListenUrls,
|
||||||
peerAdvertiseUrls: peerAdvertiseUrls,
|
peerAdvertiseUrls: peerAdvertiseUrls,
|
||||||
|
clientListenUrls: clientListenUrls,
|
||||||
etcdDataPrefix: etcdDataPrefix,
|
etcdDataPrefix: etcdDataPrefix,
|
||||||
ttlKeysDirectory: ttlKeysDirectory,
|
ttlKeysDirectory: ttlKeysDirectory,
|
||||||
initialCluster: initialCluster,
|
initialCluster: initialCluster,
|
||||||
|
@ -39,6 +39,7 @@ func NewEtcdMigrateServer(cfg *EtcdMigrateCfg, client EtcdMigrateClient) *EtcdMi
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start starts an etcd server as a separate process, waits until it has started, and returns a exec.Cmd.
|
// Start starts an etcd server as a separate process, waits until it has started, and returns a exec.Cmd.
|
||||||
|
// TODO: Add support for listening to client via TLS.
|
||||||
func (r *EtcdMigrateServer) Start(version *EtcdVersion) error {
|
func (r *EtcdMigrateServer) Start(version *EtcdVersion) error {
|
||||||
etcdCmd := exec.Command(
|
etcdCmd := exec.Command(
|
||||||
fmt.Sprintf("%s/etcd-%s", r.cfg.binPath, version),
|
fmt.Sprintf("%s/etcd-%s", r.cfg.binPath, version),
|
||||||
@ -46,7 +47,7 @@ func (r *EtcdMigrateServer) Start(version *EtcdVersion) error {
|
|||||||
"--initial-cluster", r.cfg.initialCluster,
|
"--initial-cluster", r.cfg.initialCluster,
|
||||||
"--debug",
|
"--debug",
|
||||||
"--data-dir", r.cfg.dataDirectory,
|
"--data-dir", r.cfg.dataDirectory,
|
||||||
"--listen-client-urls", fmt.Sprintf("http://127.0.0.1:%d", r.cfg.port),
|
"--listen-client-urls", r.cfg.clientListenUrls,
|
||||||
"--advertise-client-urls", fmt.Sprintf("http://127.0.0.1:%d", r.cfg.port),
|
"--advertise-client-urls", fmt.Sprintf("http://127.0.0.1:%d", r.cfg.port),
|
||||||
"--listen-peer-urls", r.cfg.peerListenUrls,
|
"--listen-peer-urls", r.cfg.peerListenUrls,
|
||||||
"--initial-advertise-peer-urls", r.cfg.peerAdvertiseUrls,
|
"--initial-advertise-peer-urls", r.cfg.peerAdvertiseUrls,
|
||||||
|
@ -33,6 +33,7 @@ type EtcdMigrateCfg struct {
|
|||||||
port uint64
|
port uint64
|
||||||
peerListenUrls string
|
peerListenUrls string
|
||||||
peerAdvertiseUrls string
|
peerAdvertiseUrls string
|
||||||
|
clientListenUrls string
|
||||||
etcdDataPrefix string
|
etcdDataPrefix string
|
||||||
ttlKeysDirectory string
|
ttlKeysDirectory string
|
||||||
supportedVersions SupportedVersions
|
supportedVersions SupportedVersions
|
||||||
|
@ -42,6 +42,8 @@ const (
|
|||||||
peerListenUrlsFmt = "http://localhost:%d"
|
peerListenUrlsFmt = "http://localhost:%d"
|
||||||
peerAdvertiseUrlsEnv = "INITIAL_ADVERTISE_PEER_URLS"
|
peerAdvertiseUrlsEnv = "INITIAL_ADVERTISE_PEER_URLS"
|
||||||
peerAdvertiseUrlsFmt = "http://localhost:%d"
|
peerAdvertiseUrlsFmt = "http://localhost:%d"
|
||||||
|
clientListenURLsEnv = "LISTEN_CLIENT_URLS"
|
||||||
|
clientListenURLFmt = "http://127.0.0.1:%d"
|
||||||
targetVersionEnv = "TARGET_VERSION"
|
targetVersionEnv = "TARGET_VERSION"
|
||||||
targetStorageEnv = "TARGET_STORAGE"
|
targetStorageEnv = "TARGET_STORAGE"
|
||||||
etcdDataPrefixEnv = "ETCD_DATA_PREFIX"
|
etcdDataPrefixEnv = "ETCD_DATA_PREFIX"
|
||||||
@ -66,6 +68,7 @@ type migrateOpts struct {
|
|||||||
targetVersion string
|
targetVersion string
|
||||||
targetStorage string
|
targetStorage string
|
||||||
etcdServerArgs string
|
etcdServerArgs string
|
||||||
|
clientListenUrls string
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerFlags(flags *flag.FlagSet, opt *migrateOpts) {
|
func registerFlags(flags *flag.FlagSet, opt *migrateOpts) {
|
||||||
@ -81,6 +84,8 @@ func registerFlags(flags *flag.FlagSet, opt *migrateOpts) {
|
|||||||
"etcd --listen-peer-urls flag. If unset, fallbacks to LISTEN_PEER_URLS env and if unset defaults to http://localhost:<peer-port>.")
|
"etcd --listen-peer-urls flag. If unset, fallbacks to LISTEN_PEER_URLS env and if unset defaults to http://localhost:<peer-port>.")
|
||||||
flags.StringVar(&opts.peerAdvertiseUrls, "initial-advertise-peer-urls", "",
|
flags.StringVar(&opts.peerAdvertiseUrls, "initial-advertise-peer-urls", "",
|
||||||
"etcd --initial-advertise-peer-urls flag. If unset fallbacks to INITIAL_ADVERTISE_PEER_URLS env and if unset defaults to http://localhost:<peer-port>.")
|
"etcd --initial-advertise-peer-urls flag. If unset fallbacks to INITIAL_ADVERTISE_PEER_URLS env and if unset defaults to http://localhost:<peer-port>.")
|
||||||
|
flags.StringVar(&opts.clientListenUrls, "listen-client-urls", "",
|
||||||
|
"etcd --listen-client-urls flag. If unset, fallbacks to LISTEN_CLIENT_URLS env, and if unset defaults to http://127.0.0.1:<port>.")
|
||||||
flags.StringVar(&opts.binDir, "bin-dir", "/usr/local/bin",
|
flags.StringVar(&opts.binDir, "bin-dir", "/usr/local/bin",
|
||||||
"directory of etcd and etcdctl binaries, must contain etcd-<version> and etcdctl-<version> for each version listed in <bundled-versions>.")
|
"directory of etcd and etcdctl binaries, must contain etcd-<version> and etcdctl-<version> for each version listed in <bundled-versions>.")
|
||||||
flags.StringVar(&opts.dataDir, "data-dir", "",
|
flags.StringVar(&opts.dataDir, "data-dir", "",
|
||||||
@ -119,7 +124,7 @@ func fallbackToEnvWithDefault(flag, env, def string) string {
|
|||||||
if value, err := lookupEnv(env); err == nil {
|
if value, err := lookupEnv(env); err == nil {
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
klog.Warningf("%s variable unset - defaulting to %s", env, def)
|
klog.Warningf("%s variable for %s flag unset - defaulting to %s", env, flag, def)
|
||||||
return def
|
return def
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,6 +192,11 @@ func (opts *migrateOpts) validateAndDefault() error {
|
|||||||
opts.peerAdvertiseUrls = fallbackToEnvWithDefault("initial-advertise-peer-urls", peerAdvertiseUrlsEnv, def)
|
opts.peerAdvertiseUrls = fallbackToEnvWithDefault("initial-advertise-peer-urls", peerAdvertiseUrlsEnv, def)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.clientListenUrls == "" {
|
||||||
|
def := fmt.Sprintf(clientListenURLFmt, opts.port)
|
||||||
|
opts.clientListenUrls = fallbackToEnvWithDefault("listen-client-urls", clientListenURLsEnv, def)
|
||||||
|
}
|
||||||
|
|
||||||
if opts.targetVersion == "" {
|
if opts.targetVersion == "" {
|
||||||
if opts.targetVersion, err = fallbackToEnv("target-version", targetVersionEnv); err != nil {
|
if opts.targetVersion, err = fallbackToEnv("target-version", targetVersionEnv); err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user