Files
oc-k8s/internal/helm.go

124 lines
3.2 KiB
Go
Raw Normal View History

2026-01-07 16:56:27 +01:00
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)
2026-01-08 21:15:34 +01:00
oc-k8s delete helm [env_folder] [release] [namespace]
env_folder - Helm config folder (required, default: .)
2026-01-07 16:56:27 +01:00
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 {
2026-01-08 21:15:34 +01:00
tmp := "./opencloud-chart"
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
fmt.Println(err)
return err
}
defer os.RemoveAll(tmp)
ExtractTrees("assets", tmp)
2026-01-07 16:56:27 +01:00
folder := "."
release := "dev"
namespace := "dev"
if len(args) > 0 {
folder = args[0]
}
2026-01-08 21:15:34 +01:00
clusterName := "opencloud"
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
clusterName, _ = utils.Extract(string(b), "clusterName")
}
2026-01-07 16:56:27 +01:00
if len(args) > 1 {
release = args[1]
}
if len(args) > 2 {
namespace = args[2]
}
2026-01-08 21:15:34 +01:00
if err := utils.Exec("helm dependency update " + tmp); err != nil {
2026-01-07 16:56:27 +01:00
return err
}
2026-01-08 21:15:34 +01:00
for name, repo := range utils.ExtractRepo() {
utils.Exec("helm repo add " + name + " " + repo)
}
if err := utils.Exec("helm dependency build " + tmp); err != nil {
2026-01-07 16:56:27 +01:00
return err
}
utils.Exec("kubectl delete sc longhorn-nor1")
2026-01-08 21:15:34 +01:00
if err := utils.Exec("helm install " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml --debug"); err != nil {
2026-01-07 16:56:27 +01:00
return err
}
2026-01-08 21:15:34 +01:00
utils.Exec("kind get kubeconfig --name " + clusterName + " > ./deployed_config")
2026-01-07 16:56:27 +01:00
utils.Exec("kind export logs ./kind-logs")
return nil
}
func Upgrade_Helm(args ...string) error {
2026-01-08 21:15:34 +01:00
tmp := "./opencloud-chart"
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
fmt.Println(err)
return err
}
defer os.RemoveAll(tmp)
ExtractTrees("assets", tmp)
2026-01-07 16:56:27 +01:00
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]
}
2026-01-08 21:15:34 +01:00
return utils.Exec("helm upgrade " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml")
2026-01-07 16:56:27 +01:00
}