From 8004aad307389765af2ab7039760f8f2ddcd4863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Sun, 8 Jul 2018 09:42:46 +0300 Subject: [PATCH 1/5] kubeadm: Embed the internal variants of the componentconfigs in the internal kubeadm API with conversions --- cmd/kubeadm/app/apis/kubeadm/types.go | 29 +++--- .../app/apis/kubeadm/v1alpha2/conversion.go | 91 ++++++++++++++++++ .../app/apis/kubeadm/v1alpha3/conversion.go | 95 +++++++++++++++++++ 3 files changed, 199 insertions(+), 16 deletions(-) create mode 100644 cmd/kubeadm/app/apis/kubeadm/v1alpha2/conversion.go create mode 100644 cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 8f4807e9503d5..234f7ab7f771f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -19,8 +19,8 @@ package kubeadm import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" - kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" + "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -41,18 +41,17 @@ type MasterConfiguration struct { // NodeRegistration holds fields that relate to registering the new master node to the cluster NodeRegistration NodeRegistrationOptions + // ComponentConfigs holds internal ComponentConfig struct types known to kubeadm, should long-term only exist in the internal kubeadm API + ComponentConfigs ComponentConfigs + // Cluster-wide configuration // TODO: Move these fields under some kind of ClusterConfiguration or similar struct that describes // one cluster. Eventually we want this kind of spec to align well with the Cluster API spec. // API holds configuration for the k8s apiserver. API API - // KubeProxy holds configuration for the k8s service proxy. - KubeProxy KubeProxy // Etcd holds configuration for etcd. Etcd Etcd - // KubeletConfiguration holds configuration for the kubelet. - KubeletConfiguration KubeletConfiguration // Networking holds configuration for the networking topology of the cluster. Networking Networking // KubernetesVersion is the target version of the control plane. @@ -110,6 +109,14 @@ type MasterConfiguration struct { ClusterName string } +// ComponentConfigs holds known internal ComponentConfig types for other components +type ComponentConfigs struct { + // Kubelet holds the ComponentConfiguration for the kubelet + Kubelet *kubeletconfig.KubeletConfiguration + // KubeProxy holds the ComponentConfiguration for the kube-proxy + KubeProxy *kubeproxyconfig.KubeProxyConfiguration +} + // API struct contains elements of API server address. type API struct { // AdvertiseAddress sets the IP address for the API server to advertise. @@ -288,11 +295,6 @@ type NodeConfiguration struct { FeatureGates map[string]bool } -// KubeletConfiguration contains elements describing initial remote configuration of kubelet. -type KubeletConfiguration struct { - BaseConfig *kubeletconfigv1beta1.KubeletConfiguration -} - // GetControlPlaneImageRepository returns name of image repository // for control plane images (API,Controller Manager,Scheduler and Proxy) // It will override location with CI registry name in case user requests special @@ -321,11 +323,6 @@ type HostPathMount struct { PathType v1.HostPathType } -// KubeProxy contains elements describing the proxy configuration. -type KubeProxy struct { - Config *kubeproxyconfigv1alpha1.KubeProxyConfiguration -} - // AuditPolicyConfiguration holds the options for configuring the api server audit policy. type AuditPolicyConfiguration struct { // Path is the local path to an audit policy. diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha2/conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha2/conversion.go new file mode 100644 index 0000000000000..548f0aa318aba --- /dev/null +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha2/conversion.go @@ -0,0 +1,91 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +import ( + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" + kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme" + kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" + "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" + kubeproxyconfigscheme "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme" + kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" +) + +func Convert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in *MasterConfiguration, out *kubeadm.MasterConfiguration, s conversion.Scope) error { + if err := autoConvert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in, out, s); err != nil { + return err + } + + if in.KubeProxy.Config != nil { + if out.ComponentConfigs.KubeProxy == nil { + out.ComponentConfigs.KubeProxy = &kubeproxyconfig.KubeProxyConfiguration{} + } + + if err := kubeproxyconfigscheme.Scheme.Convert(in.KubeProxy.Config, out.ComponentConfigs.KubeProxy, nil); err != nil { + return err + } + } + if in.KubeletConfiguration.BaseConfig != nil { + if out.ComponentConfigs.Kubelet == nil { + out.ComponentConfigs.Kubelet = &kubeletconfig.KubeletConfiguration{} + } + + scheme, _, err := kubeletconfigscheme.NewSchemeAndCodecs() + if err != nil { + return err + } + + if err := scheme.Convert(in.KubeletConfiguration.BaseConfig, out.ComponentConfigs.Kubelet, nil); err != nil { + return err + } + } + + return nil +} + +func Convert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in *kubeadm.MasterConfiguration, out *MasterConfiguration, s conversion.Scope) error { + if err := autoConvert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in, out, s); err != nil { + return err + } + + if in.ComponentConfigs.KubeProxy != nil { + if out.KubeProxy.Config == nil { + out.KubeProxy.Config = &kubeproxyconfigv1alpha1.KubeProxyConfiguration{} + } + + if err := kubeproxyconfigscheme.Scheme.Convert(in.ComponentConfigs.KubeProxy, out.KubeProxy.Config, nil); err != nil { + return err + } + } + if in.ComponentConfigs.Kubelet != nil { + if out.KubeletConfiguration.BaseConfig == nil { + out.KubeletConfiguration.BaseConfig = &kubeletconfigv1beta1.KubeletConfiguration{} + } + + scheme, _, err := kubeletconfigscheme.NewSchemeAndCodecs() + if err != nil { + return err + } + + if err := scheme.Convert(in.ComponentConfigs.Kubelet, out.KubeletConfiguration.BaseConfig, nil); err != nil { + return err + } + } + return nil +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go new file mode 100644 index 0000000000000..16c59831c1a70 --- /dev/null +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go @@ -0,0 +1,95 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha3 + +import ( + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" + kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme" + kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" + "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" + kubeproxyconfigscheme "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme" + kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" +) + +func Convert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration(in *MasterConfiguration, out *kubeadm.MasterConfiguration, s conversion.Scope) error { + if err := autoConvert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration(in, out, s); err != nil { + return err + } + + // TODO: Remove this conversion code ASAP, as the ComponentConfig structs should not be in the external version of the kubeadm API, but be marshalled as + // different YAML documents + if in.KubeProxy.Config != nil { + if out.ComponentConfigs.KubeProxy == nil { + out.ComponentConfigs.KubeProxy = &kubeproxyconfig.KubeProxyConfiguration{} + } + + if err := kubeproxyconfigscheme.Scheme.Convert(in.KubeProxy.Config, out.ComponentConfigs.KubeProxy, nil); err != nil { + return err + } + } + if in.KubeletConfiguration.BaseConfig != nil { + if out.ComponentConfigs.Kubelet == nil { + out.ComponentConfigs.Kubelet = &kubeletconfig.KubeletConfiguration{} + } + + scheme, _, err := kubeletconfigscheme.NewSchemeAndCodecs() + if err != nil { + return err + } + + if err := scheme.Convert(in.KubeletConfiguration.BaseConfig, out.ComponentConfigs.Kubelet, nil); err != nil { + return err + } + } + + return nil +} + +func Convert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration(in *kubeadm.MasterConfiguration, out *MasterConfiguration, s conversion.Scope) error { + if err := autoConvert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration(in, out, s); err != nil { + return err + } + + // TODO: Remove this conversion code ASAP, as the ComponentConfig structs should not be in the external version of the kubeadm API, but be marshalled as + // different YAML documents + if in.ComponentConfigs.KubeProxy != nil { + if out.KubeProxy.Config == nil { + out.KubeProxy.Config = &kubeproxyconfigv1alpha1.KubeProxyConfiguration{} + } + + if err := kubeproxyconfigscheme.Scheme.Convert(in.ComponentConfigs.KubeProxy, out.KubeProxy.Config, nil); err != nil { + return err + } + } + if in.ComponentConfigs.Kubelet != nil { + if out.KubeletConfiguration.BaseConfig == nil { + out.KubeletConfiguration.BaseConfig = &kubeletconfigv1beta1.KubeletConfiguration{} + } + + scheme, _, err := kubeletconfigscheme.NewSchemeAndCodecs() + if err != nil { + return err + } + + if err := scheme.Convert(in.ComponentConfigs.Kubelet, out.KubeletConfiguration.BaseConfig, nil); err != nil { + return err + } + } + return nil +} From 35673da7c55849476c62be3a49c2664d7a9190c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Sun, 8 Jul 2018 09:49:34 +0300 Subject: [PATCH 2/5] Start using the new path in the internal config for the ComponentConfig structs --- .../app/apis/kubeadm/validation/validation.go | 48 +++++-------------- cmd/kubeadm/app/cmd/init.go | 2 +- cmd/kubeadm/app/cmd/phases/kubelet.go | 2 +- cmd/kubeadm/app/phases/addons/proxy/proxy.go | 3 +- cmd/kubeadm/app/phases/kubelet/config.go | 7 +-- .../app/phases/uploadconfig/uploadconfig.go | 17 +++---- cmd/kubeadm/app/preflight/checks.go | 2 +- cmd/kubeadm/app/util/config/masterconfig.go | 4 +- 8 files changed, 28 insertions(+), 57 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/validation/validation.go b/cmd/kubeadm/app/apis/kubeadm/validation/validation.go index a85ba40a04ff6..23875e777f1ab 100644 --- a/cmd/kubeadm/app/apis/kubeadm/validation/validation.go +++ b/cmd/kubeadm/app/apis/kubeadm/validation/validation.go @@ -37,11 +37,8 @@ import ( kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" apivalidation "k8s.io/kubernetes/pkg/apis/core/validation" "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" - kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme" kubeletvalidation "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation" "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" - kubeproxyscheme "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme" - kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" proxyvalidation "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation" "k8s.io/kubernetes/pkg/registry/core/service/ipallocator" ) @@ -56,24 +53,19 @@ func ValidateMasterConfiguration(c *kubeadm.MasterConfiguration) field.ErrorList allErrs = append(allErrs, ValidateBootstrapTokens(c.BootstrapTokens, field.NewPath("bootstrapTokens"))...) allErrs = append(allErrs, ValidateFeatureGates(c.FeatureGates, field.NewPath("featureGates"))...) allErrs = append(allErrs, ValidateAPIEndpoint(&c.API, field.NewPath("api"))...) - allErrs = append(allErrs, ValidateProxy(c.KubeProxy.Config, field.NewPath("kubeProxy").Child("config"))...) allErrs = append(allErrs, ValidateEtcd(&c.Etcd, field.NewPath("etcd"))...) - allErrs = append(allErrs, ValidateKubeletConfiguration(&c.KubeletConfiguration, field.NewPath("kubeletConfiguration"))...) + // Validate other ComponentConfigs + allErrs = append(allErrs, ValidateProxy(c.ComponentConfigs.KubeProxy, field.NewPath("componentConfigs").Child("kubeProxy"))...) + allErrs = append(allErrs, ValidateKubeletConfiguration(c.ComponentConfigs.Kubelet, field.NewPath("componentConfigs").Child("kubelet"))...) return allErrs } // ValidateProxy validates proxy configuration and collects all encountered errors -func ValidateProxy(c *kubeproxyconfigv1alpha1.KubeProxyConfiguration, fldPath *field.Path) field.ErrorList { - allErrs := field.ErrorList{} - - // Convert to the internal version - internalcfg := &kubeproxyconfig.KubeProxyConfiguration{} - err := kubeproxyscheme.Scheme.Convert(c, internalcfg, nil) - if err != nil { - allErrs = append(allErrs, field.Invalid(fldPath, "", err.Error())) - return allErrs +func ValidateProxy(kubeProxyConfig *kubeproxyconfig.KubeProxyConfiguration, fldPath *field.Path) field.ErrorList { + if kubeProxyConfig == nil { + return field.ErrorList{} } - return proxyvalidation.Validate(internalcfg) + return proxyvalidation.Validate(kubeProxyConfig) } // ValidateNodeConfiguration validates node configuration and collects all encountered errors @@ -430,31 +422,13 @@ func ValidateIgnorePreflightErrors(ignorePreflightErrors []string, skipPreflight } // ValidateKubeletConfiguration validates kubelet configuration and collects all encountered errors -func ValidateKubeletConfiguration(c *kubeadm.KubeletConfiguration, fldPath *field.Path) field.ErrorList { +func ValidateKubeletConfiguration(kubeletConfig *kubeletconfig.KubeletConfiguration, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} - - if c.BaseConfig == nil { - return allErrs - } - - scheme, _, err := kubeletscheme.NewSchemeAndCodecs() - if err != nil { - allErrs = append(allErrs, field.Invalid(fldPath, "kubeletConfiguration", err.Error())) - return allErrs - } - - // Convert versioned config to internal config - internalcfg := &kubeletconfig.KubeletConfiguration{} - err = scheme.Convert(c.BaseConfig, internalcfg, nil) - if err != nil { - allErrs = append(allErrs, field.Invalid(fldPath, "kubeletConfiguration", err.Error())) + if kubeletConfig == nil { return allErrs } - - err = kubeletvalidation.ValidateKubeletConfiguration(internalcfg) - if err != nil { - allErrs = append(allErrs, field.Invalid(fldPath, "kubeletConfiguration", err.Error())) + if err := kubeletvalidation.ValidateKubeletConfiguration(kubeletConfig); err != nil { + allErrs = append(allErrs, field.Invalid(fldPath, "", err.Error())) } - return allErrs } diff --git a/cmd/kubeadm/app/cmd/init.go b/cmd/kubeadm/app/cmd/init.go index db7bbaa6e00ec..146a018ace667 100644 --- a/cmd/kubeadm/app/cmd/init.go +++ b/cmd/kubeadm/app/cmd/init.go @@ -308,7 +308,7 @@ func (i *Init) Run(out io.Writer) error { } // Write the kubelet configuration file to disk. - if err := kubeletphase.WriteConfigToDisk(i.cfg.KubeletConfiguration.BaseConfig, kubeletDir); err != nil { + if err := kubeletphase.WriteConfigToDisk(i.cfg.ComponentConfigs.Kubelet, kubeletDir); err != nil { return fmt.Errorf("error writing kubelet configuration to disk: %v", err) } diff --git a/cmd/kubeadm/app/cmd/phases/kubelet.go b/cmd/kubeadm/app/cmd/phases/kubelet.go index 4da1c7120c92b..170575edf4479 100644 --- a/cmd/kubeadm/app/cmd/phases/kubelet.go +++ b/cmd/kubeadm/app/cmd/phases/kubelet.go @@ -263,7 +263,7 @@ func NewCmdKubeletConfigWriteToDisk() *cobra.Command { internalcfg, err := configutil.ConfigFileAndDefaultsToInternalConfig(cfgPath, &kubeadmapiv1alpha3.MasterConfiguration{}) kubeadmutil.CheckErr(err) - err = kubeletphase.WriteConfigToDisk(internalcfg.KubeletConfiguration.BaseConfig, constants.KubeletRunDirectory) + err = kubeletphase.WriteConfigToDisk(internalcfg.ComponentConfigs.Kubelet, constants.KubeletRunDirectory) kubeadmutil.CheckErr(err) }, } diff --git a/cmd/kubeadm/app/phases/addons/proxy/proxy.go b/cmd/kubeadm/app/phases/addons/proxy/proxy.go index 0de99d04fd51e..fadb92d076448 100644 --- a/cmd/kubeadm/app/phases/addons/proxy/proxy.go +++ b/cmd/kubeadm/app/phases/addons/proxy/proxy.go @@ -57,8 +57,7 @@ func EnsureProxyAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Inte return err } - proxyBytes, err := kubeadmutil.MarshalToYamlForCodecs(cfg.KubeProxy.Config, kubeproxyconfigv1alpha1.SchemeGroupVersion, - kubeproxyconfigscheme.Codecs) + proxyBytes, err := kubeadmutil.MarshalToYamlForCodecs(cfg.ComponentConfigs.KubeProxy, kubeproxyconfigv1alpha1.SchemeGroupVersion, kubeproxyconfigscheme.Codecs) if err != nil { return fmt.Errorf("error when marshaling: %v", err) } diff --git a/cmd/kubeadm/app/phases/kubelet/config.go b/cmd/kubeadm/app/phases/kubelet/config.go index 2f09b5347be87..724ae49005fdc 100644 --- a/cmd/kubeadm/app/phases/kubelet/config.go +++ b/cmd/kubeadm/app/phases/kubelet/config.go @@ -32,6 +32,7 @@ import ( kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" rbachelper "k8s.io/kubernetes/pkg/apis/rbac/v1" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme" kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" "k8s.io/kubernetes/pkg/util/version" @@ -39,7 +40,7 @@ import ( // WriteConfigToDisk writes the kubelet config object down to a file // Used at "kubeadm init" and "kubeadm upgrade" time -func WriteConfigToDisk(kubeletConfig *kubeletconfigv1beta1.KubeletConfiguration, kubeletDir string) error { +func WriteConfigToDisk(kubeletConfig *kubeletconfig.KubeletConfiguration, kubeletDir string) error { kubeletBytes, err := getConfigBytes(kubeletConfig) if err != nil { @@ -60,7 +61,7 @@ func CreateConfigMap(cfg *kubeadmapi.MasterConfiguration, client clientset.Inter configMapName := configMapName(k8sVersion) fmt.Printf("[kubelet] Creating a ConfigMap %q in namespace %s with the configuration for the kubelets in the cluster\n", configMapName, metav1.NamespaceSystem) - kubeletBytes, err := getConfigBytes(cfg.KubeletConfiguration.BaseConfig) + kubeletBytes, err := getConfigBytes(cfg.ComponentConfigs.Kubelet) if err != nil { return err } @@ -154,7 +155,7 @@ func configMapRBACName(k8sVersion *version.Version) string { } // getConfigBytes marshals a kubeletconfiguration object to bytes -func getConfigBytes(kubeletConfig *kubeletconfigv1beta1.KubeletConfiguration) ([]byte, error) { +func getConfigBytes(kubeletConfig *kubeletconfig.KubeletConfiguration) ([]byte, error) { _, kubeletCodecs, err := kubeletconfigscheme.NewSchemeAndCodecs() if err != nil { return []byte{}, err diff --git a/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go b/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go index 768ffd9519594..b68762e88e88f 100644 --- a/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go +++ b/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go @@ -23,11 +23,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" clientset "k8s.io/client-go/kubernetes" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" - "k8s.io/kubernetes/cmd/kubeadm/app/util" + kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" ) @@ -36,16 +35,14 @@ func UploadConfiguration(cfg *kubeadmapi.MasterConfiguration, client clientset.I fmt.Printf("[uploadconfig] storing the configuration used in ConfigMap %q in the %q Namespace\n", kubeadmconstants.MasterConfigurationConfigMap, metav1.NamespaceSystem) - // Convert cfg to the external version as that's the only version of the API that can be deserialized later - externalcfg := &kubeadmapiv1alpha3.MasterConfiguration{} - kubeadmscheme.Scheme.Convert(cfg, externalcfg, nil) - + // We don't want to mutate the cfg itself, so create a copy of it using .DeepCopy of it first + cfgToUpload := cfg.DeepCopy() // Removes sensitive info from the data that will be stored in the config map - externalcfg.BootstrapTokens = nil + cfgToUpload.BootstrapTokens = nil // Clear the NodeRegistration object. - externalcfg.NodeRegistration = kubeadmapiv1alpha3.NodeRegistrationOptions{} - - cfgYaml, err := util.MarshalToYamlForCodecs(externalcfg, kubeadmapiv1alpha3.SchemeGroupVersion, scheme.Codecs) + cfgToUpload.NodeRegistration = kubeadmapi.NodeRegistrationOptions{} + // Marshal the object into YAML + cfgYaml, err := kubeadmutil.MarshalToYamlForCodecs(cfgToUpload, kubeadmapiv1alpha3.SchemeGroupVersion, kubeadmscheme.Codecs) if err != nil { return err } diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index 5725b4d096bbd..381c9208f48e9 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -873,7 +873,7 @@ func RunInitMasterChecks(execer utilsexec.Interface, cfg *kubeadmapi.MasterConfi checks = addCommonChecks(execer, cfg, checks) // Check ipvs required kernel module once we use ipvs kube-proxy mode - if cfg.KubeProxy.Config != nil && cfg.KubeProxy.Config.Mode == ipvsutil.IPVSProxyMode { + if cfg.ComponentConfigs.KubeProxy != nil && cfg.ComponentConfigs.KubeProxy.Mode == ipvsutil.IPVSProxyMode { checks = append(checks, ipvsutil.RequiredIPVSKernelModulesAvailableCheck{Executor: execer}, ) diff --git a/cmd/kubeadm/app/util/config/masterconfig.go b/cmd/kubeadm/app/util/config/masterconfig.go index a1a27fe0cc7a7..c491e759f7aee 100644 --- a/cmd/kubeadm/app/util/config/masterconfig.go +++ b/cmd/kubeadm/app/util/config/masterconfig.go @@ -52,9 +52,9 @@ func SetInitDynamicDefaults(cfg *kubeadmapi.MasterConfiguration) error { cfg.API.AdvertiseAddress = ip.String() ip = net.ParseIP(cfg.API.AdvertiseAddress) if ip.To4() != nil { - cfg.KubeProxy.Config.BindAddress = kubeadmapiv1alpha3.DefaultProxyBindAddressv4 + cfg.ComponentConfigs.KubeProxy.BindAddress = kubeadmapiv1alpha3.DefaultProxyBindAddressv4 } else { - cfg.KubeProxy.Config.BindAddress = kubeadmapiv1alpha3.DefaultProxyBindAddressv6 + cfg.ComponentConfigs.KubeProxy.BindAddress = kubeadmapiv1alpha3.DefaultProxyBindAddressv6 } // Resolve possible version labels and validate version string if err := NormalizeKubernetesVersion(cfg); err != nil { From 3594d2ca3983c16abd9f00f9235949dda2f3ce7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Sun, 8 Jul 2018 09:50:10 +0300 Subject: [PATCH 3/5] Update unit tests --- cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go | 101 ++++----- .../kubeadm/validation/validation_test.go | 192 +++++++++--------- .../app/phases/addons/proxy/proxy_test.go | 8 +- cmd/kubeadm/app/phases/kubelet/config_test.go | 6 +- 4 files changed, 152 insertions(+), 155 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go index 4478c92d1e7ca..592401c2a80ed 100644 --- a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go +++ b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go @@ -25,8 +25,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" + kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme" kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" - kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" + "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" utilpointer "k8s.io/kubernetes/pkg/util/pointer" ) @@ -81,60 +83,59 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} { Name: "foo", Taints: []v1.Taint{}, } - obj.KubeletConfiguration = kubeadm.KubeletConfiguration{ - BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{ - StaticPodPath: "foo", - ClusterDNS: []string{"foo"}, - ClusterDomain: "foo", - Authorization: kubeletconfigv1beta1.KubeletAuthorization{ - Mode: "Webhook", + extkubeletconfig := &kubeletconfigv1beta1.KubeletConfiguration{ + StaticPodPath: "foo", + ClusterDNS: []string{"foo"}, + ClusterDomain: "foo", + Authorization: kubeletconfigv1beta1.KubeletAuthorization{ + Mode: "Webhook", + }, + Authentication: kubeletconfigv1beta1.KubeletAuthentication{ + X509: kubeletconfigv1beta1.KubeletX509Authentication{ + ClientCAFile: "/etc/kubernetes/pki/ca.crt", }, - Authentication: kubeletconfigv1beta1.KubeletAuthentication{ - X509: kubeletconfigv1beta1.KubeletX509Authentication{ - ClientCAFile: "/etc/kubernetes/pki/ca.crt", - }, - Anonymous: kubeletconfigv1beta1.KubeletAnonymousAuthentication{ - Enabled: utilpointer.BoolPtr(false), - }, + Anonymous: kubeletconfigv1beta1.KubeletAnonymousAuthentication{ + Enabled: utilpointer.BoolPtr(false), }, - RotateCertificates: true, }, + RotateCertificates: true, } - kubeletconfigv1beta1.SetDefaults_KubeletConfiguration(obj.KubeletConfiguration.BaseConfig) - obj.KubeProxy = kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ - FeatureGates: map[string]bool{"foo": true}, - BindAddress: "foo", - HealthzBindAddress: "foo:10256", - MetricsBindAddress: "foo:", - EnableProfiling: bool(true), - ClusterCIDR: "foo", - HostnameOverride: "foo", - ClientConnection: kubeproxyconfigv1alpha1.ClientConnectionConfiguration{ - KubeConfigFile: "foo", - AcceptContentTypes: "foo", - ContentType: "foo", - QPS: float32(5), - Burst: 10, - }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ - SyncPeriod: metav1.Duration{Duration: 1}, - }, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ - MasqueradeBit: utilpointer.Int32Ptr(0), - SyncPeriod: metav1.Duration{Duration: 1}, - }, - OOMScoreAdj: utilpointer.Int32Ptr(0), - ResourceContainer: "foo", - UDPIdleTimeout: metav1.Duration{Duration: 1}, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ - MaxPerCore: utilpointer.Int32Ptr(2), - Min: utilpointer.Int32Ptr(1), - TCPEstablishedTimeout: &metav1.Duration{Duration: 5}, - TCPCloseWaitTimeout: &metav1.Duration{Duration: 5}, - }, - ConfigSyncPeriod: metav1.Duration{Duration: 1}, + obj.ComponentConfigs.Kubelet = &kubeletconfig.KubeletConfiguration{} + kubeletconfigv1beta1.SetDefaults_KubeletConfiguration(extkubeletconfig) + scheme, _, _ := kubeletconfigscheme.NewSchemeAndCodecs() + scheme.Convert(extkubeletconfig, obj.ComponentConfigs.Kubelet, nil) + obj.ComponentConfigs.KubeProxy = &kubeproxyconfig.KubeProxyConfiguration{ + FeatureGates: map[string]bool{"foo": true}, + BindAddress: "foo", + HealthzBindAddress: "foo:10256", + MetricsBindAddress: "foo:", + EnableProfiling: bool(true), + ClusterCIDR: "foo", + HostnameOverride: "foo", + ClientConnection: kubeproxyconfig.ClientConnectionConfiguration{ + KubeConfigFile: "foo", + AcceptContentTypes: "foo", + ContentType: "foo", + QPS: float32(5), + Burst: 10, + }, + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ + SyncPeriod: metav1.Duration{Duration: 1}, + }, + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ + MasqueradeBit: utilpointer.Int32Ptr(0), + SyncPeriod: metav1.Duration{Duration: 1}, + }, + OOMScoreAdj: utilpointer.Int32Ptr(0), + ResourceContainer: "foo", + UDPIdleTimeout: metav1.Duration{Duration: 1}, + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ + MaxPerCore: utilpointer.Int32Ptr(2), + Min: utilpointer.Int32Ptr(1), + TCPEstablishedTimeout: &metav1.Duration{Duration: 5}, + TCPCloseWaitTimeout: &metav1.Duration{Duration: 5}, }, + ConfigSyncPeriod: metav1.Duration{Duration: 1}, } obj.AuditPolicyConfiguration = kubeadm.AuditPolicyConfiguration{ Path: "foo", diff --git a/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go b/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go index 151cde50b0aef..75e81e7ac1685 100644 --- a/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go +++ b/cmd/kubeadm/app/apis/kubeadm/validation/validation_test.go @@ -28,8 +28,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" - kubeproxyconfigv1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" + "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" utilpointer "k8s.io/kubernetes/pkg/util/pointer" ) @@ -467,24 +467,24 @@ func TestValidateMasterConfiguration(t *testing.T) { DataDir: "/some/path", }, }, - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "192.168.59.103", HealthzBindAddress: "0.0.0.0:10256", MetricsBindAddress: "127.0.0.1:10249", ClusterCIDR: "192.168.59.0/24", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -512,24 +512,24 @@ func TestValidateMasterConfiguration(t *testing.T) { DataDir: "/some/path", }, }, - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "192.168.59.103", HealthzBindAddress: "0.0.0.0:10256", MetricsBindAddress: "127.0.0.1:10249", ClusterCIDR: "192.168.59.0/24", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -679,60 +679,56 @@ func TestValidateIgnorePreflightErrors(t *testing.T) { } func TestValidateKubeletConfiguration(t *testing.T) { - successCase := &kubeadm.KubeletConfiguration{ - BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{ - CgroupsPerQOS: utilpointer.BoolPtr(true), - EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved"}, - SystemCgroups: "", - CgroupRoot: "", - EventBurst: 10, - EventRecordQPS: utilpointer.Int32Ptr(5), - HealthzPort: utilpointer.Int32Ptr(10248), - ImageGCHighThresholdPercent: utilpointer.Int32Ptr(85), - ImageGCLowThresholdPercent: utilpointer.Int32Ptr(80), - IPTablesDropBit: utilpointer.Int32Ptr(15), - IPTablesMasqueradeBit: utilpointer.Int32Ptr(14), - KubeAPIBurst: 10, - KubeAPIQPS: utilpointer.Int32Ptr(5), - MaxOpenFiles: 1000000, - MaxPods: 110, - OOMScoreAdj: utilpointer.Int32Ptr(-999), - PodsPerCore: 100, - Port: 65535, - ReadOnlyPort: 0, - RegistryBurst: 10, - RegistryPullQPS: utilpointer.Int32Ptr(5), - HairpinMode: "promiscuous-bridge", - }, + successCase := &kubeletconfig.KubeletConfiguration{ + CgroupsPerQOS: true, + EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved"}, + SystemCgroups: "", + CgroupRoot: "", + EventBurst: 10, + EventRecordQPS: 5, + HealthzPort: 10248, + ImageGCHighThresholdPercent: 85, + ImageGCLowThresholdPercent: 80, + IPTablesDropBit: 15, + IPTablesMasqueradeBit: 14, + KubeAPIBurst: 10, + KubeAPIQPS: 5, + MaxOpenFiles: 1000000, + MaxPods: 110, + OOMScoreAdj: -999, + PodsPerCore: 100, + Port: 65535, + ReadOnlyPort: 0, + RegistryBurst: 10, + RegistryPullQPS: 5, + HairpinMode: "promiscuous-bridge", } if allErrors := ValidateKubeletConfiguration(successCase, nil); len(allErrors) != 0 { t.Errorf("failed ValidateKubeletConfiguration: expect no errors but got %v", allErrors) } - errorCase := &kubeadm.KubeletConfiguration{ - BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{ - CgroupsPerQOS: utilpointer.BoolPtr(false), - EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved", "illegal-key"}, - SystemCgroups: "/", - CgroupRoot: "", - EventBurst: -10, - EventRecordQPS: utilpointer.Int32Ptr(-10), - HealthzPort: utilpointer.Int32Ptr(-10), - ImageGCHighThresholdPercent: utilpointer.Int32Ptr(101), - ImageGCLowThresholdPercent: utilpointer.Int32Ptr(101), - IPTablesDropBit: utilpointer.Int32Ptr(-10), - IPTablesMasqueradeBit: utilpointer.Int32Ptr(-10), - KubeAPIBurst: -10, - KubeAPIQPS: utilpointer.Int32Ptr(-10), - MaxOpenFiles: -10, - MaxPods: -10, - OOMScoreAdj: utilpointer.Int32Ptr(-1001), - PodsPerCore: -10, - Port: 0, - ReadOnlyPort: -10, - RegistryBurst: -10, - RegistryPullQPS: utilpointer.Int32Ptr(-10), - }, + errorCase := &kubeletconfig.KubeletConfiguration{ + CgroupsPerQOS: false, + EnforceNodeAllocatable: []string{"pods", "system-reserved", "kube-reserved", "illegal-key"}, + SystemCgroups: "/", + CgroupRoot: "", + EventBurst: -10, + EventRecordQPS: -10, + HealthzPort: -10, + ImageGCHighThresholdPercent: 101, + ImageGCLowThresholdPercent: 101, + IPTablesDropBit: -10, + IPTablesMasqueradeBit: -10, + KubeAPIBurst: -10, + KubeAPIQPS: -10, + MaxOpenFiles: -10, + MaxPods: -10, + OOMScoreAdj: -1001, + PodsPerCore: -10, + Port: 0, + ReadOnlyPort: -10, + RegistryBurst: -10, + RegistryPullQPS: -10, } if allErrors := ValidateKubeletConfiguration(errorCase, nil); len(allErrors) == 0 { t.Errorf("failed ValidateKubeletConfiguration: expect errors but got no error") @@ -742,24 +738,24 @@ func TestValidateKubeletConfiguration(t *testing.T) { func TestValidateKubeProxyConfiguration(t *testing.T) { successCases := []kubeadm.MasterConfiguration{ { - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "192.168.59.103", HealthzBindAddress: "0.0.0.0:10256", MetricsBindAddress: "127.0.0.1:10249", ClusterCIDR: "192.168.59.0/24", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -772,7 +768,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { } for _, successCase := range successCases { - if errs := ValidateProxy(successCase.KubeProxy.Config, nil); len(errs) != 0 { + if errs := ValidateProxy(successCase.ComponentConfigs.KubeProxy, nil); len(errs) != 0 { t.Errorf("failed ValidateProxy: expect no errors but got %v", errs) } } @@ -783,8 +779,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { }{ { masterConfig: kubeadm.MasterConfiguration{ - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ // only BindAddress is invalid BindAddress: "10.10.12.11:2000", HealthzBindAddress: "0.0.0.0:10256", @@ -792,16 +788,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { ClusterCIDR: "192.168.59.0/24", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -815,8 +811,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { }, { masterConfig: kubeadm.MasterConfiguration{ - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "10.10.12.11", // only HealthzBindAddress is invalid HealthzBindAddress: "0.0.0.0", @@ -824,16 +820,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { ClusterCIDR: "192.168.59.0/24", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -847,8 +843,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { }, { masterConfig: kubeadm.MasterConfiguration{ - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "10.10.12.11", HealthzBindAddress: "0.0.0.0:12345", // only MetricsBindAddress is invalid @@ -856,16 +852,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { ClusterCIDR: "192.168.59.0/24", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -879,8 +875,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { }, { masterConfig: kubeadm.MasterConfiguration{ - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "10.10.12.11", HealthzBindAddress: "0.0.0.0:12345", MetricsBindAddress: "127.0.0.1:10249", @@ -888,16 +884,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { ClusterCIDR: "192.168.59.0", UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -911,8 +907,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { }, { masterConfig: kubeadm.MasterConfiguration{ - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "10.10.12.11", HealthzBindAddress: "0.0.0.0:12345", MetricsBindAddress: "127.0.0.1:10249", @@ -920,16 +916,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { // only UDPIdleTimeout is invalid UDPIdleTimeout: metav1.Duration{Duration: -1 * time.Second}, ConfigSyncPeriod: metav1.Duration{Duration: 1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -943,8 +939,8 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { }, { masterConfig: kubeadm.MasterConfiguration{ - KubeProxy: kubeadm.KubeProxy{ - Config: &kubeproxyconfigv1alpha1.KubeProxyConfiguration{ + ComponentConfigs: kubeadm.ComponentConfigs{ + KubeProxy: &kubeproxyconfig.KubeProxyConfiguration{ BindAddress: "10.10.12.11", HealthzBindAddress: "0.0.0.0:12345", MetricsBindAddress: "127.0.0.1:10249", @@ -952,16 +948,16 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { UDPIdleTimeout: metav1.Duration{Duration: 1 * time.Second}, // only ConfigSyncPeriod is invalid ConfigSyncPeriod: metav1.Duration{Duration: -1 * time.Second}, - IPTables: kubeproxyconfigv1alpha1.KubeProxyIPTablesConfiguration{ + IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{ MasqueradeAll: true, SyncPeriod: metav1.Duration{Duration: 5 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second}, }, - IPVS: kubeproxyconfigv1alpha1.KubeProxyIPVSConfiguration{ + IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{ SyncPeriod: metav1.Duration{Duration: 10 * time.Second}, MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second}, }, - Conntrack: kubeproxyconfigv1alpha1.KubeProxyConntrackConfiguration{ + Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{ Max: utilpointer.Int32Ptr(2), MaxPerCore: utilpointer.Int32Ptr(1), Min: utilpointer.Int32Ptr(1), @@ -976,7 +972,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) { } for i, errorCase := range errorCases { - if errs := ValidateProxy(errorCase.masterConfig.KubeProxy.Config, nil); len(errs) == 0 { + if errs := ValidateProxy(errorCase.masterConfig.ComponentConfigs.KubeProxy, nil); len(errs) == 0 { t.Errorf("%d failed ValidateProxy: expected error for %s, but got no error", i, errorCase.msg) } else if !strings.Contains(errs[0].Error(), errorCase.msg) { t.Errorf("%d failed ValidateProxy: unexpected error: %v, expected: %s", i, errs[0], errorCase.msg) diff --git a/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go b/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go index 5bb2f239a71c2..5b37f7f72a2ec 100644 --- a/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go +++ b/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go @@ -238,17 +238,17 @@ func TestEnsureProxyAddon(t *testing.T) { expErr, actErr) } - if intMaster.KubeProxy.Config.BindAddress != tc.expBindAddr { + if intMaster.ComponentConfigs.KubeProxy.BindAddress != tc.expBindAddr { t.Errorf("%s test failed, expected: %s, got: %s", tc.name, tc.expBindAddr, - intMaster.KubeProxy.Config.BindAddress) + intMaster.ComponentConfigs.KubeProxy.BindAddress) } - if intMaster.KubeProxy.Config.ClusterCIDR != tc.expClusterCIDR { + if intMaster.ComponentConfigs.KubeProxy.ClusterCIDR != tc.expClusterCIDR { t.Errorf("%s test failed, expected: %s, got: %s", tc.name, tc.expClusterCIDR, - intMaster.KubeProxy.Config.ClusterCIDR) + intMaster.ComponentConfigs.KubeProxy.ClusterCIDR) } } } diff --git a/cmd/kubeadm/app/phases/kubelet/config_test.go b/cmd/kubeadm/app/phases/kubelet/config_test.go index dc21da453d4e1..476978920505e 100644 --- a/cmd/kubeadm/app/phases/kubelet/config_test.go +++ b/cmd/kubeadm/app/phases/kubelet/config_test.go @@ -25,7 +25,7 @@ import ( "k8s.io/client-go/kubernetes/fake" core "k8s.io/client-go/testing" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" + "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" "k8s.io/kubernetes/pkg/util/version" ) @@ -35,8 +35,8 @@ func TestCreateConfigMap(t *testing.T) { cfg := &kubeadmapi.MasterConfiguration{ NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName}, KubernetesVersion: "v1.11.0", - KubeletConfiguration: kubeadmapi.KubeletConfiguration{ - BaseConfig: &kubeletconfigv1beta1.KubeletConfiguration{}, + ComponentConfigs: kubeadmapi.ComponentConfigs{ + Kubelet: &kubeletconfig.KubeletConfiguration{}, }, } From 71eda34c01f19cc354147335fd4f0c312566e81c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Sun, 8 Jul 2018 09:50:34 +0300 Subject: [PATCH 4/5] Update the config API roundtrip tests --- .../testdata/conversion/master/internal.yaml | 244 ++++++++++-------- .../testdata/conversion/master/v1alpha2.yaml | 4 +- .../testdata/conversion/master/v1alpha3.yaml | 4 +- 3 files changed, 138 insertions(+), 114 deletions(-) diff --git a/cmd/kubeadm/app/util/config/testdata/conversion/master/internal.yaml b/cmd/kubeadm/app/util/config/testdata/conversion/master/internal.yaml index c10a4c6f79b0a..a2d266011e0d3 100644 --- a/cmd/kubeadm/app/util/config/testdata/conversion/master/internal.yaml +++ b/cmd/kubeadm/app/util/config/testdata/conversion/master/internal.yaml @@ -23,6 +23,140 @@ BootstrapTokens: CIImageRepository: "" CertificatesDir: /etc/kubernetes/pki ClusterName: kubernetes +ComponentConfigs: + KubeProxy: + BindAddress: 0.0.0.0 + ClientConnection: + AcceptContentTypes: "" + Burst: 10 + ContentType: application/vnd.kubernetes.protobuf + KubeConfigFile: /var/lib/kube-proxy/kubeconfig.conf + QPS: 5 + ClusterCIDR: "" + ConfigSyncPeriod: 15m0s + Conntrack: + Max: null + MaxPerCore: 32768 + Min: 131072 + TCPCloseWaitTimeout: 1h0m0s + TCPEstablishedTimeout: 24h0m0s + EnableProfiling: false + FeatureGates: + ServiceNodeExclusion: true + SupportIPVSProxyMode: true + HealthzBindAddress: 0.0.0.0:10256 + HostnameOverride: "" + IPTables: + MasqueradeAll: false + MasqueradeBit: 14 + MinSyncPeriod: 0s + SyncPeriod: 30s + IPVS: + ExcludeCIDRs: null + MinSyncPeriod: 0s + Scheduler: "" + SyncPeriod: 30s + MetricsBindAddress: 127.0.0.1:10249 + Mode: iptables + NodePortAddresses: null + OOMScoreAdj: -999 + PortRange: "" + ResourceContainer: /kube-proxy + UDPIdleTimeout: 250ms + Kubelet: + Address: 1.2.3.4 + Authentication: + Anonymous: + Enabled: false + Webhook: + CacheTTL: 2m0s + Enabled: true + X509: + ClientCAFile: /etc/kubernetes/pki/ca.crt + Authorization: + Mode: Webhook + Webhook: + CacheAuthorizedTTL: 5m0s + CacheUnauthorizedTTL: 30s + CPUCFSQuota: true + CPUManagerPolicy: none + CPUManagerReconcilePeriod: 10s + CgroupDriver: cgroupfs + CgroupRoot: "" + CgroupsPerQOS: true + ClusterDNS: + - 10.96.0.10 + ClusterDomain: cluster.local + ConfigMapAndSecretChangeDetectionStrategy: Watch + ContainerLogMaxFiles: 5 + ContainerLogMaxSize: 10Mi + ContentType: application/vnd.kubernetes.protobuf + EnableContentionProfiling: false + EnableControllerAttachDetach: true + EnableDebuggingHandlers: true + EnforceNodeAllocatable: + - pods + EventBurst: 10 + EventRecordQPS: 5 + EvictionHard: + imagefs.available: 15% + memory.available: 100Mi + nodefs.available: 10% + nodefs.inodesFree: 5% + EvictionMaxPodGracePeriod: 0 + EvictionMinimumReclaim: null + EvictionPressureTransitionPeriod: 5m0s + EvictionSoft: null + EvictionSoftGracePeriod: null + FailSwapOn: true + FeatureGates: null + FileCheckFrequency: 20s + HTTPCheckFrequency: 20s + HairpinMode: promiscuous-bridge + HealthzBindAddress: 127.0.0.1 + HealthzPort: 10248 + IPTablesDropBit: 15 + IPTablesMasqueradeBit: 14 + ImageGCHighThresholdPercent: 85 + ImageGCLowThresholdPercent: 80 + ImageMinimumGCAge: 2m0s + KubeAPIBurst: 10 + KubeAPIQPS: 5 + KubeReserved: null + KubeReservedCgroup: "" + KubeletCgroups: "" + MakeIPTablesUtilChains: true + MaxOpenFiles: 1000000 + MaxPods: 110 + NodeStatusUpdateFrequency: 10s + OOMScoreAdj: -999 + PodCIDR: "" + PodPidsLimit: -1 + PodsPerCore: 0 + Port: 10250 + ProtectKernelDefaults: false + QOSReserved: null + ReadOnlyPort: 0 + RegistryBurst: 10 + RegistryPullQPS: 5 + ResolverConfig: /etc/resolv.conf + RotateCertificates: true + RuntimeRequestTimeout: 2m0s + SerializeImagePulls: true + ServerTLSBootstrap: false + StaticPodPath: /etc/kubernetes/manifests + StaticPodURL: "" + StaticPodURLHeader: null + StreamingConnectionIdleTimeout: 4h0m0s + SyncFrequency: 1m0s + SystemCgroups: "" + SystemReserved: null + SystemReservedCgroup: "" + TLSCertFile: "" + TLSCipherSuites: null + TLSMinVersion: "" + TLSPrivateKeyFile: "" + VolumeStatsAggPeriod: 1m0s ControllerManagerExtraArgs: null ControllerManagerExtraVolumes: null Etcd: @@ -35,116 +169,6 @@ Etcd: ServerCertSANs: null FeatureGates: null ImageRepository: k8s.gcr.io -KubeProxy: - Config: - bindAddress: 0.0.0.0 - clientConnection: - acceptContentTypes: "" - burst: 10 - contentType: application/vnd.kubernetes.protobuf - kubeconfig: /var/lib/kube-proxy/kubeconfig.conf - qps: 5 - clusterCIDR: "" - configSyncPeriod: 15m0s - conntrack: - max: null - maxPerCore: 32768 - min: 131072 - tcpCloseWaitTimeout: 1h0m0s - tcpEstablishedTimeout: 24h0m0s - enableProfiling: false - featureGates: - ServiceNodeExclusion: true - SupportIPVSProxyMode: true - healthzBindAddress: 0.0.0.0:10256 - hostnameOverride: "" - iptables: - masqueradeAll: false - masqueradeBit: 14 - minSyncPeriod: 0s - syncPeriod: 30s - ipvs: - excludeCIDRs: null - minSyncPeriod: 0s - scheduler: "" - syncPeriod: 30s - metricsBindAddress: 127.0.0.1:10249 - mode: "" - nodePortAddresses: null - oomScoreAdj: -999 - portRange: "" - resourceContainer: /kube-proxy - udpIdleTimeout: 250ms -KubeletConfiguration: - BaseConfig: - address: 0.0.0.0 - authentication: - anonymous: - enabled: false - webhook: - cacheTTL: 2m0s - enabled: true - x509: - clientCAFile: /etc/kubernetes/pki/ca.crt - authorization: - mode: Webhook - webhook: - cacheAuthorizedTTL: 5m0s - cacheUnauthorizedTTL: 30s - cgroupDriver: cgroupfs - cgroupsPerQOS: true - clusterDNS: - - 10.96.0.10 - clusterDomain: cluster.local - configMapAndSecretChangeDetectionStrategy: Watch - containerLogMaxFiles: 5 - containerLogMaxSize: 10Mi - contentType: application/vnd.kubernetes.protobuf - cpuCFSQuota: true - cpuManagerPolicy: none - cpuManagerReconcilePeriod: 10s - enableControllerAttachDetach: true - enableDebuggingHandlers: true - enforceNodeAllocatable: - - pods - eventBurst: 10 - eventRecordQPS: 5 - evictionHard: - imagefs.available: 15% - memory.available: 100Mi - nodefs.available: 10% - nodefs.inodesFree: 5% - evictionPressureTransitionPeriod: 5m0s - failSwapOn: true - fileCheckFrequency: 20s - hairpinMode: promiscuous-bridge - healthzBindAddress: 127.0.0.1 - healthzPort: 10248 - httpCheckFrequency: 20s - imageGCHighThresholdPercent: 85 - imageGCLowThresholdPercent: 80 - imageMinimumGCAge: 2m0s - iptablesDropBit: 15 - iptablesMasqueradeBit: 14 - kubeAPIBurst: 10 - kubeAPIQPS: 5 - makeIPTablesUtilChains: true - maxOpenFiles: 1000000 - maxPods: 110 - nodeStatusUpdateFrequency: 10s - oomScoreAdj: -999 - podPidsLimit: -1 - port: 10250 - registryBurst: 10 - registryPullQPS: 5 - resolvConf: /etc/resolv.conf - rotateCertificates: true - runtimeRequestTimeout: 2m0s - serializeImagePulls: true - staticPodPath: /etc/kubernetes/manifests - streamingConnectionIdleTimeout: 4h0m0s - syncFrequency: 1m0s - volumeStatsAggPeriod: 1m0s KubernetesVersion: v1.10.2 Networking: DNSDomain: cluster.local diff --git a/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha2.yaml b/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha2.yaml index b0c29b4355358..06fd21a2ce125 100644 --- a/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha2.yaml +++ b/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha2.yaml @@ -59,7 +59,7 @@ kubeProxy: scheduler: "" syncPeriod: 30s metricsBindAddress: 127.0.0.1:10249 - mode: "" + mode: iptables nodePortAddresses: null oomScoreAdj: -999 portRange: "" @@ -67,7 +67,7 @@ kubeProxy: udpIdleTimeout: 250ms kubeletConfiguration: baseConfig: - address: 0.0.0.0 + address: 1.2.3.4 authentication: anonymous: enabled: false diff --git a/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha3.yaml b/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha3.yaml index 2b08a804f2f27..8a20ba41b50a9 100644 --- a/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha3.yaml +++ b/cmd/kubeadm/app/util/config/testdata/conversion/master/v1alpha3.yaml @@ -59,7 +59,7 @@ kubeProxy: scheduler: "" syncPeriod: 30s metricsBindAddress: 127.0.0.1:10249 - mode: "" + mode: iptables nodePortAddresses: null oomScoreAdj: -999 portRange: "" @@ -67,7 +67,7 @@ kubeProxy: udpIdleTimeout: 250ms kubeletConfiguration: baseConfig: - address: 0.0.0.0 + address: 1.2.3.4 authentication: anonymous: enabled: false From 5e6be9de77b410abdee481b77b58b35a6143add3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Sun, 8 Jul 2018 09:55:33 +0300 Subject: [PATCH 5/5] autogenerated --- cmd/kubeadm/app/apis/kubeadm/BUILD | 4 +- cmd/kubeadm/app/apis/kubeadm/fuzzer/BUILD | 4 +- cmd/kubeadm/app/apis/kubeadm/v1alpha2/BUILD | 3 + .../v1alpha2/zz_generated.conversion.go | 71 +----------------- cmd/kubeadm/app/apis/kubeadm/v1alpha3/BUILD | 3 + .../v1alpha3/zz_generated.conversion.go | 71 +----------------- cmd/kubeadm/app/apis/kubeadm/validation/BUILD | 7 +- .../app/apis/kubeadm/zz_generated.deepcopy.go | 75 +++++++------------ cmd/kubeadm/app/phases/kubelet/BUILD | 3 +- 9 files changed, 50 insertions(+), 191 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/BUILD b/cmd/kubeadm/app/apis/kubeadm/BUILD index 89b91e1d807df..71a7c91ddb845 100644 --- a/cmd/kubeadm/app/apis/kubeadm/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/BUILD @@ -18,8 +18,8 @@ go_library( ], importpath = "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm", deps = [ - "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", - "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", + "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", diff --git a/cmd/kubeadm/app/apis/kubeadm/fuzzer/BUILD b/cmd/kubeadm/app/apis/kubeadm/fuzzer/BUILD index 4160c81ac8b65..5b9f4a0fe50d7 100644 --- a/cmd/kubeadm/app/apis/kubeadm/fuzzer/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/fuzzer/BUILD @@ -12,8 +12,10 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/fuzzer", deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", + "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", - "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", + "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/util/pointer:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha2/BUILD b/cmd/kubeadm/app/apis/kubeadm/v1alpha2/BUILD index cd95d23b323ff..3dee378e80736 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha2/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha2/BUILD @@ -4,6 +4,7 @@ go_library( name = "go_default_library", srcs = [ "bootstraptokenstring.go", + "conversion.go", "defaults.go", "defaults_unix.go", "defaults_windows.go", @@ -19,8 +20,10 @@ go_library( deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", "//cmd/kubeadm/app/constants:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", + "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/proxy/apis/kubeproxyconfig/scheme:go_default_library", "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", "//pkg/util/pointer:go_default_library", diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha2/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha2/zz_generated.conversion.go index e76f9848611db..f50a72d46cdc6 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha2/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha2/zz_generated.conversion.go @@ -28,8 +28,6 @@ import ( conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" kubeadm "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - v1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" - v1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" ) func init() { @@ -54,10 +52,6 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_kubeadm_ExternalEtcd_To_v1alpha2_ExternalEtcd, Convert_v1alpha2_HostPathMount_To_kubeadm_HostPathMount, Convert_kubeadm_HostPathMount_To_v1alpha2_HostPathMount, - Convert_v1alpha2_KubeProxy_To_kubeadm_KubeProxy, - Convert_kubeadm_KubeProxy_To_v1alpha2_KubeProxy, - Convert_v1alpha2_KubeletConfiguration_To_kubeadm_KubeletConfiguration, - Convert_kubeadm_KubeletConfiguration_To_v1alpha2_KubeletConfiguration, Convert_v1alpha2_LocalEtcd_To_kubeadm_LocalEtcd, Convert_kubeadm_LocalEtcd_To_v1alpha2_LocalEtcd, Convert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration, @@ -247,46 +241,6 @@ func Convert_kubeadm_HostPathMount_To_v1alpha2_HostPathMount(in *kubeadm.HostPat return autoConvert_kubeadm_HostPathMount_To_v1alpha2_HostPathMount(in, out, s) } -func autoConvert_v1alpha2_KubeProxy_To_kubeadm_KubeProxy(in *KubeProxy, out *kubeadm.KubeProxy, s conversion.Scope) error { - out.Config = (*v1alpha1.KubeProxyConfiguration)(unsafe.Pointer(in.Config)) - return nil -} - -// Convert_v1alpha2_KubeProxy_To_kubeadm_KubeProxy is an autogenerated conversion function. -func Convert_v1alpha2_KubeProxy_To_kubeadm_KubeProxy(in *KubeProxy, out *kubeadm.KubeProxy, s conversion.Scope) error { - return autoConvert_v1alpha2_KubeProxy_To_kubeadm_KubeProxy(in, out, s) -} - -func autoConvert_kubeadm_KubeProxy_To_v1alpha2_KubeProxy(in *kubeadm.KubeProxy, out *KubeProxy, s conversion.Scope) error { - out.Config = (*v1alpha1.KubeProxyConfiguration)(unsafe.Pointer(in.Config)) - return nil -} - -// Convert_kubeadm_KubeProxy_To_v1alpha2_KubeProxy is an autogenerated conversion function. -func Convert_kubeadm_KubeProxy_To_v1alpha2_KubeProxy(in *kubeadm.KubeProxy, out *KubeProxy, s conversion.Scope) error { - return autoConvert_kubeadm_KubeProxy_To_v1alpha2_KubeProxy(in, out, s) -} - -func autoConvert_v1alpha2_KubeletConfiguration_To_kubeadm_KubeletConfiguration(in *KubeletConfiguration, out *kubeadm.KubeletConfiguration, s conversion.Scope) error { - out.BaseConfig = (*v1beta1.KubeletConfiguration)(unsafe.Pointer(in.BaseConfig)) - return nil -} - -// Convert_v1alpha2_KubeletConfiguration_To_kubeadm_KubeletConfiguration is an autogenerated conversion function. -func Convert_v1alpha2_KubeletConfiguration_To_kubeadm_KubeletConfiguration(in *KubeletConfiguration, out *kubeadm.KubeletConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha2_KubeletConfiguration_To_kubeadm_KubeletConfiguration(in, out, s) -} - -func autoConvert_kubeadm_KubeletConfiguration_To_v1alpha2_KubeletConfiguration(in *kubeadm.KubeletConfiguration, out *KubeletConfiguration, s conversion.Scope) error { - out.BaseConfig = (*v1beta1.KubeletConfiguration)(unsafe.Pointer(in.BaseConfig)) - return nil -} - -// Convert_kubeadm_KubeletConfiguration_To_v1alpha2_KubeletConfiguration is an autogenerated conversion function. -func Convert_kubeadm_KubeletConfiguration_To_v1alpha2_KubeletConfiguration(in *kubeadm.KubeletConfiguration, out *KubeletConfiguration, s conversion.Scope) error { - return autoConvert_kubeadm_KubeletConfiguration_To_v1alpha2_KubeletConfiguration(in, out, s) -} - func autoConvert_v1alpha2_LocalEtcd_To_kubeadm_LocalEtcd(in *LocalEtcd, out *kubeadm.LocalEtcd, s conversion.Scope) error { out.Image = in.Image out.DataDir = in.DataDir @@ -323,15 +277,11 @@ func autoConvert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in if err := Convert_v1alpha2_API_To_kubeadm_API(&in.API, &out.API, s); err != nil { return err } - if err := Convert_v1alpha2_KubeProxy_To_kubeadm_KubeProxy(&in.KubeProxy, &out.KubeProxy, s); err != nil { - return err - } + // WARNING: in.KubeProxy requires manual conversion: does not exist in peer-type if err := Convert_v1alpha2_Etcd_To_kubeadm_Etcd(&in.Etcd, &out.Etcd, s); err != nil { return err } - if err := Convert_v1alpha2_KubeletConfiguration_To_kubeadm_KubeletConfiguration(&in.KubeletConfiguration, &out.KubeletConfiguration, s); err != nil { - return err - } + // WARNING: in.KubeletConfiguration requires manual conversion: does not exist in peer-type if err := Convert_v1alpha2_Networking_To_kubeadm_Networking(&in.Networking, &out.Networking, s); err != nil { return err } @@ -354,28 +304,18 @@ func autoConvert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in return nil } -// Convert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration is an autogenerated conversion function. -func Convert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in *MasterConfiguration, out *kubeadm.MasterConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in, out, s) -} - func autoConvert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in *kubeadm.MasterConfiguration, out *MasterConfiguration, s conversion.Scope) error { out.BootstrapTokens = *(*[]BootstrapToken)(unsafe.Pointer(&in.BootstrapTokens)) if err := Convert_kubeadm_NodeRegistrationOptions_To_v1alpha2_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { return err } + // WARNING: in.ComponentConfigs requires manual conversion: does not exist in peer-type if err := Convert_kubeadm_API_To_v1alpha2_API(&in.API, &out.API, s); err != nil { return err } - if err := Convert_kubeadm_KubeProxy_To_v1alpha2_KubeProxy(&in.KubeProxy, &out.KubeProxy, s); err != nil { - return err - } if err := Convert_kubeadm_Etcd_To_v1alpha2_Etcd(&in.Etcd, &out.Etcd, s); err != nil { return err } - if err := Convert_kubeadm_KubeletConfiguration_To_v1alpha2_KubeletConfiguration(&in.KubeletConfiguration, &out.KubeletConfiguration, s); err != nil { - return err - } if err := Convert_kubeadm_Networking_To_v1alpha2_Networking(&in.Networking, &out.Networking, s); err != nil { return err } @@ -399,11 +339,6 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in return nil } -// Convert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration is an autogenerated conversion function. -func Convert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in *kubeadm.MasterConfiguration, out *MasterConfiguration, s conversion.Scope) error { - return autoConvert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in, out, s) -} - func autoConvert_v1alpha2_Networking_To_kubeadm_Networking(in *Networking, out *kubeadm.Networking, s conversion.Scope) error { out.ServiceSubnet = in.ServiceSubnet out.PodSubnet = in.PodSubnet diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/BUILD b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/BUILD index 93c0d96d2ad51..8558b759fe4ad 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/BUILD @@ -4,6 +4,7 @@ go_library( name = "go_default_library", srcs = [ "bootstraptokenstring.go", + "conversion.go", "defaults.go", "defaults_unix.go", "defaults_windows.go", @@ -19,8 +20,10 @@ go_library( deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", "//cmd/kubeadm/app/constants:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", + "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/proxy/apis/kubeproxyconfig/scheme:go_default_library", "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", "//pkg/util/pointer:go_default_library", diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/zz_generated.conversion.go index 0a04ec3af01a8..984bfe1e7f831 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/zz_generated.conversion.go @@ -28,8 +28,6 @@ import ( conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" kubeadm "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - v1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" - v1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" ) func init() { @@ -54,10 +52,6 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_kubeadm_ExternalEtcd_To_v1alpha3_ExternalEtcd, Convert_v1alpha3_HostPathMount_To_kubeadm_HostPathMount, Convert_kubeadm_HostPathMount_To_v1alpha3_HostPathMount, - Convert_v1alpha3_KubeProxy_To_kubeadm_KubeProxy, - Convert_kubeadm_KubeProxy_To_v1alpha3_KubeProxy, - Convert_v1alpha3_KubeletConfiguration_To_kubeadm_KubeletConfiguration, - Convert_kubeadm_KubeletConfiguration_To_v1alpha3_KubeletConfiguration, Convert_v1alpha3_LocalEtcd_To_kubeadm_LocalEtcd, Convert_kubeadm_LocalEtcd_To_v1alpha3_LocalEtcd, Convert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration, @@ -247,46 +241,6 @@ func Convert_kubeadm_HostPathMount_To_v1alpha3_HostPathMount(in *kubeadm.HostPat return autoConvert_kubeadm_HostPathMount_To_v1alpha3_HostPathMount(in, out, s) } -func autoConvert_v1alpha3_KubeProxy_To_kubeadm_KubeProxy(in *KubeProxy, out *kubeadm.KubeProxy, s conversion.Scope) error { - out.Config = (*v1alpha1.KubeProxyConfiguration)(unsafe.Pointer(in.Config)) - return nil -} - -// Convert_v1alpha3_KubeProxy_To_kubeadm_KubeProxy is an autogenerated conversion function. -func Convert_v1alpha3_KubeProxy_To_kubeadm_KubeProxy(in *KubeProxy, out *kubeadm.KubeProxy, s conversion.Scope) error { - return autoConvert_v1alpha3_KubeProxy_To_kubeadm_KubeProxy(in, out, s) -} - -func autoConvert_kubeadm_KubeProxy_To_v1alpha3_KubeProxy(in *kubeadm.KubeProxy, out *KubeProxy, s conversion.Scope) error { - out.Config = (*v1alpha1.KubeProxyConfiguration)(unsafe.Pointer(in.Config)) - return nil -} - -// Convert_kubeadm_KubeProxy_To_v1alpha3_KubeProxy is an autogenerated conversion function. -func Convert_kubeadm_KubeProxy_To_v1alpha3_KubeProxy(in *kubeadm.KubeProxy, out *KubeProxy, s conversion.Scope) error { - return autoConvert_kubeadm_KubeProxy_To_v1alpha3_KubeProxy(in, out, s) -} - -func autoConvert_v1alpha3_KubeletConfiguration_To_kubeadm_KubeletConfiguration(in *KubeletConfiguration, out *kubeadm.KubeletConfiguration, s conversion.Scope) error { - out.BaseConfig = (*v1beta1.KubeletConfiguration)(unsafe.Pointer(in.BaseConfig)) - return nil -} - -// Convert_v1alpha3_KubeletConfiguration_To_kubeadm_KubeletConfiguration is an autogenerated conversion function. -func Convert_v1alpha3_KubeletConfiguration_To_kubeadm_KubeletConfiguration(in *KubeletConfiguration, out *kubeadm.KubeletConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha3_KubeletConfiguration_To_kubeadm_KubeletConfiguration(in, out, s) -} - -func autoConvert_kubeadm_KubeletConfiguration_To_v1alpha3_KubeletConfiguration(in *kubeadm.KubeletConfiguration, out *KubeletConfiguration, s conversion.Scope) error { - out.BaseConfig = (*v1beta1.KubeletConfiguration)(unsafe.Pointer(in.BaseConfig)) - return nil -} - -// Convert_kubeadm_KubeletConfiguration_To_v1alpha3_KubeletConfiguration is an autogenerated conversion function. -func Convert_kubeadm_KubeletConfiguration_To_v1alpha3_KubeletConfiguration(in *kubeadm.KubeletConfiguration, out *KubeletConfiguration, s conversion.Scope) error { - return autoConvert_kubeadm_KubeletConfiguration_To_v1alpha3_KubeletConfiguration(in, out, s) -} - func autoConvert_v1alpha3_LocalEtcd_To_kubeadm_LocalEtcd(in *LocalEtcd, out *kubeadm.LocalEtcd, s conversion.Scope) error { out.Image = in.Image out.DataDir = in.DataDir @@ -323,15 +277,11 @@ func autoConvert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration(in if err := Convert_v1alpha3_API_To_kubeadm_API(&in.API, &out.API, s); err != nil { return err } - if err := Convert_v1alpha3_KubeProxy_To_kubeadm_KubeProxy(&in.KubeProxy, &out.KubeProxy, s); err != nil { - return err - } + // WARNING: in.KubeProxy requires manual conversion: does not exist in peer-type if err := Convert_v1alpha3_Etcd_To_kubeadm_Etcd(&in.Etcd, &out.Etcd, s); err != nil { return err } - if err := Convert_v1alpha3_KubeletConfiguration_To_kubeadm_KubeletConfiguration(&in.KubeletConfiguration, &out.KubeletConfiguration, s); err != nil { - return err - } + // WARNING: in.KubeletConfiguration requires manual conversion: does not exist in peer-type if err := Convert_v1alpha3_Networking_To_kubeadm_Networking(&in.Networking, &out.Networking, s); err != nil { return err } @@ -354,28 +304,18 @@ func autoConvert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration(in return nil } -// Convert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration is an autogenerated conversion function. -func Convert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration(in *MasterConfiguration, out *kubeadm.MasterConfiguration, s conversion.Scope) error { - return autoConvert_v1alpha3_MasterConfiguration_To_kubeadm_MasterConfiguration(in, out, s) -} - func autoConvert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration(in *kubeadm.MasterConfiguration, out *MasterConfiguration, s conversion.Scope) error { out.BootstrapTokens = *(*[]BootstrapToken)(unsafe.Pointer(&in.BootstrapTokens)) if err := Convert_kubeadm_NodeRegistrationOptions_To_v1alpha3_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { return err } + // WARNING: in.ComponentConfigs requires manual conversion: does not exist in peer-type if err := Convert_kubeadm_API_To_v1alpha3_API(&in.API, &out.API, s); err != nil { return err } - if err := Convert_kubeadm_KubeProxy_To_v1alpha3_KubeProxy(&in.KubeProxy, &out.KubeProxy, s); err != nil { - return err - } if err := Convert_kubeadm_Etcd_To_v1alpha3_Etcd(&in.Etcd, &out.Etcd, s); err != nil { return err } - if err := Convert_kubeadm_KubeletConfiguration_To_v1alpha3_KubeletConfiguration(&in.KubeletConfiguration, &out.KubeletConfiguration, s); err != nil { - return err - } if err := Convert_kubeadm_Networking_To_v1alpha3_Networking(&in.Networking, &out.Networking, s); err != nil { return err } @@ -399,11 +339,6 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration(in return nil } -// Convert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration is an autogenerated conversion function. -func Convert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration(in *kubeadm.MasterConfiguration, out *MasterConfiguration, s conversion.Scope) error { - return autoConvert_kubeadm_MasterConfiguration_To_v1alpha3_MasterConfiguration(in, out, s) -} - func autoConvert_v1alpha3_Networking_To_kubeadm_Networking(in *Networking, out *kubeadm.Networking, s conversion.Scope) error { out.ServiceSubnet = in.ServiceSubnet out.PodSubnet = in.PodSubnet diff --git a/cmd/kubeadm/app/apis/kubeadm/validation/BUILD b/cmd/kubeadm/app/apis/kubeadm/validation/BUILD index a36528020fbbb..29a4e2aa60d3f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/validation/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/validation/BUILD @@ -12,11 +12,8 @@ go_library( "//cmd/kubeadm/app/util:go_default_library", "//pkg/apis/core/validation:go_default_library", "//pkg/kubelet/apis/kubeletconfig:go_default_library", - "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", "//pkg/kubelet/apis/kubeletconfig/validation:go_default_library", "//pkg/proxy/apis/kubeproxyconfig:go_default_library", - "//pkg/proxy/apis/kubeproxyconfig/scheme:go_default_library", - "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", "//pkg/proxy/apis/kubeproxyconfig/validation:go_default_library", "//pkg/registry/core/service/ipallocator:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", @@ -34,8 +31,8 @@ go_test( embed = [":go_default_library"], deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", - "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", - "//pkg/proxy/apis/kubeproxyconfig/v1alpha1:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", + "//pkg/proxy/apis/kubeproxyconfig:go_default_library", "//pkg/util/pointer:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", diff --git a/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go b/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go index 769affe3509cf..d3e6d848f32ec 100644 --- a/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go +++ b/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go @@ -24,8 +24,8 @@ import ( corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" - v1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1" - v1alpha1 "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1" + kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig" + kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -121,6 +121,32 @@ func (in *BootstrapTokenString) DeepCopy() *BootstrapTokenString { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentConfigs) DeepCopyInto(out *ComponentConfigs) { + *out = *in + if in.Kubelet != nil { + in, out := &in.Kubelet, &out.Kubelet + *out = new(kubeletconfig.KubeletConfiguration) + (*in).DeepCopyInto(*out) + } + if in.KubeProxy != nil { + in, out := &in.KubeProxy, &out.KubeProxy + *out = new(kubeproxyconfig.KubeProxyConfiguration) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentConfigs. +func (in *ComponentConfigs) DeepCopy() *ComponentConfigs { + if in == nil { + return nil + } + out := new(ComponentConfigs) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Etcd) DeepCopyInto(out *Etcd) { *out = *in @@ -184,48 +210,6 @@ func (in *HostPathMount) DeepCopy() *HostPathMount { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *KubeProxy) DeepCopyInto(out *KubeProxy) { - *out = *in - if in.Config != nil { - in, out := &in.Config, &out.Config - *out = new(v1alpha1.KubeProxyConfiguration) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeProxy. -func (in *KubeProxy) DeepCopy() *KubeProxy { - if in == nil { - return nil - } - out := new(KubeProxy) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { - *out = *in - if in.BaseConfig != nil { - in, out := &in.BaseConfig, &out.BaseConfig - *out = new(v1beta1.KubeletConfiguration) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeletConfiguration. -func (in *KubeletConfiguration) DeepCopy() *KubeletConfiguration { - if in == nil { - return nil - } - out := new(KubeletConfiguration) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LocalEtcd) DeepCopyInto(out *LocalEtcd) { *out = *in @@ -271,10 +255,9 @@ func (in *MasterConfiguration) DeepCopyInto(out *MasterConfiguration) { } } in.NodeRegistration.DeepCopyInto(&out.NodeRegistration) + in.ComponentConfigs.DeepCopyInto(&out.ComponentConfigs) out.API = in.API - in.KubeProxy.DeepCopyInto(&out.KubeProxy) in.Etcd.DeepCopyInto(&out.Etcd) - in.KubeletConfiguration.DeepCopyInto(&out.KubeletConfiguration) out.Networking = in.Networking if in.APIServerExtraArgs != nil { in, out := &in.APIServerExtraArgs, &out.APIServerExtraArgs diff --git a/cmd/kubeadm/app/phases/kubelet/BUILD b/cmd/kubeadm/app/phases/kubelet/BUILD index d817191d358e3..512aacee02cfd 100644 --- a/cmd/kubeadm/app/phases/kubelet/BUILD +++ b/cmd/kubeadm/app/phases/kubelet/BUILD @@ -18,6 +18,7 @@ go_library( "//cmd/kubeadm/app/util:go_default_library", "//cmd/kubeadm/app/util/apiclient:go_default_library", "//pkg/apis/rbac/v1:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library", "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", "//pkg/util/initsystem:go_default_library", @@ -46,7 +47,7 @@ go_test( deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", "//pkg/kubelet/apis:go_default_library", - "//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library", + "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/util/version:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",