diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 419abf08335..fb92450a7a7 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -301,7 +301,7 @@ type HostPathMount struct { // Writable controls write access to the volume Writable bool // PathType is the type of the HostPath. - PathType string + PathType v1.HostPathType } // KubeProxy contains elements describing the proxy configuration. diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go index 5eb5eea73a4..c5f8ab9e21f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go @@ -278,6 +278,8 @@ type HostPathMount struct { MountPath string `json:"mountPath"` // Writable controls write access to the volume Writable bool `json:"writable,omitempty"` + // PathType is the type of the HostPath. + PathType v1.HostPathType `json:"pathType,omitempty"` } // KubeProxy contains elements describing the proxy configuration. diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go index d6d56ad086e..818edd4718b 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/zz_generated.conversion.go @@ -23,8 +23,8 @@ package v1alpha1 import ( unsafe "unsafe" - core_v1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + v1 "k8s.io/api/core/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" kubeadm "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" @@ -156,6 +156,7 @@ func autoConvert_v1alpha1_HostPathMount_To_kubeadm_HostPathMount(in *HostPathMou out.HostPath = in.HostPath out.MountPath = in.MountPath out.Writable = in.Writable + out.PathType = v1.HostPathType(in.PathType) return nil } @@ -169,6 +170,7 @@ func autoConvert_kubeadm_HostPathMount_To_v1alpha1_HostPathMount(in *kubeadm.Hos out.HostPath = in.HostPath out.MountPath = in.MountPath out.Writable = in.Writable + out.PathType = v1.HostPathType(in.PathType) return nil } @@ -240,7 +242,7 @@ func autoConvert_v1alpha1_MasterConfiguration_To_kubeadm_MasterConfiguration(in out.NoTaintMaster = in.NoTaintMaster out.PrivilegedPods = in.PrivilegedPods out.Token = in.Token - out.TokenTTL = (*v1.Duration)(unsafe.Pointer(in.TokenTTL)) + out.TokenTTL = (*meta_v1.Duration)(unsafe.Pointer(in.TokenTTL)) out.TokenUsages = *(*[]string)(unsafe.Pointer(&in.TokenUsages)) out.TokenGroups = *(*[]string)(unsafe.Pointer(&in.TokenGroups)) out.CRISocket = in.CRISocket @@ -253,7 +255,7 @@ func autoConvert_v1alpha1_MasterConfiguration_To_kubeadm_MasterConfiguration(in out.APIServerCertSANs = *(*[]string)(unsafe.Pointer(&in.APIServerCertSANs)) out.CertificatesDir = in.CertificatesDir out.ImageRepository = in.ImageRepository - out.ImagePullPolicy = core_v1.PullPolicy(in.ImagePullPolicy) + out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) out.UnifiedControlPlaneImage = in.UnifiedControlPlaneImage if err := Convert_v1alpha1_AuditPolicyConfiguration_To_kubeadm_AuditPolicyConfiguration(&in.AuditPolicyConfiguration, &out.AuditPolicyConfiguration, s); err != nil { return err @@ -291,7 +293,7 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha1_MasterConfiguration(in out.NoTaintMaster = in.NoTaintMaster out.PrivilegedPods = in.PrivilegedPods out.Token = in.Token - out.TokenTTL = (*v1.Duration)(unsafe.Pointer(in.TokenTTL)) + out.TokenTTL = (*meta_v1.Duration)(unsafe.Pointer(in.TokenTTL)) out.TokenUsages = *(*[]string)(unsafe.Pointer(&in.TokenUsages)) out.TokenGroups = *(*[]string)(unsafe.Pointer(&in.TokenGroups)) out.CRISocket = in.CRISocket @@ -303,7 +305,7 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha1_MasterConfiguration(in out.SchedulerExtraVolumes = *(*[]HostPathMount)(unsafe.Pointer(&in.SchedulerExtraVolumes)) out.APIServerCertSANs = *(*[]string)(unsafe.Pointer(&in.APIServerCertSANs)) out.CertificatesDir = in.CertificatesDir - out.ImagePullPolicy = core_v1.PullPolicy(in.ImagePullPolicy) + out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) out.ImageRepository = in.ImageRepository // INFO: in.CIImageRepository opted out of conversion generation out.UnifiedControlPlaneImage = in.UnifiedControlPlaneImage @@ -349,7 +351,7 @@ func autoConvert_v1alpha1_NodeConfiguration_To_kubeadm_NodeConfiguration(in *Nod out.DiscoveryFile = in.DiscoveryFile out.DiscoveryToken = in.DiscoveryToken out.DiscoveryTokenAPIServers = *(*[]string)(unsafe.Pointer(&in.DiscoveryTokenAPIServers)) - out.DiscoveryTimeout = (*v1.Duration)(unsafe.Pointer(in.DiscoveryTimeout)) + out.DiscoveryTimeout = (*meta_v1.Duration)(unsafe.Pointer(in.DiscoveryTimeout)) out.NodeName = in.NodeName out.TLSBootstrapToken = in.TLSBootstrapToken out.Token = in.Token @@ -371,7 +373,7 @@ func autoConvert_kubeadm_NodeConfiguration_To_v1alpha1_NodeConfiguration(in *kub out.DiscoveryFile = in.DiscoveryFile out.DiscoveryToken = in.DiscoveryToken out.DiscoveryTokenAPIServers = *(*[]string)(unsafe.Pointer(&in.DiscoveryTokenAPIServers)) - out.DiscoveryTimeout = (*v1.Duration)(unsafe.Pointer(in.DiscoveryTimeout)) + out.DiscoveryTimeout = (*meta_v1.Duration)(unsafe.Pointer(in.DiscoveryTimeout)) out.NodeName = in.NodeName out.TLSBootstrapToken = in.TLSBootstrapToken out.Token = in.Token diff --git a/cmd/kubeadm/app/phases/controlplane/volumes.go b/cmd/kubeadm/app/phases/controlplane/volumes.go index 489e1b95037..144961540fd 100644 --- a/cmd/kubeadm/app/phases/controlplane/volumes.go +++ b/cmd/kubeadm/app/phases/controlplane/volumes.go @@ -158,7 +158,7 @@ func (c *controlPlaneHostPathMounts) AddHostPathMounts(component string, vols [] func (c *controlPlaneHostPathMounts) AddExtraHostPathMounts(component string, extraVols []kubeadmapi.HostPathMount) { for _, extraVol := range extraVols { fmt.Printf("[controlplane] Adding extra host path mount %q to %q\n", extraVol.Name, component) - hostPathType := v1.HostPathType(extraVol.PathType) + hostPathType := extraVol.PathType c.NewHostPathMount(component, extraVol.Name, extraVol.HostPath, extraVol.MountPath, !extraVol.Writable, &hostPathType) } } diff --git a/cmd/kubeadm/app/phases/controlplane/volumes_test.go b/cmd/kubeadm/app/phases/controlplane/volumes_test.go index 585d3e2a78f..99992f97057 100644 --- a/cmd/kubeadm/app/phases/controlplane/volumes_test.go +++ b/cmd/kubeadm/app/phases/controlplane/volumes_test.go @@ -615,19 +615,35 @@ func TestAddExtraHostPathMounts(t *testing.T) { mounts.AddHostPathMounts("component", vols, volMounts) hostPathMounts := []kubeadmapi.HostPathMount{ { - Name: "foo", - HostPath: "/tmp/qux", - MountPath: "/tmp/qux", + Name: "foo-0", + HostPath: "/tmp/qux-0", + MountPath: "/tmp/qux-0", Writable: false, + PathType: v1.HostPathFile, }, { - Name: "bar", - HostPath: "/tmp/asd", - MountPath: "/tmp/asd", + Name: "bar-0", + HostPath: "/tmp/asd-0", + MountPath: "/tmp/asd-0", Writable: true, + PathType: v1.HostPathDirectory, + }, + { + Name: "foo-1", + HostPath: "/tmp/qux-1", + MountPath: "/tmp/qux-1", + Writable: false, + PathType: v1.HostPathFileOrCreate, + }, + { + Name: "bar-1", + HostPath: "/tmp/asd-1", + MountPath: "/tmp/asd-1", + Writable: true, + PathType: v1.HostPathDirectoryOrCreate, }, } - mounts.AddExtraHostPathMounts("component", hostPathMounts, &hostPathDirectoryOrCreate) + mounts.AddExtraHostPathMounts("component", hostPathMounts) for _, hostMount := range hostPathMounts { volumeName := hostMount.Name if _, ok := mounts.volumes["component"][volumeName]; !ok { @@ -643,6 +659,9 @@ func TestAddExtraHostPathMounts(t *testing.T) { if _, ok := mounts.volumeMounts["component"][volumeName]; !ok { t.Errorf("Expected to find volume mount %q", volumeName) } + if *vol.HostPath.Type != v1.HostPathType(hostMount.PathType) { + t.Errorf("Expected to host path type %q", hostMount.PathType) + } volMount, _ := mounts.volumeMounts["component"][volumeName] if volMount.Name != volumeName { t.Errorf("Expected volume mount name %q", volumeName)