From c8739481ad9bd1956931de6ea176b1c40ca4b23b Mon Sep 17 00:00:00 2001 From: Dennis Marttinen Date: Wed, 28 Jun 2023 17:27:45 +0300 Subject: [PATCH] Control mounting of `/etc/updatedb.conf` with `JUICEFS_MODIFY_UPDATEDB` --- cmd/node.go | 11 +++++++++ pkg/config/config.go | 11 +++++---- pkg/juicefs/mount/builder/common.go | 33 ++++++++++++++++++--------- pkg/juicefs/mount/builder/pod_test.go | 4 ++-- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/cmd/node.go b/cmd/node.go index 51b4c82a9a..668d0034f7 100644 --- a/cmd/node.go +++ b/cmd/node.go @@ -21,6 +21,7 @@ import ( "fmt" "net/http" "os" + "strconv" "time" "k8s.io/klog" @@ -42,12 +43,22 @@ func parseNodeConfig() { return } config.FormatInPod = formatInPod + + if modifyUpdateDB := os.Getenv("JUICEFS_MODIFY_UPDATEDB"); modifyUpdateDB != "" { + if mountUpdateDBCfg, err := strconv.ParseBool(modifyUpdateDB); err == nil { + config.MountUpdateDBCfg = mountUpdateDBCfg + } else { + klog.Errorf("cannot parse JUICEFS_MODIFY_UPDATEDB: %v", err) + } + } + config.NodeName = os.Getenv("NODE_NAME") config.Namespace = os.Getenv("JUICEFS_MOUNT_NAMESPACE") config.PodName = os.Getenv("POD_NAME") config.MountPointPath = os.Getenv("JUICEFS_MOUNT_PATH") config.JFSConfigPath = os.Getenv("JUICEFS_CONFIG_PATH") config.MountLabels = os.Getenv("JUICEFS_MOUNT_LABELS") + config.HostIp = os.Getenv("HOST_IP") config.KubeletPort = os.Getenv("KUBELET_PORT") jfsMountPriorityName := os.Getenv("JUICEFS_MOUNT_PRIORITY_NAME") diff --git a/pkg/config/config.go b/pkg/config/config.go index a2df104c89..0cb33de882 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -26,11 +26,12 @@ import ( ) var ( - ByProcess = false // csi driver runs juicefs in process or not - FormatInPod = false // put format/auth in pod (only in k8s) - Provisioner = false // provisioner in controller - MountManager = false // manage mount pod in controller (only in k8s) - Webhook = false // inject juicefs client as sidecar in pod (only in k8s) + ByProcess = false // csi driver runs juicefs in process or not + FormatInPod = false // put format/auth in pod (only in k8s) + Provisioner = false // provisioner in controller + MountManager = false // manage mount pod in controller (only in k8s) + Webhook = false // inject juicefs client as sidecar in pod (only in k8s) + MountUpdateDBCfg = true // mount updatedb.cfg in the mount pods NodeName = "" Namespace = "" diff --git a/pkg/juicefs/mount/builder/common.go b/pkg/juicefs/mount/builder/common.go index 9348b73acd..b62699b828 100644 --- a/pkg/juicefs/mount/builder/common.go +++ b/pkg/juicefs/mount/builder/common.go @@ -31,6 +31,7 @@ const ( JfsDirName = "jfs-dir" JfsRootDirName = "jfs-root-dir" UpdateDBDirName = "updatedb" + UpdateDBCfgFile = "/etc/updatedb.conf" ) type Builder struct { @@ -92,15 +93,20 @@ func (r *Builder) getVolumes() []corev1.Volume { Path: config.MountPointPath, Type: &dir, }, - }}, { - Name: UpdateDBDirName, - VolumeSource: corev1.VolumeSource{ - HostPath: &corev1.HostPathVolumeSource{ - Path: "/etc/updatedb.conf", - Type: &file, - }, }, }} + + if config.MountUpdateDBCfg { + volumes = append(volumes, corev1.Volume{ + Name: UpdateDBDirName, + VolumeSource: corev1.VolumeSource{ + HostPath: &corev1.HostPathVolumeSource{ + Path: UpdateDBCfgFile, + Type: &file, + }, + }}) + } + if r.jfsSetting.FormatCmd != "" { // initContainer will generate xx.conf to share with mount container volumes = append(volumes, corev1.Volume{ @@ -157,11 +163,16 @@ func (r *Builder) getVolumeMounts() []corev1.VolumeMount { Name: JfsDirName, MountPath: config.PodMountBase, MountPropagation: &mp, - }, { - Name: UpdateDBDirName, - MountPath: "/etc/updatedb.conf", - MountPropagation: &mp, }} + + if config.MountUpdateDBCfg { + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: UpdateDBDirName, + MountPath: UpdateDBCfgFile, + MountPropagation: &mp, + }) + } + if r.jfsSetting.FormatCmd != "" { // initContainer will generate xx.conf to share with mount container volumeMounts = append(volumeMounts, corev1.VolumeMount{ diff --git a/pkg/juicefs/mount/builder/pod_test.go b/pkg/juicefs/mount/builder/pod_test.go index 8221fa4481..40916f4a6a 100644 --- a/pkg/juicefs/mount/builder/pod_test.go +++ b/pkg/juicefs/mount/builder/pod_test.go @@ -78,7 +78,7 @@ var ( Name: UpdateDBDirName, VolumeSource: corev1.VolumeSource{ HostPath: &corev1.HostPathVolumeSource{ - Path: "/etc/updatedb.conf", + Path: UpdateDBCfgFile, Type: &file, }, }, @@ -107,7 +107,7 @@ var ( }, { Name: UpdateDBDirName, - MountPath: "/etc/updatedb.conf", + MountPath: UpdateDBCfgFile, MountPropagation: &mp, }, },