One file to rule them all
This commit is contained in:
@@ -39,7 +39,8 @@ func Delete_Cluster(args ...string) error {
|
||||
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||
}
|
||||
utils.Exec("kind delete cluster --name " + clusterName)
|
||||
return nil
|
||||
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||
return utils.Exec("chmod 600 ~/.kube/config")
|
||||
}
|
||||
|
||||
func Create_Cluster(args ...string) error {
|
||||
@@ -93,21 +94,18 @@ containerdConfigPatches:
|
||||
|
||||
fmt.Println("[WARNING] New cluster should be merged into your current config !")
|
||||
|
||||
if err := utils.Exec("kind get kubeconfig --name " + clusterName + " > /tmp/kind-" + clusterName + ".kubeconfig"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := utils.Exec("KUBECONFIG=~/.kube/config:/tmp/kind-" + clusterName + ".kubeconfig kubectl config view --flatten --merge --minify > /tmp/merged-kubeconfig.yaml"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := utils.Exec("sudo mv /tmp/merged-kubeconfig.yaml ~/.kube/config"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := utils.Exec("chmod 600 ~/.kube/config"); err != nil {
|
||||
|
||||
if err := utils.Exec("cp -f /tmp/merged-kubeconfig.yaml ~/.kube/config"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := utils.Exec("kubectl config get-contexts"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := utils.Exec("kubectl config use-context kind-opencloud"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"oc-k8s/utils"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func Help_Func() {
|
||||
@@ -21,9 +27,12 @@ Usage:
|
||||
namespace - namespace selected (default: dev)
|
||||
branch - Git branch to build (default: main)
|
||||
target - make target (default: all)
|
||||
oc-k8s stop`)
|
||||
oc-k8s stop [env_folder] [release] [namespace]
|
||||
env_folder - Helm config folder (required, default: .)
|
||||
release - environnement selected (default: dev)
|
||||
namespace - namespace selected (default: dev)`)
|
||||
Help_Cluster()
|
||||
Help_Services()
|
||||
Help_Service()
|
||||
Help_Helm()
|
||||
Help_Values()
|
||||
Help_K3S()
|
||||
@@ -36,7 +45,7 @@ func Start(args ...string) error {
|
||||
utils.Exec("sudo /etc/init.d/apache2 stop")
|
||||
utils.Exec("sudo nginx -s stop")
|
||||
Create_Cluster(args...)
|
||||
Create_Services(args...)
|
||||
Create_Service(args...)
|
||||
Create_Helm(args...)
|
||||
return nil
|
||||
}
|
||||
@@ -53,3 +62,63 @@ func Install_Func(args ...string) error {
|
||||
Install_Helm()
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExtractTrees(src, dst string) error {
|
||||
for i, fs := range utils.FSS {
|
||||
fmt.Printf("\rExtract temporary Charts: %d/11", i)
|
||||
if err := ExtractTree(fs, "assets", dst); err != nil {
|
||||
continue
|
||||
}
|
||||
}
|
||||
fmt.Print("\n")
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExtractTree(FS embed.FS, src, dst string) error {
|
||||
seen := map[string]bool{}
|
||||
if err := os.MkdirAll(dst, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
entries, err := fs.ReadDir(FS, src)
|
||||
if err != nil {
|
||||
return err // src may not exist in this FS
|
||||
}
|
||||
|
||||
for _, e := range entries {
|
||||
srcPath := path.Join(src, e.Name())
|
||||
dstPath := filepath.Join(dst, e.Name())
|
||||
|
||||
if seen[dstPath] {
|
||||
continue // already copied
|
||||
}
|
||||
|
||||
if e.IsDir() {
|
||||
if err := ExtractTree(FS, srcPath, dstPath); err != nil {
|
||||
continue
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
in, err := FS.Open(srcPath)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
out, err := os.Create(dstPath)
|
||||
if err != nil {
|
||||
in.Close()
|
||||
continue
|
||||
}
|
||||
|
||||
if _, err := io.Copy(out, in); err != nil {
|
||||
in.Close()
|
||||
out.Close()
|
||||
continue
|
||||
}
|
||||
in.Close()
|
||||
out.Close()
|
||||
|
||||
seen[dstPath] = true
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ Usage:
|
||||
env_folder - Helm config folder (required, default: .)
|
||||
release - environnement selected (default: dev)
|
||||
namespace - namespace selected (default: dev)
|
||||
oc-k8s delete helm [release] [namespace]
|
||||
oc-k8s delete helm [env_folder] [release] [namespace]
|
||||
env_folder - Helm config folder (required, default: .)
|
||||
release - environnement selected (default: dev)
|
||||
namespace - namespace selected (default: dev)
|
||||
oc-k8sh help helm`)
|
||||
@@ -51,13 +52,24 @@ func Delete_Helm(args ...string) error {
|
||||
}
|
||||
|
||||
func Create_Helm(args ...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)
|
||||
|
||||
folder := "."
|
||||
release := "dev"
|
||||
namespace := "dev"
|
||||
if len(args) > 0 {
|
||||
folder = args[0]
|
||||
}
|
||||
Delete_Cluster(args[1:]...)
|
||||
clusterName := "opencloud"
|
||||
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||
}
|
||||
|
||||
if len(args) > 1 {
|
||||
release = args[1]
|
||||
@@ -65,28 +77,34 @@ func Create_Helm(args ...string) error {
|
||||
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 {
|
||||
if err := utils.Exec("helm dependency update " + tmp); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := utils.Exec("helm dependency build"); err != nil {
|
||||
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("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 {
|
||||
if err := utils.Exec("helm install " + release + " " + tmp + " -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 get kubeconfig --name " + clusterName + " > ./deployed_config")
|
||||
utils.Exec("kind export logs ./kind-logs")
|
||||
return nil
|
||||
}
|
||||
|
||||
func Upgrade_Helm(args ...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)
|
||||
|
||||
folder := "."
|
||||
release := "dev"
|
||||
namespace := "dev"
|
||||
@@ -101,9 +119,5 @@ func Upgrade_Helm(args ...string) error {
|
||||
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")
|
||||
return utils.Exec("helm upgrade " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml")
|
||||
}
|
||||
|
||||
@@ -18,12 +18,16 @@ Usage:
|
||||
|
||||
func Install_K3S() error {
|
||||
utils.Exec("sudo /usr/local/bin/k3s-uninstall.sh")
|
||||
utils.Exec("sudo rm -rf /etc/rancher /var/lib/rancher ~/.kube")
|
||||
utils.Exec("sudo rm -rf /etc/rancher /var/lib/rancher")
|
||||
if err := utils.Exec("curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644"); err != nil {
|
||||
return err
|
||||
}
|
||||
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||
utils.Exec("chmod 700 /home/mr/.kube")
|
||||
utils.Exec("sudo chmod 600 ~/.kube/config")
|
||||
|
||||
if err := utils.Exec("sudo systemctl status k3s"); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return utils.Exec("chmod 600 ~/.kube/config")
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ Values commands: oc-k8s <action> values
|
||||
help - Show this help message
|
||||
|
||||
Usage:
|
||||
oc-k8s create values [release] [env_folder] [env_file]
|
||||
oc-k8s create values [release] [env_file] [env_folder]
|
||||
release - Release values name (required)
|
||||
env_folder - Helm config folder (optionnal, default: .)
|
||||
env_file - env to map (optionnal)
|
||||
env_folder - Helm config folder (optionnal, default: .)
|
||||
oc-k8s help values `)
|
||||
}
|
||||
|
||||
@@ -33,11 +33,11 @@ func Create_Values(args ...string) error {
|
||||
if len(args) > 0 {
|
||||
release = args[0]
|
||||
}
|
||||
if len(args) > 1 {
|
||||
folder = args[1]
|
||||
}
|
||||
if len(args) > 2 {
|
||||
conf = args[2]
|
||||
folder = args[2]
|
||||
}
|
||||
if len(args) > 1 {
|
||||
conf = args[1]
|
||||
}
|
||||
return generateConfig(conf, release, folder)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user