package internal import ( "fmt" "oc-k8s/utils" "os" ) func Help_Helm() { fmt.Println(` Helm commands: oc-k8s helm install - Install Helm create - Install a helm release for the given environment (default: dev) delete - Uninstall a helm release for the given environment (default: dev) help - Show this help message Usage: oc-k8s install helm oc-k8s create helm [env_folder] [release] [namespace] env_folder - Helm config folder (required, default: .) release - environnement selected (default: dev) namespace - namespace selected (default: dev) oc-k8s upgrade helm [env_folder] [release] [namespace] env_folder - Helm config folder (required, default: .) release - environnement selected (default: dev) namespace - namespace selected (default: dev) oc-k8s delete helm [release] [namespace] release - environnement selected (default: dev) namespace - namespace selected (default: dev) oc-k8sh help helm`) } func Install_Helm() error { utils.Exec("curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash") utils.Exec("helm version") return nil } func Delete_Helm(args ...string) error { env := "dev" namespace := "dev" if len(args) > 0 { env = args[0] } if len(args) > 1 { namespace = args[1] } utils.Exec("helm uninstall " + env + " -n " + namespace) utils.Exec("kubectl delete namespace " + namespace + " &") return nil } func Create_Helm(args ...string) error { folder := "." release := "dev" namespace := "dev" if len(args) > 0 { folder = args[0] } Delete_Cluster(args[1:]...) if len(args) > 1 { release = args[1] } if len(args) > 2 { namespace = args[2] } clusterName := "opencloud" if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil { clusterName, _ = utils.Extract(string(b), "clusterName") } if err := utils.Exec("helm dependency update"); err != nil { return err } if err := utils.Exec("helm dependency build"); err != nil { return err } utils.Exec("kubectl delete sc longhorn-nor1") utils.Exec("sudo ulimit -n 1000000") if err := utils.Exec("helm install " + release + " " + clusterName + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml --debug"); err != nil { return err } utils.Exec("kind get kubeconfig --name opencloud > ./deployed_config") utils.Exec("kind export logs ./kind-logs") return nil } func Upgrade_Helm(args ...string) error { folder := "." release := "dev" namespace := "dev" if len(args) > 0 { folder = args[0] } Delete_Cluster(args[1:]...) if len(args) > 1 { release = args[1] } if len(args) > 2 { namespace = args[2] } clusterName := "opencloud" if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil { clusterName, _ = utils.Extract(string(b), "clusterName") } return utils.Exec("helm upgrade " + release + " " + clusterName + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml") }