diff --git a/cmd/kubeadm/app/cmd/config_test.go b/cmd/kubeadm/app/cmd/config_test.go index 67a13e3249b..2df6da16daf 100644 --- a/cmd/kubeadm/app/cmd/config_test.go +++ b/cmd/kubeadm/app/cmd/config_test.go @@ -82,10 +82,14 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) { constants.CurrentKubernetesVersion.String(), }, configContents: []byte(dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: ClusterConfiguration - kubernetesVersion: %s - `, kubeadmapiv1.SchemeGroupVersion.String(), constants.CurrentKubernetesVersion))), +apiVersion: %s +kind: InitConfiguration +nodeRegistration: + criSocket: %s +--- +apiVersion: %[1]s +kind: ClusterConfiguration +kubernetesVersion: %[3]s`, kubeadmapiv1.SchemeGroupVersion.String(), constants.UnknownCRISocket, constants.CurrentKubernetesVersion))), }, { name: "use coredns", @@ -94,10 +98,14 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) { "coredns", }, configContents: []byte(dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: ClusterConfiguration - kubernetesVersion: %s - `, kubeadmapiv1.SchemeGroupVersion.String(), constants.MinimumControlPlaneVersion))), +apiVersion: %s +kind: InitConfiguration +nodeRegistration: + criSocket: %s +--- +apiVersion: %[1]s +kind: ClusterConfiguration +kubernetesVersion: %[3]s`, kubeadmapiv1.SchemeGroupVersion.String(), constants.UnknownCRISocket, constants.MinimumControlPlaneVersion))), }, } @@ -384,10 +392,12 @@ func TestImagesPull(t *testing.T) { func TestMigrate(t *testing.T) { cfg := []byte(dedent.Dedent(fmt.Sprintf(` - # This is intentionally testing an old API version. Sometimes this may be the latest version (if no old configs are supported). - apiVersion: %s - kind: InitConfiguration - `, kubeadmapiv1.SchemeGroupVersion.String()))) + # This is intentionally testing an old API version. Sometimes this may be the latest version (if no old configs are supported). + apiVersion: %s + kind: InitConfiguration + nodeRegistration: + criSocket: %s + `, kubeadmapiv1.SchemeGroupVersion.String(), constants.UnknownCRISocket))) configFile, cleanup := tempConfig(t, cfg) defer cleanup() diff --git a/cmd/kubeadm/app/cmd/init_test.go b/cmd/kubeadm/app/cmd/init_test.go index 9ce458a31e4..91846d92faa 100644 --- a/cmd/kubeadm/app/cmd/init_test.go +++ b/cmd/kubeadm/app/cmd/init_test.go @@ -81,7 +81,7 @@ func TestNewInitData(t *testing.T) { }{ // Init data passed using flags { - name: "pass without any flag (use defaults)", + name: "pass without any flag except the cri socket (use defaults)", }, { name: "fail if unknown feature gates flag are passed", @@ -190,6 +190,15 @@ func TestNewInitData(t *testing.T) { initOptions := newInitOptions() cmd := newCmdInit(nil, initOptions) + // set the cri socket here, otherwise the testcase might fail if is run on the node with multiple + // cri endpoints configured, the failure caused by this is normally not an expected failure. + if tc.flags == nil { + tc.flags = make(map[string]string) + } + // set `cri-socket` only if `CfgPath` is not set + if _, okay := tc.flags[options.CfgPath]; !okay { + tc.flags[options.NodeCRISocket] = constants.UnknownCRISocket + } // sets cmd flags (that will be reflected on the init options) for f, v := range tc.flags { cmd.Flags().Set(f, v) diff --git a/cmd/kubeadm/app/cmd/join_test.go b/cmd/kubeadm/app/cmd/join_test.go index b6d547ad5fe..2487193d42b 100644 --- a/cmd/kubeadm/app/cmd/join_test.go +++ b/cmd/kubeadm/app/cmd/join_test.go @@ -35,6 +35,7 @@ import ( kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" + "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" ) @@ -319,6 +320,15 @@ func TestNewJoinData(t *testing.T) { klog.LogToStderr(false) defer klog.LogToStderr(true) + // set the cri socket here, otherwise the testcase might fail if is run on the node with multiple + // cri endpoints configured, the failure caused by this is normally not an expected failure. + if tc.flags == nil { + tc.flags = make(map[string]string) + } + // set `cri-socket` only if `CfgPath` is not set + if _, okay := tc.flags[options.CfgPath]; !okay { + tc.flags[options.NodeCRISocket] = constants.UnknownCRISocket + } // sets cmd flags (that will be reflected on the join options) for f, v := range tc.flags { cmd.Flags().Set(f, v) diff --git a/cmd/kubeadm/app/cmd/kubeconfig_test.go b/cmd/kubeadm/app/cmd/kubeconfig_test.go index 2b067d24ecb..1f3c8fb639a 100644 --- a/cmd/kubeadm/app/cmd/kubeconfig_test.go +++ b/cmd/kubeadm/app/cmd/kubeconfig_test.go @@ -45,6 +45,9 @@ func generateTestKubeadmConfig(dir, id, certDir, clusterName string) (string, er AdvertiseAddress: "1.2.3.4", BindPort: 1234, }, + NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{ + CRISocket: kubeadmconstants.UnknownCRISocket, + }, } clusterCfg := kubeadmapiv1.ClusterConfiguration{ TypeMeta: metav1.TypeMeta{ diff --git a/cmd/kubeadm/app/cmd/token_test.go b/cmd/kubeadm/app/cmd/token_test.go index 71d75fee1a2..5e3e31dbf77 100644 --- a/cmd/kubeadm/app/cmd/token_test.go +++ b/cmd/kubeadm/app/cmd/token_test.go @@ -36,6 +36,7 @@ import ( outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme" outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" + "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/util/output" ) @@ -172,6 +173,9 @@ func TestRunCreateToken(t *testing.T) { Groups: tc.extraGroups, }, }, + NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{ + CRISocket: constants.UnknownCRISocket, + }, } err = RunCreateToken(&buf, fakeClient, "", cfg, tc.printJoin, "", "") diff --git a/cmd/kubeadm/app/cmd/upgrade/diff_test.go b/cmd/kubeadm/app/cmd/upgrade/diff_test.go index 0e83b8a55fa..ca90c05bd82 100644 --- a/cmd/kubeadm/app/cmd/upgrade/diff_test.go +++ b/cmd/kubeadm/app/cmd/upgrade/diff_test.go @@ -46,9 +46,15 @@ func TestRunDiff(t *testing.T) { currentVersion := "v" + constants.CurrentKubernetesVersion.String() // create a temporary file with valid ClusterConfiguration - testUpgradeDiffConfigContents := []byte(fmt.Sprintf("apiVersion: %s\n"+ - "kind: ClusterConfiguration\n"+ - "kubernetesVersion: %s", kubeadmapiv1.SchemeGroupVersion.String(), currentVersion)) + testUpgradeDiffConfigContents := []byte(fmt.Sprintf(` +apiVersion: %s +kind: InitConfiguration +nodeRegistration: + criSocket: %s +--- +apiVersion: %[1]s +kind: ClusterConfiguration +kubernetesVersion: %[3]s`, kubeadmapiv1.SchemeGroupVersion.String(), constants.UnknownCRISocket, currentVersion)) testUpgradeDiffConfig, err := createTestRunDiffFile(testUpgradeDiffConfigContents) if err != nil { t.Fatal(err) diff --git a/cmd/kubeadm/app/phases/upgrade/staticpods_test.go b/cmd/kubeadm/app/phases/upgrade/staticpods_test.go index 986d11df6f1..b3f79d9b1c3 100644 --- a/cmd/kubeadm/app/phases/upgrade/staticpods_test.go +++ b/cmd/kubeadm/app/phases/upgrade/staticpods_test.go @@ -61,7 +61,7 @@ apiVersion: %s kind: InitConfiguration nodeRegistration: name: foo - criSocket: "" + criSocket: %s localAPIEndpoint: advertiseAddress: 192.168.2.2 bindPort: 6443 @@ -86,7 +86,7 @@ networking: dnsDomain: cluster.local podSubnet: "" serviceSubnet: 10.96.0.0/12 -`, kubeadmapiv1.SchemeGroupVersion.String()) +`, kubeadmapiv1.SchemeGroupVersion.String(), constants.UnknownCRISocket) // fakeWaiter is a fake apiclient.Waiter that returns errors it was initialized with type fakeWaiter struct { diff --git a/cmd/kubeadm/app/preflight/checks_test.go b/cmd/kubeadm/app/preflight/checks_test.go index c13e262268c..52c1a125f6d 100644 --- a/cmd/kubeadm/app/preflight/checks_test.go +++ b/cmd/kubeadm/app/preflight/checks_test.go @@ -1070,6 +1070,9 @@ func TestJoinIPCheck(t *testing.T) { t.Skip("not a privileged user") } internalcfg, err := configutil.DefaultedJoinConfiguration(&kubeadmapiv1.JoinConfiguration{ + NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{ + CRISocket: constants.UnknownCRISocket, + }, Discovery: kubeadmapiv1.Discovery{ BootstrapToken: &kubeadmapiv1.BootstrapTokenDiscovery{ Token: configutil.PlaceholderToken.Token.String(), diff --git a/cmd/kubeadm/app/util/config/cluster_test.go b/cmd/kubeadm/app/util/config/cluster_test.go index 9232aa5e0e5..0fcd93963e0 100644 --- a/cmd/kubeadm/app/util/config/cluster_test.go +++ b/cmd/kubeadm/app/util/config/cluster_test.go @@ -49,7 +49,9 @@ var cfgFiles = map[string][]byte{ "InitConfiguration_v1beta3": []byte(fmt.Sprintf(` apiVersion: %s kind: InitConfiguration -`, kubeadmapiv1.SchemeGroupVersion.String())), +nodeRegistration: + criSocket: %s +`, kubeadmapiv1.SchemeGroupVersion.String(), kubeadmconstants.UnknownCRISocket)), "ClusterConfiguration_v1beta3": []byte(fmt.Sprintf(` apiVersion: %s kind: ClusterConfiguration diff --git a/cmd/kubeadm/app/util/config/initconfiguration_test.go b/cmd/kubeadm/app/util/config/initconfiguration_test.go index 4676c515f4b..bc7156097df 100644 --- a/cmd/kubeadm/app/util/config/initconfiguration_test.go +++ b/cmd/kubeadm/app/util/config/initconfiguration_test.go @@ -18,6 +18,7 @@ package config import ( "bytes" + "fmt" "os" "path/filepath" "testing" @@ -26,11 +27,19 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/yaml" + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) func TestLoadInitConfigurationFromFile(t *testing.T) { + certDir := "/tmp/foo" + clusterCfg := []byte(fmt.Sprintf(` +apiVersion: %s +kind: ClusterConfiguration +certificatesDir: %s +kubernetesVersion: %s`, kubeadmapiv1.SchemeGroupVersion.String(), certDir, constants.MinimumControlPlaneVersion.String())) + // Create temp folder for the test case tmpdir, err := os.MkdirTemp("", "") if err != nil { @@ -43,14 +52,23 @@ func TestLoadInitConfigurationFromFile(t *testing.T) { name string fileContents []byte expectErr bool + validate func(*testing.T, *kubeadm.InitConfiguration) }{ { name: "v1beta3.partial1", fileContents: cfgFiles["InitConfiguration_v1beta3"], }, { - name: "v1beta3.partial2", - fileContents: cfgFiles["ClusterConfiguration_v1beta3"], + name: "v1beta3.partial2", + fileContents: bytes.Join([][]byte{ + cfgFiles["InitConfiguration_v1beta3"], + clusterCfg, + }, []byte(constants.YAMLDocumentSeparator)), + validate: func(t *testing.T, cfg *kubeadm.InitConfiguration) { + if cfg.ClusterConfiguration.CertificatesDir != certDir { + t.Errorf("CertificatesDir from ClusterConfiguration holds the wrong value, Expected: %v. Actual: %v", certDir, cfg.ClusterConfiguration.CertificatesDir) + } + }, }, { name: "v1beta3.full", @@ -87,6 +105,10 @@ func TestLoadInitConfigurationFromFile(t *testing.T) { t.Error("Unexpected nil return value") } } + // exec additional validation on the returned value + if rt.validate != nil { + rt.validate(t, obj) + } }) } } @@ -104,6 +126,9 @@ func TestDefaultTaintsMarshaling(t *testing.T) { APIVersion: kubeadmapiv1.SchemeGroupVersion.String(), Kind: constants.InitConfigurationKind, }, + NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{ + CRISocket: constants.UnknownCRISocket, + }, }, expectedTaintCnt: 1, }, @@ -114,7 +139,9 @@ func TestDefaultTaintsMarshaling(t *testing.T) { APIVersion: kubeadmapiv1.SchemeGroupVersion.String(), Kind: constants.InitConfigurationKind, }, - NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{}, + NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{ + CRISocket: constants.UnknownCRISocket, + }, }, expectedTaintCnt: 1, }, @@ -126,7 +153,8 @@ func TestDefaultTaintsMarshaling(t *testing.T) { Kind: constants.InitConfigurationKind, }, NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{ - Taints: []v1.Taint{}, + Taints: []v1.Taint{}, + CRISocket: constants.UnknownCRISocket, }, }, expectedTaintCnt: 0, @@ -143,6 +171,7 @@ func TestDefaultTaintsMarshaling(t *testing.T) { {Key: "taint1"}, {Key: "taint2"}, }, + CRISocket: constants.UnknownCRISocket, }, }, expectedTaintCnt: 2, diff --git a/cmd/kubeadm/app/util/config/joinconfiguration_test.go b/cmd/kubeadm/app/util/config/joinconfiguration_test.go index cdc0677d782..1b61929439f 100644 --- a/cmd/kubeadm/app/util/config/joinconfiguration_test.go +++ b/cmd/kubeadm/app/util/config/joinconfiguration_test.go @@ -56,6 +56,8 @@ func TestLoadJoinConfigurationFromFile(t *testing.T) { apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration caCertPath: /etc/kubernetes/pki/ca.crt + nodeRegistration: + criSocket: "unix:///var/run/unknown.sock" discovery: bootstrapToken: apiServerEndpoint: kube-apiserver:6443