From 0e22b2dfe7a24c528fb8ac58ece089bd032f5478 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 26 十二月 2023 17:49:34 +0800
Subject: [PATCH] 支持添加额外的env

---
 src/k8s/create.go |  141 +++++++++++++++++++++++++++-------------------
 1 files changed, 83 insertions(+), 58 deletions(-)

diff --git a/src/k8s/create.go b/src/k8s/create.go
index 89f9b0c..6c4ccc2 100644
--- a/src/k8s/create.go
+++ b/src/k8s/create.go
@@ -31,6 +31,7 @@
 	Client         *kubernetes.Clientset // Kubernetes 瀹㈡埛绔�
 	Image          string                // 闀滃儚鍚嶇О
 	DBHost         string                // 鏁版嵁搴撳湴鍧�
+	DBName         string                //鏁版嵁搴撳悕绉�
 	HttpPort       int32                 // HTTP 绔彛
 	RpcPort        int32                 // RPC 绔彛
 	NameSpace      string                // Namespace
@@ -38,6 +39,7 @@
 	ServiceName    string                // Service 鍚嶇О
 	ALHost         string                // 绠楁硶Host
 	Host           string                // 鏈嶅姟Host
+	NodeID         string                // Nsq鑺傜偣ID
 }
 
 func create_test() {
@@ -58,7 +60,7 @@
 
 	// 鍒涘缓澶氫釜 Namespace 涓嬬殑鐩稿悓鍚嶇О鐨� Deployment 鍜� Service
 	for _, ns := range namespaces {
-		err = CreateDeploymentAndService(Config{Client: clientset, NameSpace: ns, DeploymentName: ns, ServiceName: ns})
+		err = CreateDeploymentAndService(Config{Client: clientset, NameSpace: ns, DeploymentName: ns, ServiceName: ns}, nil)
 		if err != nil {
 			panic(err)
 		}
@@ -127,17 +129,11 @@
 	return nil
 }
 
-func CreateDeploymentAndService(config Config) error {
+func CreateDeploymentAndService(config Config, extendEnvs map[string]string) error {
 	fmt.Println("\033[1;37;40mCreating resources in Namespace:", config.NameSpace, "\033[0m")
 
 	// 妫�娴嬪苟鍒犻櫎宸插瓨鍦ㄧ殑 Deployment 鍜� Service
 	err := CheckAndDeleteResources(config.Client, config.NameSpace, config.DeploymentName, config.ServiceName)
-	if err != nil {
-		return err
-	}
-
-	// 鍒涘缓 Namespace
-	err = createNamespace(config.Client, config.NameSpace)
 	if err != nil {
 		return err
 	}
@@ -148,7 +144,7 @@
 	}
 
 	// 鍒涘缓 Deployment
-	err = createDeployment(config)
+	err = createDeployment(config, extendEnvs)
 	if err != nil {
 		return err
 	}
@@ -163,8 +159,8 @@
 	return nil
 }
 
-// createNamespace 鍒涘缓鎸囧畾鐨� Namespace
-func createNamespace(clientset *kubernetes.Clientset, namespace string) error {
+// CreateNamespace 鍒涘缓鎸囧畾鐨� Namespace
+func CreateNamespace(clientset *kubernetes.Clientset, namespace string) error {
 	log.Printf("Creating Namespace: %s\n", namespace)
 
 	ns := &apiv1.Namespace{
@@ -185,10 +181,82 @@
 
 	return nil
 }
+func createEnv(config Config, pairs map[string]string) []apiv1.EnvVar {
+	envs := []apiv1.EnvVar{
+		{
+			Name:  "GRPC_PORT",
+			Value: fmt.Sprint(config.RpcPort),
+		},
+		{
+			Name: "DB_HOST",
+			ValueFrom: &apiv1.EnvVarSource{
+				FieldRef: &apiv1.ObjectFieldSelector{
+					APIVersion: "v1",
+					FieldPath:  "status.hostIP",
+				},
+			},
+		},
+		{
+			Name: "HOST",
+			ValueFrom: &apiv1.EnvVarSource{
+				FieldRef: &apiv1.ObjectFieldSelector{
+					APIVersion: "v1",
+					FieldPath:  "status.hostIP",
+				},
+			},
+		},
+		{
+			Name:  "DB_NAME",
+			Value: config.DBName,
+		},
+		{
+			Name:  "DB_PORT",
+			Value: strconv.Itoa(6446),
+		},
+		{
+			Name:  "DB_USER",
+			Value: config.NameSpace,
+		},
+		{
+			Name:  "DB_PASSWD",
+			Value: config.NameSpace + "@Basic2023",
+		},
+	}
 
-func createDeployment(config Config) error {
+	if config.ALHost != "" {
+		envs = append(envs, apiv1.EnvVar{
+			Name:  "AL_HOST",
+			Value: config.ALHost,
+		})
+	}
+
+	if config.NodeID != "" {
+		envs = append(envs, apiv1.EnvVar{
+			Name:  "NODE_ID",
+			Value: config.NodeID,
+		})
+	}
+
+	if len(pairs) > 0 {
+		for name, value := range pairs {
+			envs = append(envs, apiv1.EnvVar{
+				Name:  name,
+				Value: value,
+			})
+		}
+	}
+	for name, value := range pairs {
+		envs = append(envs, apiv1.EnvVar{
+			Name:  name,
+			Value: value,
+		})
+	}
+	return envs
+}
+func createDeployment(config Config, extendEnvs map[string]string) error {
 	fmt.Println("\033[1;37;40mCreating Deployment:", config.DeploymentName, "\033[0m")
 
+	envs := createEnv(config, extendEnvs)
 	deployment := &appsv1.Deployment{
 		ObjectMeta: metav1.ObjectMeta{
 			Name: config.DeploymentName,
@@ -221,52 +289,9 @@
 					},
 					Containers: []apiv1.Container{
 						{
-							Name:  config.NameSpace,
-							Image: config.Image,
-							Env: []apiv1.EnvVar{
-								{
-									Name:  "GRPC_PORT",
-									Value: fmt.Sprint(config.RpcPort),
-								},
-								{
-									Name: "DB_HOST",
-									ValueFrom: &apiv1.EnvVarSource{
-										FieldRef: &apiv1.ObjectFieldSelector{
-											APIVersion: "v1",
-											FieldPath:  "status.hostIP",
-										},
-									},
-								},
-								{
-									Name: "HOST",
-									ValueFrom: &apiv1.EnvVarSource{
-										FieldRef: &apiv1.ObjectFieldSelector{
-											APIVersion: "v1",
-											FieldPath:  "status.hostIP",
-										},
-									},
-								},
-								{
-									Name:  "AL_HOST",
-									Value: config.ALHost,
-								},
-								{
-									Name:  "DB_NAME",
-									Value: config.NameSpace,
-								},
-								{
-									Name:  "DB_PORT",
-									Value: strconv.Itoa(6446),
-								},
-								{
-									Name:  "DB_USER",
-									Value: config.NameSpace,
-								},
-								{
-									Name:  "DB_PASSWD",
-									Value: config.NameSpace + "@Basic2023",
-								},
-							},
+							Name:            config.NameSpace,
+							Image:           config.Image,
+							Env:             envs,
 							ImagePullPolicy: apiv1.PullAlways, // 璁剧疆闀滃儚鎷夊彇绛栫暐涓� Always
 						},
 					},

--
Gitblit v1.8.0