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 | 185 ++++++++++++++++++++++++++++----------------- 1 files changed, 115 insertions(+), 70 deletions(-) diff --git a/src/main/main.go b/src/main/main.go index 11f948f..e3e8f81 100644 --- a/src/main/main.go +++ b/src/main/main.go @@ -15,6 +15,8 @@ "k8s.io/client-go/tools/clientcmd" "basic.com/aps/aps_deploy.git/src/k8s" + + "github.com/spf13/viper" ) var ( @@ -24,17 +26,8 @@ namespaces = []string{"guangsheng", "geruimi", "tongsheng"} ) -type Node struct { - ClusterName string `json:"clusterName"` - Roles []string `json:"roles"` - IP string `json:"ip"` - SSHUsername string `json:"sshUsername"` - SSHPassword string `json:"sshPassword"` - SSHPort int `json:"sshPort"` -} - -func rancher_install_test() { - nodes := []Node{ +func rancher_install_test(node rancher.Node) { + /* nodes := []Node{ { Roles: []string{"etcd", "controlplane", "worker"}, IP: "192.168.20.189", @@ -57,10 +50,10 @@ SSHPort: 22, }, // Add more nodes here if needed - } + }*/ //install rancher on master node - err := rancher.InstallDockerAndRancher(nodes[0].IP, nodes[0].SSHUsername, nodes[0].SSHPassword, nodes[0].SSHPort) + err := rancher.InstallDockerAndRancher(node.IP, node.SSHUsername, node.SSHPassword, node.SSHPort) if err != nil { log.Fatalf("Failed to install Rancher: %v", err) } @@ -68,35 +61,7 @@ os.Exit(0) } -func cluster_test() { - clusterName := "kubernetus" - nodes := []Node{ - { - ClusterName: clusterName, - Roles: []string{"etcd", "controlplane", "worker"}, - IP: "192.168.20.189", - SSHUsername: "basic", - SSHPassword: "123", - SSHPort: 22, - }, - { - ClusterName: clusterName, - Roles: []string{"worker"}, - IP: "192.168.20.10", - SSHUsername: "basic", - SSHPassword: "123", - SSHPort: 22, - }, - { - ClusterName: clusterName, - Roles: []string{"worker"}, - IP: "192.168.20.115", - SSHUsername: "basic", - SSHPassword: "alien123", - SSHPort: 22, - }, - // Add more nodes here if needed - } +func cluster_test(clusterName string, rancherClusterConfig rancher.RancherClusterConfig) { // Create the cluster // Rancher configuration @@ -105,21 +70,19 @@ BearerToken: "token-nnrsc:w68zdt8s47fnpjd5xqdl5hhzpz4j2d56kt5nx49nsswcbpdzc28kh5", }*/ - rancherConfig := rancher.RancherConfig{ - RancherURL: "https://192.168.20.189:8443", - BearerToken: "token-t4cdf:h7zhmbvbzdvd9mmjw8zmt8rh4m7rl5gtqpqljlhl9tlr2z26j9lf4l", - } - + fmt.Println(rancherClusterConfig) + fmt.Println(rancherClusterConfig.RancherURL) + fmt.Println(rancherClusterConfig.BearerToken) // Deploy clusterId - clusterID, err := cluster.GetClusterID(rancherConfig.RancherURL, rancherConfig.BearerToken, clusterName) + clusterID, err := cluster.GetClusterID(rancherClusterConfig.RancherURL, rancherClusterConfig.BearerToken, clusterName) if err != nil { - log.Fatal(err) - err = cluster.CreateCluster(rancherConfig, clusterName) + 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(rancherConfig.RancherURL, rancherConfig.BearerToken, clusterName) + clusterID, err = cluster.GetClusterID(rancherClusterConfig.RancherURL, rancherClusterConfig.BearerToken, clusterName) if err != nil { log.Fatal(err) } @@ -127,13 +90,13 @@ fmt.Println(clusterID) // Deploy nodeCommand - nodeCommand, err := cluster.GetNodeCommand(rancherConfig.RancherURL, rancherConfig.BearerToken, clusterID) + nodeCommand, err := cluster.GetNodeCommand(rancherClusterConfig.RancherURL, rancherClusterConfig.BearerToken, clusterID) if err != nil { log.Fatal(err) } fmt.Println(nodeCommand) - for _, node := range nodes { + for _, node := range rancherClusterConfig.Nodes { //Deploy Docker on each node err = util.InstallDocker(node.IP, node.SSHUsername, node.SSHPassword, node.SSHPort) if err != nil { @@ -191,30 +154,67 @@ 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 := k8s.CreateDeploymentAndService(clientset, *createNamespace, *createDeployment, *createService) + err = k8s.CreateDeploymentAndService(clientset, *createNamespace, *createDeployment, *createService) if err != nil { panic(err) } @@ -229,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 := k8s.DeleteResources(clientset, *deleteNamespace, *deleteDeployment, *deleteService) + err = k8s.DeleteResources(clientset, *deleteNamespace, *deleteDeployment, *deleteService) if err != nil { panic(err) } @@ -245,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") // 鍒涘缓娴嬭瘯 @@ -284,11 +314,26 @@ } if clusterCmd.Parsed() { - cluster_test() - } + // 鍒濆鍖栭厤缃В鏋愬簱 + viper.SetConfigName("config") + viper.SetConfigType("yaml") + viper.AddConfigPath("./config") - if rancherInstallCmd.Parsed() { - rancher_install_test() + // 璇诲彇閰嶇疆鏂囦欢 + 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