Loading go-apps/meepctl/cmd/deploy.go +29 −42 Original line number Diff line number Diff line Loading @@ -153,50 +153,37 @@ func deployRun(cmd *cobra.Command, args []string) { } func deployEnsureStorage(cobraCmd *cobra.Command) { // Local storage structure cmd := exec.Command("mkdir", "-p", deployData.workdir) cmd.Args = append(cmd.Args, deployData.workdir+"/user") cmd.Args = append(cmd.Args, deployData.workdir+"/user/values") cmd.Args = append(cmd.Args, deployData.workdir+"/certs") cmd.Args = append(cmd.Args, deployData.workdir+"/couchdb") cmd.Args = append(cmd.Args, deployData.workdir+"/docker-registry") cmd.Args = append(cmd.Args, deployData.workdir+"/grafana") cmd.Args = append(cmd.Args, deployData.workdir+"/influxdb") cmd.Args = append(cmd.Args, deployData.workdir+"/tmp") cmd.Args = append(cmd.Args, deployData.workdir+"/virt-engine") cmd.Args = append(cmd.Args, deployData.workdir+"/virt-engine/user-charts") cmd.Args = append(cmd.Args, deployData.workdir+"/omt") cmd.Args = append(cmd.Args, deployData.workdir+"/postgis") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/server") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/server/prometheus-db") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/alertmanager") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/alertmanager/alertmanager-db") _, err := utils.ExecuteCmd(cmd, cobraCmd) if err != nil { err = errors.New("Error creating path [" + deployData.workdir + "]") fmt.Println(err) } // Set ownership of specific platform-level directories to the configured uid and gid. // We intentionally exclude application-specific directories (e.g., grafana, couchdb) // as they manage their own ownership via Helm chart securityContext (fsGroup/runAsUser). uid := utils.RepoCfg.GetString("repo.deployment.permissions.uid") gid := utils.RepoCfg.GetString("repo.deployment.permissions.gid") if uid != "" && gid != "" { platformDirs := []string{ // Local storage structure paths dirs := []string{ deployData.workdir, deployData.workdir + "/user", deployData.workdir + "/tmp", deployData.workdir + "/user/values", deployData.workdir + "/certs", deployData.workdir + "/couchdb", deployData.workdir + "/docker-registry", deployData.workdir + "/grafana", deployData.workdir + "/influxdb", deployData.workdir + "/tmp", deployData.workdir + "/virt-engine", } for _, dir := range platformDirs { chownCmd := exec.Command("chown", "-R", uid+":"+gid, dir) _, err = utils.ExecuteCmd(chownCmd, cobraCmd) deployData.workdir + "/virt-engine/user-charts", deployData.workdir + "/omt", deployData.workdir + "/postgis", deployData.workdir + "/prometheus", deployData.workdir + "/prometheus/server", deployData.workdir + "/prometheus/server/prometheus-db", deployData.workdir + "/prometheus/alertmanager", deployData.workdir + "/prometheus/alertmanager/alertmanager-db", } // Create directories with 0777 permissions. // This is the Kubernetes-native approach: it ensures that regardless of the user // running meepctl (or if run with sudo), the directories are permissive enough // for the Kubernetes kubelet to successfully apply the chart's securityContext.fsGroup // without encountering "permission denied" errors. for _, dir := range dirs { err := os.MkdirAll(dir, 0777) if err != nil { fmt.Println("Warning: Error setting ownership for path [" + dir + "]. You may need to run this command with elevated privileges (e.g., sudo).") } fmt.Println("Error creating path [" + dir + "]:", err) } } } Loading Loading
go-apps/meepctl/cmd/deploy.go +29 −42 Original line number Diff line number Diff line Loading @@ -153,50 +153,37 @@ func deployRun(cmd *cobra.Command, args []string) { } func deployEnsureStorage(cobraCmd *cobra.Command) { // Local storage structure cmd := exec.Command("mkdir", "-p", deployData.workdir) cmd.Args = append(cmd.Args, deployData.workdir+"/user") cmd.Args = append(cmd.Args, deployData.workdir+"/user/values") cmd.Args = append(cmd.Args, deployData.workdir+"/certs") cmd.Args = append(cmd.Args, deployData.workdir+"/couchdb") cmd.Args = append(cmd.Args, deployData.workdir+"/docker-registry") cmd.Args = append(cmd.Args, deployData.workdir+"/grafana") cmd.Args = append(cmd.Args, deployData.workdir+"/influxdb") cmd.Args = append(cmd.Args, deployData.workdir+"/tmp") cmd.Args = append(cmd.Args, deployData.workdir+"/virt-engine") cmd.Args = append(cmd.Args, deployData.workdir+"/virt-engine/user-charts") cmd.Args = append(cmd.Args, deployData.workdir+"/omt") cmd.Args = append(cmd.Args, deployData.workdir+"/postgis") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/server") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/server/prometheus-db") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/alertmanager") cmd.Args = append(cmd.Args, deployData.workdir+"/prometheus/alertmanager/alertmanager-db") _, err := utils.ExecuteCmd(cmd, cobraCmd) if err != nil { err = errors.New("Error creating path [" + deployData.workdir + "]") fmt.Println(err) } // Set ownership of specific platform-level directories to the configured uid and gid. // We intentionally exclude application-specific directories (e.g., grafana, couchdb) // as they manage their own ownership via Helm chart securityContext (fsGroup/runAsUser). uid := utils.RepoCfg.GetString("repo.deployment.permissions.uid") gid := utils.RepoCfg.GetString("repo.deployment.permissions.gid") if uid != "" && gid != "" { platformDirs := []string{ // Local storage structure paths dirs := []string{ deployData.workdir, deployData.workdir + "/user", deployData.workdir + "/tmp", deployData.workdir + "/user/values", deployData.workdir + "/certs", deployData.workdir + "/couchdb", deployData.workdir + "/docker-registry", deployData.workdir + "/grafana", deployData.workdir + "/influxdb", deployData.workdir + "/tmp", deployData.workdir + "/virt-engine", } for _, dir := range platformDirs { chownCmd := exec.Command("chown", "-R", uid+":"+gid, dir) _, err = utils.ExecuteCmd(chownCmd, cobraCmd) deployData.workdir + "/virt-engine/user-charts", deployData.workdir + "/omt", deployData.workdir + "/postgis", deployData.workdir + "/prometheus", deployData.workdir + "/prometheus/server", deployData.workdir + "/prometheus/server/prometheus-db", deployData.workdir + "/prometheus/alertmanager", deployData.workdir + "/prometheus/alertmanager/alertmanager-db", } // Create directories with 0777 permissions. // This is the Kubernetes-native approach: it ensures that regardless of the user // running meepctl (or if run with sudo), the directories are permissive enough // for the Kubernetes kubelet to successfully apply the chart's securityContext.fsGroup // without encountering "permission denied" errors. for _, dir := range dirs { err := os.MkdirAll(dir, 0777) if err != nil { fmt.Println("Warning: Error setting ownership for path [" + dir + "]. You may need to run this command with elevated privileges (e.g., sudo).") } fmt.Println("Error creating path [" + dir + "]:", err) } } } Loading