From b3881b642c5d9a17af1aa2570fc01ae53f4af83d Mon Sep 17 00:00:00 2001 From: Rodrigo Menezes Date: Mon, 10 Feb 2020 14:18:28 -0800 Subject: [PATCH] updated to use #8455 --- k8s/crds/kops.k8s.io_clusters.yaml | 37 +++++++++++++++---- pkg/apis/kops/cluster.go | 8 ++-- pkg/apis/kops/v1alpha1/cluster.go | 8 ++-- .../kops/v1alpha1/zz_generated.conversion.go | 24 +++++++++++- .../kops/v1alpha1/zz_generated.deepcopy.go | 10 ++--- pkg/apis/kops/v1alpha2/cluster.go | 8 ++-- .../kops/v1alpha2/zz_generated.conversion.go | 24 +++++++++++- .../kops/v1alpha2/zz_generated.deepcopy.go | 10 ++--- pkg/apis/kops/zz_generated.deepcopy.go | 10 ++--- pkg/model/components/etcdmanager/model.go | 10 ++--- 10 files changed, 106 insertions(+), 43 deletions(-) diff --git a/k8s/crds/kops.k8s.io_clusters.yaml b/k8s/crds/kops.k8s.io_clusters.yaml index 67551bc0d861b..7f7c551c5917a 100644 --- a/k8s/crds/kops.k8s.io_clusters.yaml +++ b/k8s/crds/kops.k8s.io_clusters.yaml @@ -567,13 +567,36 @@ spec: manager: description: Manager describes the manager configuration properties: - etcdConfigOverwrite: - additionalProperties: - type: string - description: EtcdConfigOverwrite allows etcd setting to be - overwritten with ENV variables. The setting are not validated. - A list of config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md - type: object + env: + description: Env allows users to pass in env variables to + the etcd-manager container. Variables starting with ETCD_ + will be further passed down to the etcd process. This allows + etcd setting to be configured/overwriten. No config validation + is done. A list of etcd config ENV vars can be found at + https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in + the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to + "".' + type: string + required: + - name + type: object + type: array image: description: Image is the etcd manager image to use. type: string diff --git a/pkg/apis/kops/cluster.go b/pkg/apis/kops/cluster.go index b0c23f0d55998..da46b77a3d8cd 100644 --- a/pkg/apis/kops/cluster.go +++ b/pkg/apis/kops/cluster.go @@ -453,9 +453,11 @@ type EtcdBackupSpec struct { type EtcdManagerSpec struct { // Image is the etcd manager image to use. Image string `json:"image,omitempty"` - // EtcdConfigOverwrite allows etcd setting to be overwritten with ENV variables. The setting are not validated. - // A list of config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md - EtcdConfigOverwrite map[string]string `json:"etcdConfigOverwrite,omitempty"` + // Env allows users to pass in env variables to the etcd-manager container. + // Variables starting with ETCD_ will be further passed down to the etcd process. + // This allows etcd setting to be overwriten. No config validation is done. + // A list of etcd config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md + Env []EnvVar `json:"env,omitempty"` } // EtcdMemberSpec is a specification for a etcd member diff --git a/pkg/apis/kops/v1alpha1/cluster.go b/pkg/apis/kops/v1alpha1/cluster.go index 3a781568e09b0..1fdbf20fc4946 100644 --- a/pkg/apis/kops/v1alpha1/cluster.go +++ b/pkg/apis/kops/v1alpha1/cluster.go @@ -451,9 +451,11 @@ type EtcdBackupSpec struct { type EtcdManagerSpec struct { // Image is the etcd manager image to use. Image string `json:"image,omitempty"` - // EtcdConfigOverwrite allows etcd setting to be overwritten with ENV variables. The setting are not validated. - // A list of config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md - EtcdConfigOverwrite map[string]string `json:"etcdConfigOverwrite,omitempty"` + // Env allows users to pass in env variables to the etcd-manager container. + // Variables starting with ETCD_ will be further passed down to the etcd process. + // This allows etcd setting to be configured/overwriten. No config validation is done. + // A list of etcd config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md + Env []EnvVar `json:"env,omitempty"` } // EtcdMemberSpec is a specification for a etcd member diff --git a/pkg/apis/kops/v1alpha1/zz_generated.conversion.go b/pkg/apis/kops/v1alpha1/zz_generated.conversion.go index 0f6c3c4097778..16ff6b68a1812 100644 --- a/pkg/apis/kops/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha1/zz_generated.conversion.go @@ -2507,7 +2507,17 @@ func Convert_kops_EtcdClusterSpec_To_v1alpha1_EtcdClusterSpec(in *kops.EtcdClust func autoConvert_v1alpha1_EtcdManagerSpec_To_kops_EtcdManagerSpec(in *EtcdManagerSpec, out *kops.EtcdManagerSpec, s conversion.Scope) error { out.Image = in.Image - out.EtcdConfigOverwrite = in.EtcdConfigOverwrite + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]kops.EnvVar, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_EnvVar_To_kops_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } @@ -2518,7 +2528,17 @@ func Convert_v1alpha1_EtcdManagerSpec_To_kops_EtcdManagerSpec(in *EtcdManagerSpe func autoConvert_kops_EtcdManagerSpec_To_v1alpha1_EtcdManagerSpec(in *kops.EtcdManagerSpec, out *EtcdManagerSpec, s conversion.Scope) error { out.Image = in.Image - out.EtcdConfigOverwrite = in.EtcdConfigOverwrite + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := Convert_kops_EnvVar_To_v1alpha1_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } diff --git a/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go index 2e31b2ce34e57..03513ac82ac01 100644 --- a/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go @@ -1160,12 +1160,10 @@ func (in *EtcdClusterSpec) DeepCopy() *EtcdClusterSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EtcdManagerSpec) DeepCopyInto(out *EtcdManagerSpec) { *out = *in - if in.EtcdConfigOverwrite != nil { - in, out := &in.EtcdConfigOverwrite, &out.EtcdConfigOverwrite - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + copy(*out, *in) } return } diff --git a/pkg/apis/kops/v1alpha2/cluster.go b/pkg/apis/kops/v1alpha2/cluster.go index 76136e7d90c7d..ed89e88fc7c9b 100644 --- a/pkg/apis/kops/v1alpha2/cluster.go +++ b/pkg/apis/kops/v1alpha2/cluster.go @@ -451,9 +451,11 @@ type EtcdBackupSpec struct { type EtcdManagerSpec struct { // Image is the etcd manager image to use. Image string `json:"image,omitempty"` - // EtcdConfigOverwrite allows etcd setting to be overwritten with ENV variables. The setting are not validated. - // A list of config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md - EtcdConfigOverwrite map[string]string `json:"etcdConfigOverwrite,omitempty"` + // Env allows users to pass in env variables to the etcd-manager container. + // Variables starting with ETCD_ will be further passed down to the etcd process. + // This allows etcd setting to be configured/overwriten. No config validation is done. + // A list of etcd config ENV vars can be found at https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md + Env []EnvVar `json:"env,omitempty"` } // EtcdMemberSpec is a specification for a etcd member diff --git a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go index d07c9686248a1..2356528335192 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go @@ -2614,7 +2614,17 @@ func Convert_kops_EtcdClusterSpec_To_v1alpha2_EtcdClusterSpec(in *kops.EtcdClust func autoConvert_v1alpha2_EtcdManagerSpec_To_kops_EtcdManagerSpec(in *EtcdManagerSpec, out *kops.EtcdManagerSpec, s conversion.Scope) error { out.Image = in.Image - out.EtcdConfigOverwrite = in.EtcdConfigOverwrite + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]kops.EnvVar, len(*in)) + for i := range *in { + if err := Convert_v1alpha2_EnvVar_To_kops_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } @@ -2625,7 +2635,17 @@ func Convert_v1alpha2_EtcdManagerSpec_To_kops_EtcdManagerSpec(in *EtcdManagerSpe func autoConvert_kops_EtcdManagerSpec_To_v1alpha2_EtcdManagerSpec(in *kops.EtcdManagerSpec, out *EtcdManagerSpec, s conversion.Scope) error { out.Image = in.Image - out.EtcdConfigOverwrite = in.EtcdConfigOverwrite + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := Convert_kops_EnvVar_To_v1alpha2_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } return nil } diff --git a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go index 8fd27dba503ce..2aeaa5c350392 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go @@ -1133,12 +1133,10 @@ func (in *EtcdClusterSpec) DeepCopy() *EtcdClusterSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EtcdManagerSpec) DeepCopyInto(out *EtcdManagerSpec) { *out = *in - if in.EtcdConfigOverwrite != nil { - in, out := &in.EtcdConfigOverwrite, &out.EtcdConfigOverwrite - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + copy(*out, *in) } return } diff --git a/pkg/apis/kops/zz_generated.deepcopy.go b/pkg/apis/kops/zz_generated.deepcopy.go index e6093f2f22b00..de7b9113cc021 100644 --- a/pkg/apis/kops/zz_generated.deepcopy.go +++ b/pkg/apis/kops/zz_generated.deepcopy.go @@ -1283,12 +1283,10 @@ func (in *EtcdClusterStatus) DeepCopy() *EtcdClusterStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EtcdManagerSpec) DeepCopyInto(out *EtcdManagerSpec) { *out = *in - if in.EtcdConfigOverwrite != nil { - in, out := &in.EtcdConfigOverwrite, &out.EtcdConfigOverwrite - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + copy(*out, *in) } return } diff --git a/pkg/model/components/etcdmanager/model.go b/pkg/model/components/etcdmanager/model.go index d9690cd507f08..2eff2b12c2625 100644 --- a/pkg/model/components/etcdmanager/model.go +++ b/pkg/model/components/etcdmanager/model.go @@ -449,12 +449,12 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster *kops.EtcdClusterSpec) (*v1.Po container.Env = envMap.ToEnvVars() - if etcdCluster.Manager != nil && len(etcdCluster.Manager.EtcdConfigOverwrite) > 0 { - for name, value := range etcdCluster.Manager.EtcdConfigOverwrite { - klog.Warningf("overloading ENV var in manifest %s with %s=%s", bundle, name, value) + if etcdCluster.Manager != nil && len(etcdCluster.Manager.Env) > 0 { + for _, envVar := range etcdCluster.Manager.Env { + klog.Warningf("overloading ENV var in manifest %s with %s=%s", bundle, envVar.Name, envVar.Value) configOverwrite := v1.EnvVar{ - Name: name, - Value: value, + Name: envVar.Name, + Value: envVar.Value, } container.Env = append(container.Env, configOverwrite)