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