Simplify etcd options builder

This commit is contained in:
Ciprian Hacman 2020-10-30 08:52:54 +02:00
parent ab157726d4
commit 91d9c061dd
1 changed files with 9 additions and 33 deletions

View File

@ -52,8 +52,8 @@ func (b *EtcdOptionsBuilder) BuildOptions(o interface{}) error {
} }
// Ensure the version is set // Ensure the version is set
if c.Version == "" && c.Provider == kops.EtcdProviderTypeLegacy { if c.Version == "" {
// Even if in legacy mode, etcd version 2 is unsupported as of k8s 1.13 // We run the k8s-recommended versions of etcd
if b.IsKubernetesGTE("1.17") { if b.IsKubernetesGTE("1.17") {
c.Version = DefaultEtcd3Version_1_17 c.Version = DefaultEtcd3Version_1_17
} else if b.IsKubernetesGTE("1.14") { } else if b.IsKubernetesGTE("1.14") {
@ -63,44 +63,20 @@ func (b *EtcdOptionsBuilder) BuildOptions(o interface{}) error {
} }
} }
if c.Version == "" && c.Provider == kops.EtcdProviderTypeManager { // We make sure that etcd v3 is used
// We run the k8s-recommended versions of etcd when using the manager version := strings.TrimPrefix(c.Version, "v")
if b.IsKubernetesGTE("1.17") { if !strings.HasPrefix(version, "3.") {
c.Version = DefaultEtcd3Version_1_17 return fmt.Errorf("unexpected etcd version %q", c.Version)
} else if b.IsKubernetesGTE("1.14") {
c.Version = DefaultEtcd3Version_1_14
} else {
c.Version = DefaultEtcd3Version_1_13
}
} }
// We enable TLS if we're running EtcdManager & etcd3 // We enable TLS if we're running EtcdManager
//
// (Moving to etcd3 is a disruptive upgrade, so we
// force TLS at the same time as we enable
// etcd-manager by default).
if c.Provider == kops.EtcdProviderTypeManager { if c.Provider == kops.EtcdProviderTypeManager {
etcdV3 := true c.EnableEtcdTLS = true
version := c.Version c.EnableTLSAuth = true
version = strings.TrimPrefix(version, "v")
if strings.HasPrefix(version, "2.") {
etcdV3 = false
} else if strings.HasPrefix(version, "3.") {
etcdV3 = true
} else {
return fmt.Errorf("unexpected etcd version %q", c.Version)
}
if etcdV3 {
c.EnableEtcdTLS = true
c.EnableTLSAuth = true
}
} }
// Remap the well known images
// We remap the etcd manager image when we build the manifest, // We remap the etcd manager image when we build the manifest,
// but we need to map the standalone images here because protokube launches them // but we need to map the standalone images here because protokube launches them
if c.Provider == kops.EtcdProviderTypeLegacy { if c.Provider == kops.EtcdProviderTypeLegacy {
// remap etcd image // remap etcd image