From 694739cdbc206517247c205f44cec2f345147f78 Mon Sep 17 00:00:00 2001
From: cheliequan <liequanche@126.com>
Date: 星期二, 06 六月 2023 12:14:45 +0800
Subject: [PATCH] 更新代码

---
 src/k8s/create.go |  103 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 84 insertions(+), 19 deletions(-)

diff --git a/src/k8s/create.go b/src/k8s/create.go
index 3be6767..c57539f 100644
--- a/src/k8s/create.go
+++ b/src/k8s/create.go
@@ -7,6 +7,7 @@
 	"log"
 	"math/rand"
 	"path/filepath"
+	"strconv"
 
 	"basic.com/aps/aps_deploy.git/src/util"
 	appsv1 "k8s.io/api/apps/v1"
@@ -21,6 +22,7 @@
 var (
 	replicas      int32 = 3
 	port          int32 = 9081
+	rpcPort       int32 = 9091
 	namespaces          = []string{"guangsheng", "geruimi", "tongsheng"}
 	usedNodePorts       = make(map[int32]bool)
 )
@@ -127,14 +129,22 @@
 		return err
 	}
 
-	// 鍒涘缓 Deployment
-	err = createDeployment(clientset, namespace, deploymentName)
+	nodePort1, nodePort2, err := getTwoNodePort(clientset)
 	if err != nil {
 		return err
 	}
 
+	port1 := fmt.Sprint(nodePort1)
+	port2 := fmt.Sprint(nodePort2)
+	// 鍒涘缓 Deployment
+	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
 	}
@@ -165,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{
@@ -201,13 +211,39 @@
 					Containers: []apiv1.Container{
 						{
 							Name:  namespace,
-							Image: "192.168.20.119/apsserver/apsserver:v0.2",
+							Image: "harbor.smartai.com/apsserver/apsserver:v0.1",
 							Env: []apiv1.EnvVar{
 								{
-									Name:  "NODE_ID",
+									Name:  "GRPC_PORT",
+									Value: port1,
+								},
+								// todo 浠庨厤缃枃浠朵腑璇诲彇
+								{
+									Name:  "DB_HOST",
+									Value: "172.20.11.128",
+								},
+								{
+									Name:  "GRPC_HOST",
+									Value: "0.0.0.0",
+								},
+								{
+									Name:  "DB_NAME",
 									Value: namespace,
 								},
+								{
+									Name:  "DB_PORT",
+									Value: strconv.Itoa(3306),
+								},
+								{
+									Name:  "DB_USER",
+									Value: namespace,
+								},
+								{
+									Name:  "DB_PASSWD",
+									Value: namespace + "@Basic2023",
+								},
 							},
+							ImagePullPolicy: apiv1.PullAlways, // 璁剧疆闀滃儚鎷夊彇绛栫暐涓� Always
 						},
 					},
 				},
@@ -229,13 +265,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{
@@ -250,25 +281,54 @@
 				{
 					Name:       "http",
 					Protocol:   apiv1.ProtocolTCP,
-					Port:       port,
-					TargetPort: intstr.FromInt(int(port)),
-					NodePort:   nodePort,
+					Port:       port,                      // 闆嗙兢鍐呴儴璁块棶绔彛
+					TargetPort: intstr.FromInt(int(port)), // 瀹瑰櫒瀵瑰绔彛
+					NodePort:   port1,                     // 澶栭儴璁块棶绔彛
+				},
+				{
+					Name:       "tcp",
+					Protocol:   apiv1.ProtocolTCP,
+					Port:       rpcPort,
+					TargetPort: intstr.FromInt(int(rpcPort)),
+					NodePort:   port2,
 				},
 			},
 		},
 	}
 
-	_, err = clientset.CoreV1().Services(namespace).Create(context.TODO(), service, metav1.CreateOptions{})
+	_, err := clientset.CoreV1().Services(namespace).Create(context.TODO(), service, metav1.CreateOptions{})
+
 	if err != nil {
 		if !errors.IsAlreadyExists(err) {
 			return fmt.Errorf("failed to create Service: %v", err)
 		}
-		fmt.Printf("Service %s already exists in Namespace %s\n", serviceName, namespace)
+		log.Printf("Service %s already exists in Namespace %s\n", serviceName, namespace)
 	} else {
-		fmt.Printf("Service %s created in Namespace %s\n", serviceName, namespace)
+		log.Printf("Service %s created in Namespace %s\n", serviceName, namespace)
 	}
 
 	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
@@ -336,7 +396,12 @@
 
 	// 鑾峰彇绗竴涓鍙g殑 NodePort
 	if len(svc.Spec.Ports) > 0 {
-		return svc.Spec.Ports[0].NodePort, nil
+		for _, p := range svc.Spec.Ports {
+			// return tcp port
+			if p.Name == "http" {
+				return p.NodePort, nil
+			}
+		}
 	}
 
 	return 0, fmt.Errorf("no ports defined for Service %s", serviceName)

--
Gitblit v1.8.0