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