From dabbe4c25eae2c46f861ab4fc23b837534a94603 Mon Sep 17 00:00:00 2001 From: cheliequan <liequanche@126.com> Date: 星期三, 31 五月 2023 19:32:14 +0800 Subject: [PATCH] k8s部署时通过环境变量传递数据库连接字符串 --- src/main/main.go | 170 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 100 insertions(+), 70 deletions(-) diff --git a/src/main/main.go b/src/main/main.go index 11f948f..db889ec 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,52 @@ 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") - // 鍒涘缓 Kubernetes 瀹㈡埛绔� - config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) - if err != nil { - panic(err.Error()) - } + // 璇诲彇閰嶇疆鏂囦欢 + err := viper.ReadInConfig() + if err != nil { + log.Fatalf("Failed to read config file: %v", err) + } - clientset, err := kubernetes.NewForConfig(config) - 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) + } + 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() + + // 鍒涘缓 Kubernetes 瀹㈡埛绔� + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) + if err != nil { + panic(err.Error()) + } + + 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 +214,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 +245,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 +299,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