116 lines
4.0 KiB
Go
116 lines
4.0 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 -n [namespace] -r [release] -f [folder]
|
|
folder - Helm config folder (required, default: .)
|
|
release - environnement selected (default: dev)
|
|
namespace - namespace selected (default: dev)
|
|
oc-k8s upgrade helm -n [namespace] -r [release] -f [folder]
|
|
folder - Helm config folder (required, default: .)
|
|
release - environnement selected (default: dev)
|
|
namespace - namespace selected (default: dev)
|
|
oc-k8s delete helm -n [namespace] -r [release] -f [folder]
|
|
folder - Helm config folder (required, default: .)
|
|
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(release string, namespace string) error {
|
|
utils.Exec("helm uninstall " + release + " -n " + namespace)
|
|
utils.Exec("kubectl delete namespace " + namespace + " &")
|
|
return nil
|
|
}
|
|
|
|
func Create_Helm(folder string, release string, namespace string) error {
|
|
tmp := "./opencloud-chart"
|
|
utils.Exec("sudo rm -rf " + tmp)
|
|
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
|
fmt.Println(err)
|
|
return err
|
|
}
|
|
ExtractTrees("assets", tmp)
|
|
|
|
clusterName := "opencloud"
|
|
|
|
host := "beta.opencloud.com"
|
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
|
host, _ = utils.Extract(string(b), "host")
|
|
}
|
|
|
|
fmt.Println("set up helm")
|
|
if err := utils.Exec("helm dependency update " + tmp); err != nil {
|
|
return err
|
|
}
|
|
fmt.Println("set up deps")
|
|
for name, repo := range utils.ExtractRepo() {
|
|
utils.Exec("helm repo add " + name + " " + repo)
|
|
}
|
|
if err := utils.Exec("helm dependency build " + tmp); err != nil {
|
|
return err
|
|
}
|
|
utils.Exec("sudo ulimit -n 1000000")
|
|
|
|
utils.Exec("helm repo add jetstack https://charts.jetstack.io")
|
|
utils.Exec("helm repo update")
|
|
|
|
utils.Exec("kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.crds.yaml")
|
|
utils.Exec("helm repo add jetstack https://charts.jetstack.io")
|
|
utils.Exec("helm repo update")
|
|
utils.Exec("helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.14.0")
|
|
|
|
utils.Exec("helm install admiralty oci://public.ecr.aws/admiralty/admiralty --namespace admiralty --create-namespace --version 0.17.0 --wait")
|
|
utils.Exec("helm repo add argo https://argoproj.github.io/argo-helm")
|
|
utils.Exec("helm repo update")
|
|
utils.Exec("helm install argo-workflows argo/argo-workflows --namespace argo --create-namespace")
|
|
|
|
if err := utils.Exec("helm upgrade --install " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml --debug"); err != nil {
|
|
return err
|
|
}
|
|
|
|
utils.Exec("kind get kubeconfig --name " + clusterName + " > ./deployed_config")
|
|
utils.Exec("kind export logs ./kind-logs")
|
|
utils.Exec("sudo rm -rf " + tmp)
|
|
|
|
utils.Exec("sudo sed -i.bak \"/[[:space:]]" + host + "$/d\" /etc/hosts")
|
|
utils.Exec("echo \"$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type==\"InternalIP\")].address}') " + host + "\" | sudo tee -a /etc/hosts > /dev/null")
|
|
|
|
return nil
|
|
}
|
|
|
|
func Upgrade_Helm(folder string, release string, namespace string) error {
|
|
tmp := "./opencloud-chart"
|
|
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
|
fmt.Println(err)
|
|
return err
|
|
}
|
|
defer os.RemoveAll(tmp)
|
|
ExtractTrees("assets", tmp)
|
|
|
|
Delete_Cluster(folder, release)
|
|
|
|
return utils.Exec("helm upgrade " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml")
|
|
}
|