command
This commit is contained in:
115
internal/cluster.go
Normal file
115
internal/cluster.go
Normal file
@@ -0,0 +1,115 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"oc-k8s/utils"
|
||||
"os"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func Help_Cluster() {
|
||||
fmt.Println(`
|
||||
Cluster commands: oc-k8s <action> cluster [env_folder] [release]
|
||||
create - Create a new kind cluster named 'opencloud'
|
||||
delete - Delete the kind cluster named 'opencloud'
|
||||
help - Show this help message
|
||||
|
||||
Usage:
|
||||
oc-k8s create cluster [env_folder] [release]
|
||||
env_folder - Helm config folder (required, default: .)
|
||||
release - Release values name (required, default: dev)
|
||||
oc-k8s delete cluster [env_folder] [release]
|
||||
env_folder - Helm config folder (required, default: .)
|
||||
release - Release values name (required, default: dev)
|
||||
oc-k8s help cluster `)
|
||||
}
|
||||
|
||||
func Delete_Cluster(args ...string) error {
|
||||
folder := "."
|
||||
env := "dev"
|
||||
if len(args) > 0 {
|
||||
folder = args[0]
|
||||
}
|
||||
if len(args) > 1 {
|
||||
env = args[1]
|
||||
}
|
||||
clusterName := "opencloud"
|
||||
if b, err := os.ReadFile(folder + "/" + env + "-values.yaml"); err == nil {
|
||||
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||
}
|
||||
utils.Exec("kind delete cluster --name " + clusterName)
|
||||
return nil
|
||||
}
|
||||
|
||||
func Create_Cluster(args ...string) error {
|
||||
Delete_Cluster(args...)
|
||||
folder := "."
|
||||
env := "dev"
|
||||
if len(args) > 0 {
|
||||
folder = args[0]
|
||||
}
|
||||
if len(args) > 1 {
|
||||
env = args[1]
|
||||
}
|
||||
clusterName := "opencloud"
|
||||
if b, err := os.ReadFile(folder + "/" + env + "-values.yaml"); err == nil {
|
||||
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||
}
|
||||
utils.Exec("kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.9.0/deploy/longhorn.yaml ")
|
||||
|
||||
kindConfig := `
|
||||
kind: Cluster
|
||||
apiVersion: kind.x-k8s.io/v1alpha4
|
||||
nodes:
|
||||
- role: control-plane
|
||||
kubeadmConfigPatches:
|
||||
- |
|
||||
kind: InitConfiguration
|
||||
nodeRegistration:
|
||||
kubeletExtraArgs:
|
||||
node-labels: "ingress-ready=true"
|
||||
extraPortMappings:
|
||||
- containerPort: 30950
|
||||
hostPort: 80
|
||||
protocol: TCP
|
||||
- containerPort: 30951
|
||||
hostPort: 443
|
||||
protocol: TCP
|
||||
containerdConfigPatches:
|
||||
- |-
|
||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
|
||||
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
||||
`
|
||||
|
||||
cmd := exec.Command("kind", "create", "cluster", "--name", clusterName, "--config=-")
|
||||
cmd.Stdin = bytes.NewBufferString(kindConfig)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
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 {
|
||||
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
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user