From 794b44835f98df719f2b1186b2ad90a11f9a35b0 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期四, 08 六月 2023 20:28:11 +0800
Subject: [PATCH] fix
---
src/main/main.go | 245 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 222 insertions(+), 23 deletions(-)
diff --git a/src/main/main.go b/src/main/main.go
index 747ff8d..cb4f545 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,86 @@
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(k8s.Config{
+ Client: clientset,
+ NameSpace: *createNamespace,
+ DeploymentName: *createDeployment,
+ ServiceName: *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 +234,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 +265,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 +287,16 @@
for _, ns := range namespaces {
deploymentName := ns
serviceName := ns
- err := create.CreateDeploymentAndService(clientset, ns, deploymentName, serviceName)
+ err := k8s.CreateDeploymentAndService(k8s.Config{
+ Client: clientset,
+ NameSpace: ns,
+ DeploymentName: deploymentName,
+ ServiceName: 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 +314,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 +323,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