From 064c0874e5fd041c4641ef873d1bf72ac98a184d Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期五, 02 六月 2023 16:26:09 +0800 Subject: [PATCH] Merge branch 'master' into fly_develop --- src/main/main.go | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 212 insertions(+), 23 deletions(-) diff --git a/src/main/main.go b/src/main/main.go index 747ff8d..e3e8f81 100644 --- a/src/main/main.go +++ b/src/main/main.go @@ -8,14 +8,15 @@ "path/filepath" "time" - "../create" - "../delete" + "basic.com/aps/aps_deploy.git/src/cluster" + "basic.com/aps/aps_deploy.git/src/rancher" + "basic.com/aps/aps_deploy.git/src/util" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" - "basic.com/aps/aps_deploy.git/src/create" - "basic.com/aps/aps_deploy.git/src/delete" - "basic.com/aps/aps_deploy.git/src/util" + "basic.com/aps/aps_deploy.git/src/k8s" + + "github.com/spf13/viper" ) var ( @@ -25,10 +26,104 @@ namespaces = []string{"guangsheng", "geruimi", "tongsheng"} ) +func rancher_install_test(node rancher.Node) { + /* nodes := []Node{ + { + Roles: []string{"etcd", "controlplane", "worker"}, + IP: "192.168.20.189", + SSHUsername: "basic", + SSHPassword: "123", + SSHPort: 22, + }, + { + Roles: []string{"worker"}, + IP: "192.168.20.10", + SSHUsername: "basic", + SSHPassword: "123", + SSHPort: 22, + }, + { + Roles: []string{"worker"}, + IP: "192.168.20.115", + SSHUsername: "basic", + SSHPassword: "alien123", + SSHPort: 22, + }, + // Add more nodes here if needed + }*/ + + //install rancher on master node + err := rancher.InstallDockerAndRancher(node.IP, node.SSHUsername, node.SSHPassword, node.SSHPort) + if err != nil { + log.Fatalf("Failed to install Rancher: %v", err) + } + + os.Exit(0) +} + +func cluster_test(clusterName string, rancherClusterConfig rancher.RancherClusterConfig) { + + // Create the cluster + // Rancher configuration + /*rancherConfig := RancherConfig{ + RancherURL: "https://192.168.20.119:8443", + BearerToken: "token-nnrsc:w68zdt8s47fnpjd5xqdl5hhzpz4j2d56kt5nx49nsswcbpdzc28kh5", + }*/ + + fmt.Println(rancherClusterConfig) + fmt.Println(rancherClusterConfig.RancherURL) + fmt.Println(rancherClusterConfig.BearerToken) + // Deploy clusterId + clusterID, err := cluster.GetClusterID(rancherClusterConfig.RancherURL, rancherClusterConfig.BearerToken, clusterName) + if err != nil { + fmt.Printf("Cluster not found: %s %v\n", clusterName, err) + err = cluster.CreateCluster(rancherClusterConfig, clusterName) + if err != nil { + log.Fatalf("Failed to create cluster: %v", err) + } + fmt.Printf("Cluster created: %s\n", clusterName) + clusterID, err = cluster.GetClusterID(rancherClusterConfig.RancherURL, rancherClusterConfig.BearerToken, clusterName) + if err != nil { + log.Fatal(err) + } + } + fmt.Println(clusterID) + + // Deploy nodeCommand + nodeCommand, err := cluster.GetNodeCommand(rancherClusterConfig.RancherURL, rancherClusterConfig.BearerToken, clusterID) + if err != nil { + log.Fatal(err) + } + fmt.Println(nodeCommand) + + for _, node := range rancherClusterConfig.Nodes { + //Deploy Docker on each node + err = util.InstallDocker(node.IP, node.SSHUsername, node.SSHPassword, node.SSHPort) + if err != nil { + log.Fatal(err) + } + + // Deploy Kubectl on each node + err = util.InstallKubectl(node.IP, node.SSHUsername, node.SSHPassword, node.SSHPort) + if err != nil { + log.Fatal(err) + } + + // Deploy Kubernetes roles on each node + err = cluster.Deployk8sRolesOnNode(node.IP, node.SSHUsername, node.SSHPassword, nodeCommand, node.SSHPort, node.Roles) + if err != nil { + log.Fatal(err) + } + } + os.Exit(0) +} + func main() { createCmd := flag.NewFlagSet("create", flag.ExitOnError) deleteCmd := flag.NewFlagSet("delete", flag.ExitOnError) testCmd := flag.NewFlagSet("test", flag.ExitOnError) + clusterCmd := flag.NewFlagSet("cluster", flag.ExitOnError) + rancherInstallCmd := flag.NewFlagSet("rancher_install", flag.ExitOnError) createNamespace := createCmd.String("ns", "", "Namespace name") createDeployment := createCmd.String("deployment", "", "Deployment name") @@ -39,7 +134,7 @@ deleteService := deleteCmd.String("service", "", "Service name") if len(os.Args) < 2 { - fmt.Println("create/delete/test command is required") + fmt.Println("create/delete/test/cluster/rancher_install command is required") os.Exit(1) } @@ -50,40 +145,81 @@ deleteCmd.Parse(os.Args[2:]) case "test": testCmd.Parse(os.Args[2:]) + case "cluster": + clusterCmd.Parse(os.Args[2:]) + case "rancher_install": + rancherInstallCmd.Parse(os.Args[2:]) default: flag.PrintDefaults() os.Exit(1) } - // 閰嶇疆 Kubernetes 闆嗙兢鐨� kubeconfig 璺緞 - kubeconfig := flag.String("kubeconfig", filepath.Join(util.homeDir(), ".kube", "config"), "kubeconfig file") - flag.Parse() + if rancherInstallCmd.Parsed() { + //// 鍒濆鍖栭厤缃В鏋愬簱 + //viper.SetConfigName("config") + //viper.SetConfigType("yaml") + //viper.AddConfigPath("./config") + // + //// 璇诲彇閰嶇疆鏂囦欢 + //err := viper.ReadInConfig() + //if err != nil { + // log.Fatalf("Failed to read config file: %v", err) + //} - // 鍒涘缓 Kubernetes 瀹㈡埛绔� - config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) - if err != nil { - panic(err.Error()) - } + // 瑙f瀽閰嶇疆鏂囦欢涓殑瀛楁 + var rancherClusterConfig rancher.RancherClusterConfig + //err = viper.Unmarshal(&rancherClusterConfig) + //if err != nil { + // log.Fatalf("Failed to unmarshal config: %v", err) + //} - clientset, err := kubernetes.NewForConfig(config) - if err != nil { - panic(err.Error()) + rancherClusterConfig.Nodes = make([]rancher.Node, 3) + rancherClusterConfig.Nodes[0] = rancher.Node{ + Roles: []string{"worker"}, + IP: "192.168.20.189", + SSHUsername: "basic", + SSHPassword: "123", + SSHPort: 22, + } + + rancher_install_test(rancherClusterConfig.Nodes[0]) + os.Exit(1) } // 鎵ц create 鍛戒护 if createCmd.Parsed() { + + // 閰嶇疆 Kubernetes 闆嗙兢鐨� kubeconfig 璺緞 + kubeconfig := flag.String("kubeconfig", filepath.Join(util.HomeDir(), ".kube", "config"), "kubeconfig file") + flag.Parse() + + fmt.Println(&kubeconfig) + + // 鍒涘缓 Kubernetes 瀹㈡埛绔� + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) + if err != nil { + panic(err.Error()) + } + + fmt.Println(&config) + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err.Error()) + } + if *createNamespace == "" || *createDeployment == "" || *createService == "" { fmt.Println("Namespace, Deployment, and Service names are required") createCmd.PrintDefaults() os.Exit(1) } - err := create.CreateDeploymentAndService(clientset, *createNamespace, *createDeployment, *createService) + err = k8s.CreateDeploymentAndService(clientset, *createNamespace, *createDeployment, *createService) if err != nil { panic(err) } - nodeport, err := create.GetServiceNodePort(clientset, *createNamespace, *createService) + nodeport, err := k8s.GetServiceNodePort(clientset, *createNamespace, *createService) if err != nil { panic(err) } @@ -93,13 +229,28 @@ // 鎵ц delete 鍛戒护 if deleteCmd.Parsed() { + // 閰嶇疆 Kubernetes 闆嗙兢鐨� kubeconfig 璺緞 + kubeconfig := flag.String("kubeconfig", filepath.Join(util.HomeDir(), ".kube", "config"), "kubeconfig file") + flag.Parse() + + // 鍒涘缓 Kubernetes 瀹㈡埛绔� + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) + if err != nil { + panic(err.Error()) + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err.Error()) + } + if *deleteNamespace == "" || *deleteDeployment == "" || *deleteService == "" { fmt.Println("Namespace, Deployment, and Service names are required") deleteCmd.PrintDefaults() os.Exit(1) } - err := delete.DeleteResources(clientset, *deleteNamespace, *deleteDeployment, *deleteService) + err = k8s.DeleteResources(clientset, *deleteNamespace, *deleteDeployment, *deleteService) if err != nil { panic(err) } @@ -109,6 +260,21 @@ // 鎵ц鍒涘缓鍜屽垹闄ゆ祴璇� if testCmd.Parsed() { + // 閰嶇疆 Kubernetes 闆嗙兢鐨� kubeconfig 璺緞 + kubeconfig := flag.String("kubeconfig", filepath.Join(util.HomeDir(), ".kube", "config"), "kubeconfig file") + flag.Parse() + + // 鍒涘缓 Kubernetes 瀹㈡埛绔� + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) + if err != nil { + panic(err.Error()) + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err.Error()) + } + fmt.Println("\033[97;40mRunning create and delete tests...\033[0m") // 鍒涘缓娴嬭瘯 @@ -116,11 +282,11 @@ for _, ns := range namespaces { deploymentName := ns serviceName := ns - err := create.CreateDeploymentAndService(clientset, ns, deploymentName, serviceName) + err := k8s.CreateDeploymentAndService(clientset, ns, deploymentName, serviceName) if err != nil { log.Printf("\033[97;41mFailed to create resources in namespace %s: %v\033[0m\n", ns, err) } else { - nodeport, err := create.GetServiceNodePort(clientset, ns, ns) + nodeport, err := k8s.GetServiceNodePort(clientset, ns, ns) if err != nil { panic(err) } @@ -138,7 +304,7 @@ // 鍒犻櫎澶氫釜 Namespace 涓嬬殑鐩稿悓鍚嶇О鐨� Deployment 鍜� Service for _, ns := range namespaces { - err = delete.DeleteResources(clientset, ns, ns, ns) + err = k8s.DeleteResources(clientset, ns, ns, ns) if err != nil { panic(err) } @@ -147,4 +313,27 @@ fmt.Println("Resources deleted.") } + if clusterCmd.Parsed() { + // 鍒濆鍖栭厤缃В鏋愬簱 + viper.SetConfigName("config") + viper.SetConfigType("yaml") + viper.AddConfigPath("./config") + + // 璇诲彇閰嶇疆鏂囦欢 + err := viper.ReadInConfig() + if err != nil { + log.Fatalf("Failed to read config file: %v", err) + } + + // 瑙f瀽閰嶇疆鏂囦欢涓殑瀛楁 + var rancherClusterConfig rancher.RancherClusterConfig + err = viper.Unmarshal(&rancherClusterConfig) + if err != nil { + log.Fatalf("Failed to unmarshal config: %v", err) + } + clusterName := "kubernetus" + fmt.Println(rancherClusterConfig) + cluster_test(clusterName, rancherClusterConfig) + } + } -- Gitblit v1.8.0