diff --git a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go index f9d1c9df3ea..b2d80afc7b6 100644 --- a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go +++ b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go @@ -140,7 +140,6 @@ func fuzzJoinConfiguration(obj *kubeadm.JoinConfiguration, c fuzz.Continue) { // Pinning values for fields that get defaults if fuzz value is empty string or nil (thus making the round trip test fail) obj.CACertPath = "foo" - obj.ClusterName = "bar" obj.Discovery = kubeadm.Discovery{ BootstrapToken: &kubeadm.BootstrapTokenDiscovery{Token: "baz"}, TLSBootstrapToken: "qux", diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 5d15fa2731a..ff09be6313a 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -286,9 +286,6 @@ type JoinConfiguration struct { // Discovery specifies the options for the kubelet to use during the TLS Bootstrap process Discovery Discovery - // The cluster name - ClusterName string - // ControlPlane flag specifies that the joining node should host an additional // control plane instance. ControlPlane bool diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go index 4c5bdd73fcd..fae5ee6d71b 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion.go @@ -29,6 +29,10 @@ func Convert_v1alpha3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinCon return err } + if len(in.ClusterName) != 0 { + return errors.New("clusterName has been removed from JoinConfiguration and clusterName from ClusterConfiguration will be used instead. Please cleanup JoinConfiguration.ClusterName fields") + } + if len(in.FeatureGates) != 0 { return errors.New("featureGates has been removed from JoinConfiguration and featureGates from ClusterConfiguration will be used instead. Please cleanup JoinConfiguration.FeatureGates fields") } diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion_test.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion_test.go index 55df7850024..4553437d81c 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion_test.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/conversion_test.go @@ -34,6 +34,12 @@ func TestJoinConfigurationConversion(t *testing.T) { old: &v1alpha3.JoinConfiguration{}, expectedErr: "", }, + "cluster name fails to be converted": { + old: &v1alpha3.JoinConfiguration{ + ClusterName: "kubernetes", + }, + expectedErr: "clusterName has been removed from JoinConfiguration and clusterName from ClusterConfiguration will be used instead. Please cleanup JoinConfiguration.ClusterName fields", + }, "feature gates fails to be converted": { old: &v1alpha3.JoinConfiguration{ FeatureGates: map[string]bool{ diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/defaults.go index c833b82deeb..087b5b01b53 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/defaults.go @@ -138,9 +138,6 @@ func SetDefaults_JoinConfiguration(obj *JoinConfiguration) { Duration: DefaultDiscoveryTimeout, } } - if obj.ClusterName == "" { - obj.ClusterName = DefaultClusterName - } SetDefaults_NodeRegistrationOptions(&obj.NodeRegistration) SetDefaults_APIEndpoint(&obj.APIEndpoint) 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 a278d956346..251c32f6238 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha3/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha3/zz_generated.conversion.go @@ -495,7 +495,7 @@ func autoConvert_v1alpha3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *Joi // WARNING: in.DiscoveryTimeout requires manual conversion: does not exist in peer-type // WARNING: in.TLSBootstrapToken requires manual conversion: does not exist in peer-type // WARNING: in.Token requires manual conversion: does not exist in peer-type - out.ClusterName = in.ClusterName + // WARNING: in.ClusterName requires manual conversion: does not exist in peer-type // WARNING: in.DiscoveryTokenCACertHashes requires manual conversion: does not exist in peer-type // WARNING: in.DiscoveryTokenUnsafeSkipCAVerification requires manual conversion: does not exist in peer-type out.ControlPlane = in.ControlPlane @@ -512,7 +512,6 @@ func autoConvert_kubeadm_JoinConfiguration_To_v1alpha3_JoinConfiguration(in *kub } out.CACertPath = in.CACertPath // WARNING: in.Discovery requires manual conversion: does not exist in peer-type - out.ClusterName = in.ClusterName out.ControlPlane = in.ControlPlane if err := Convert_kubeadm_APIEndpoint_To_v1alpha3_APIEndpoint(&in.APIEndpoint, &out.APIEndpoint, s); err != nil { return err diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta1/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1beta1/defaults.go index aa56a0cfebc..9fc6589f98b 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta1/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta1/defaults.go @@ -131,10 +131,6 @@ func SetDefaults_JoinConfiguration(obj *JoinConfiguration) { obj.CACertPath = DefaultCACertPath } - if obj.ClusterName == "" { - obj.ClusterName = DefaultClusterName - } - SetDefaults_NodeRegistrationOptions(&obj.NodeRegistration) SetDefaults_APIEndpoint(&obj.APIEndpoint) SetDefaults_Discovery(&obj.Discovery) diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go b/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go index 9a112686a27..af468656eed 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta1/types.go @@ -265,9 +265,6 @@ type JoinConfiguration struct { // Discovery specifies the options for the kubelet to use during the TLS Bootstrap process Discovery Discovery `json:"discovery"` - // ClusterName is the name for the cluster in kubeconfig. - ClusterName string `json:"clusterName,omitempty"` - // ControlPlane flag specifies that the joining node should host an additional // control plane instance. ControlPlane bool `json:"controlPlane,omitempty"` diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta1/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta1/zz_generated.conversion.go index 579cba96325..c036eaba728 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta1/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta1/zz_generated.conversion.go @@ -662,7 +662,6 @@ func autoConvert_v1beta1_JoinConfiguration_To_kubeadm_JoinConfiguration(in *Join if err := Convert_v1beta1_Discovery_To_kubeadm_Discovery(&in.Discovery, &out.Discovery, s); err != nil { return err } - out.ClusterName = in.ClusterName out.ControlPlane = in.ControlPlane if err := Convert_v1beta1_APIEndpoint_To_kubeadm_APIEndpoint(&in.APIEndpoint, &out.APIEndpoint, s); err != nil { return err @@ -683,7 +682,6 @@ func autoConvert_kubeadm_JoinConfiguration_To_v1beta1_JoinConfiguration(in *kube if err := Convert_kubeadm_Discovery_To_v1beta1_Discovery(&in.Discovery, &out.Discovery, s); err != nil { return err } - out.ClusterName = in.ClusterName out.ControlPlane = in.ControlPlane if err := Convert_kubeadm_APIEndpoint_To_v1beta1_APIEndpoint(&in.APIEndpoint, &out.APIEndpoint, s); err != nil { return err diff --git a/cmd/kubeadm/app/cmd/join.go b/cmd/kubeadm/app/cmd/join.go index 2e01e55124c..21fc4457e83 100644 --- a/cmd/kubeadm/app/cmd/join.go +++ b/cmd/kubeadm/app/cmd/join.go @@ -600,6 +600,13 @@ func fetchInitConfigurationFromJoinConfiguration(cfg *kubeadmapi.JoinConfigurati return nil, nil, err } + // Create the final KubeConfig file with the cluster name discovered after fetching the cluster configuration + clusterinfo := kubeconfigutil.GetClusterFromKubeConfig(tlsBootstrapCfg) + tlsBootstrapCfg.Clusters = map[string]*clientcmdapi.Cluster{ + initConfiguration.ClusterName: clusterinfo, + } + tlsBootstrapCfg.Contexts[tlsBootstrapCfg.CurrentContext].Cluster = initConfiguration.ClusterName + // injects into the kubeadm configuration the information about the joining node initConfiguration.NodeRegistration = cfg.NodeRegistration initConfiguration.APIEndpoint = cfg.APIEndpoint diff --git a/cmd/kubeadm/app/discovery/BUILD b/cmd/kubeadm/app/discovery/BUILD index f6f53e40f8c..076af51aa1c 100644 --- a/cmd/kubeadm/app/discovery/BUILD +++ b/cmd/kubeadm/app/discovery/BUILD @@ -12,6 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kubeadm/app/discovery", deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", + "//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library", "//cmd/kubeadm/app/discovery/file:go_default_library", "//cmd/kubeadm/app/discovery/https:go_default_library", "//cmd/kubeadm/app/discovery/token:go_default_library", diff --git a/cmd/kubeadm/app/discovery/discovery.go b/cmd/kubeadm/app/discovery/discovery.go index 7003d7a8bab..fb08e556a24 100644 --- a/cmd/kubeadm/app/discovery/discovery.go +++ b/cmd/kubeadm/app/discovery/discovery.go @@ -23,6 +23,7 @@ import ( clientcmdapi "k8s.io/client-go/tools/clientcmd/api" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1" "k8s.io/kubernetes/cmd/kubeadm/app/discovery/file" "k8s.io/kubernetes/cmd/kubeadm/app/discovery/https" "k8s.io/kubernetes/cmd/kubeadm/app/discovery/token" @@ -48,7 +49,7 @@ func For(cfg *kubeadmapi.JoinConfiguration) (*clientcmdapi.Config, error) { clusterinfo := kubeconfigutil.GetClusterFromKubeConfig(config) return kubeconfigutil.CreateWithToken( clusterinfo.Server, - cfg.ClusterName, + kubeadmapiv1beta1.DefaultClusterName, TokenUser, clusterinfo.CertificateAuthorityData, cfg.Discovery.TLSBootstrapToken, @@ -61,9 +62,9 @@ func DiscoverValidatedKubeConfig(cfg *kubeadmapi.JoinConfiguration) (*clientcmda case cfg.Discovery.File != nil: kubeConfigPath := cfg.Discovery.File.KubeConfigPath if isHTTPSURL(kubeConfigPath) { - return https.RetrieveValidatedConfigInfo(kubeConfigPath, cfg.ClusterName) + return https.RetrieveValidatedConfigInfo(kubeConfigPath, kubeadmapiv1beta1.DefaultClusterName) } - return file.RetrieveValidatedConfigInfo(kubeConfigPath, cfg.ClusterName) + return file.RetrieveValidatedConfigInfo(kubeConfigPath, kubeadmapiv1beta1.DefaultClusterName) case cfg.Discovery.BootstrapToken != nil: return token.RetrieveValidatedConfigInfo(cfg) default: diff --git a/cmd/kubeadm/app/discovery/token/BUILD b/cmd/kubeadm/app/discovery/token/BUILD index 5b6008286cb..17fa88a3b93 100644 --- a/cmd/kubeadm/app/discovery/token/BUILD +++ b/cmd/kubeadm/app/discovery/token/BUILD @@ -12,6 +12,7 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kubeadm/app/discovery/token", deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", + "//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library", "//cmd/kubeadm/app/constants:go_default_library", "//cmd/kubeadm/app/util/kubeconfig:go_default_library", "//cmd/kubeadm/app/util/pubkeypin:go_default_library", diff --git a/cmd/kubeadm/app/discovery/token/token.go b/cmd/kubeadm/app/discovery/token/token.go index 9e874815b05..f3ca46830e2 100644 --- a/cmd/kubeadm/app/discovery/token/token.go +++ b/cmd/kubeadm/app/discovery/token/token.go @@ -33,6 +33,7 @@ import ( clientcmdapi "k8s.io/client-go/tools/clientcmd/api" bootstrapapi "k8s.io/cluster-bootstrap/token/api" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1" "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" "k8s.io/kubernetes/cmd/kubeadm/app/util/pubkeypin" @@ -62,7 +63,7 @@ func RetrieveValidatedConfigInfo(cfg *kubeadmapi.JoinConfiguration) (*clientcmda // The endpoint that wins the race and completes the task first gets its kubeconfig returned below baseKubeConfig, err := fetchKubeConfigWithTimeout(cfg.Discovery.BootstrapToken.APIServerEndpoint, cfg.Discovery.Timeout.Duration, func(endpoint string) (*clientcmdapi.Config, error) { - insecureBootstrapConfig := buildInsecureBootstrapKubeConfig(endpoint, cfg.ClusterName) + insecureBootstrapConfig := buildInsecureBootstrapKubeConfig(endpoint, kubeadmapiv1beta1.DefaultClusterName) clusterName := insecureBootstrapConfig.Contexts[insecureBootstrapConfig.CurrentContext].Cluster insecureClient, err := kubeconfigutil.ToClientSet(insecureBootstrapConfig) diff --git a/cmd/kubeadm/app/util/config/testdata/conversion/node/internal.yaml b/cmd/kubeadm/app/util/config/testdata/conversion/node/internal.yaml index 51aec4f4f09..ab92b4bcee4 100644 --- a/cmd/kubeadm/app/util/config/testdata/conversion/node/internal.yaml +++ b/cmd/kubeadm/app/util/config/testdata/conversion/node/internal.yaml @@ -2,7 +2,6 @@ APIEndpoint: AdvertiseAddress: 192.168.2.2 BindPort: 6443 CACertPath: /etc/kubernetes/pki/ca.crt -ClusterName: kubernetes ControlPlane: false Discovery: BootstrapToken: diff --git a/cmd/kubeadm/app/util/config/testdata/conversion/node/v1alpha3.yaml b/cmd/kubeadm/app/util/config/testdata/conversion/node/v1alpha3.yaml index de9e2412fbc..f1fab8c9863 100644 --- a/cmd/kubeadm/app/util/config/testdata/conversion/node/v1alpha3.yaml +++ b/cmd/kubeadm/app/util/config/testdata/conversion/node/v1alpha3.yaml @@ -3,7 +3,6 @@ apiEndpoint: bindPort: 6443 apiVersion: kubeadm.k8s.io/v1alpha3 caCertPath: /etc/kubernetes/pki/ca.crt -clusterName: kubernetes discoveryFile: "" discoveryTimeout: 5m0s discoveryToken: abcdef.0123456789abcdef diff --git a/cmd/kubeadm/app/util/config/testdata/conversion/node/v1beta1.yaml b/cmd/kubeadm/app/util/config/testdata/conversion/node/v1beta1.yaml index a6b1b45a8f6..8ac30315187 100644 --- a/cmd/kubeadm/app/util/config/testdata/conversion/node/v1beta1.yaml +++ b/cmd/kubeadm/app/util/config/testdata/conversion/node/v1beta1.yaml @@ -3,7 +3,6 @@ apiEndpoint: bindPort: 6443 apiVersion: kubeadm.k8s.io/v1beta1 caCertPath: /etc/kubernetes/pki/ca.crt -clusterName: kubernetes discovery: bootstrapToken: apiServerEndpoint: kube-apiserver:6443 diff --git a/cmd/kubeadm/app/util/config/testdata/defaulting/node/defaulted.yaml b/cmd/kubeadm/app/util/config/testdata/defaulting/node/defaulted.yaml index 4de98d37a3c..66abfbb6040 100644 --- a/cmd/kubeadm/app/util/config/testdata/defaulting/node/defaulted.yaml +++ b/cmd/kubeadm/app/util/config/testdata/defaulting/node/defaulted.yaml @@ -3,7 +3,6 @@ apiEndpoint: bindPort: 6443 apiVersion: kubeadm.k8s.io/v1beta1 caCertPath: /etc/kubernetes/pki/ca.crt -clusterName: kubernetes discovery: bootstrapToken: apiServerEndpoint: kube-apiserver:6443