Files
oc-k8s/internal/helm.go
2026-01-07 16:56:27 +01:00

110 lines
2.9 KiB
Go

package internal
import (
"fmt"
"oc-k8s/utils"
"os"
)
func Help_Helm() {
fmt.Println(`
Helm commands: oc-k8s <action> 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")
}