From 9827f73e922a5eba800bf7782a73b8eacb749c24 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期一, 05 六月 2023 18:20:38 +0800
Subject: [PATCH] fix k8s create createDeployment add port

---
 src/k8s/create.go |   53 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/src/k8s/create.go b/src/k8s/create.go
index 84db8a8..aa5884d 100644
--- a/src/k8s/create.go
+++ b/src/k8s/create.go
@@ -129,15 +129,22 @@
 		return err
 	}
 
+	nodePort1, nodePort2, err := getTwoNodePort(clientset)
+	if err != nil {
+		return err
+	}
+
+	port1 := fmt.Sprint(nodePort1)
+	port2 := fmt.Sprint(nodePort2)
 	// 鍒涘缓 Deployment
-	err = createDeployment(clientset, namespace, deploymentName)
+	err = createDeployment(clientset, namespace, deploymentName, port1, port2)
 	if err != nil {
 		return err
 	}
 
 	log.Printf("Waiting for Deployment %s to be ready...\n", deploymentName)
 	// 鍒涘缓 Service
-	err = createService(clientset, namespace, serviceName)
+	err = createService(clientset, namespace, serviceName, nodePort1, nodePort2)
 	if err != nil {
 		return err
 	}
@@ -168,7 +175,7 @@
 	return nil
 }
 
-func createDeployment(clientset *kubernetes.Clientset, namespace, deploymentName string) error {
+func createDeployment(clientset *kubernetes.Clientset, namespace, deploymentName, port1, port2 string) error {
 	fmt.Println("\033[1;37;40mCreating Deployment:", deploymentName, "\033[0m")
 
 	deployment := &appsv1.Deployment{
@@ -206,6 +213,14 @@
 							Name:  namespace,
 							Image: "192.168.20.119/apsserver/apsserver:v0.5",
 							Env: []apiv1.EnvVar{
+								{
+									Name:  "NODE_PORT1",
+									Value: port1,
+								},
+								{
+									Name:  "NODE_PORT2",
+									Value: port2,
+								},
 								{
 									Name:  "DB_HOST",
 									Value: "localhost",
@@ -249,13 +264,8 @@
 }
 
 // createService 鍒涘缓鎸囧畾鐨� Service
-func createService(clientset *kubernetes.Clientset, namespace, serviceName string) error {
+func createService(clientset *kubernetes.Clientset, namespace, serviceName string, port1, port2 int32) error {
 	fmt.Println("\033[1;37;40mCreating Service:", serviceName, "\033[0m")
-
-	//nodePort, err := getRandomNodePort(clientset)
-	//if err != nil {
-	//	return err
-	//}
 
 	service := &apiv1.Service{
 		ObjectMeta: metav1.ObjectMeta{
@@ -272,14 +282,14 @@
 					Protocol:   apiv1.ProtocolTCP,
 					Port:       port,                      // 闆嗙兢鍐呴儴璁块棶绔彛
 					TargetPort: intstr.FromInt(int(port)), // 瀹瑰櫒瀵瑰绔彛
-					NodePort:   0,                         // 澶栭儴璁块棶绔彛
+					NodePort:   port1,                     // 澶栭儴璁块棶绔彛
 				},
 				{
 					Name:       "tcp",
 					Protocol:   apiv1.ProtocolTCP,
 					Port:       rpcPort,
 					TargetPort: intstr.FromInt(int(rpcPort)),
-					NodePort:   0,
+					NodePort:   port2,
 				},
 			},
 		},
@@ -299,6 +309,27 @@
 	return nil
 }
 
+func getTwoNodePort(client *kubernetes.Clientset) (nodePort1, nodePort2 int32, err error) {
+	nodePort1, err = getRandomNodePort(client)
+	if err != nil {
+		return 0, 0, err
+	}
+
+	for {
+		nodePort2, err = getRandomNodePort(client)
+		if err != nil {
+			return 0, 0, err
+		}
+
+		if nodePort2 != nodePort1 {
+			break
+		}
+
+	}
+
+	return nodePort1, nodePort2, nil
+}
+
 // getRandomNodePort 鑾峰彇涓�涓湭浣跨敤鐨勯殢鏈� NodePort
 func getRandomNodePort(clientset *kubernetes.Clientset) (int32, error) {
 	// 鑾峰彇涓�涓殢鏈虹殑 NodePort

--
Gitblit v1.8.0