zhangqian
2024-01-11 4b717f9a0ed341163f4891f3007f990f658262d3
src/k8s/create_wms.go
@@ -23,7 +23,7 @@
      return err
   }
   config.HttpPort, err = getRandomNodePort(config.Client)
   config.HttpNodePort, err = getRandomNodePort(config.Client)
   if err != nil {
      return err
   }
@@ -47,17 +47,8 @@
func (c *WmsCreate) 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:  "DB_HOST",
         Value: config.DBHost,
      },
      {
         Name:  "DB_NAME",
@@ -77,28 +68,6 @@
      },
   }
   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,
@@ -169,11 +138,12 @@
// createService 创建指定的 Service
func (c *WmsCreate) CreateService(config Config) error {
   fmt.Println("\033[1;37;40mCreating Service:", config.ServiceName, "\033[0m")
   httpServiceName := config.ServiceName + "-http"
   fmt.Println("\033[1;37;40mCreating Service:", httpServiceName, "\033[0m")
   service := &apiv1.Service{
      ObjectMeta: metav1.ObjectMeta{
         Name: config.ServiceName,
         Name: httpServiceName,
      },
      Spec: apiv1.ServiceSpec{
         Selector: map[string]string{
@@ -184,9 +154,9 @@
            {
               Name:       "http",
               Protocol:   apiv1.ProtocolTCP,
               Port:       port,                      // 集群内部访问端口
               TargetPort: intstr.FromInt(int(port)), // 容器对外端口
               NodePort:   config.HttpPort,           // 外部访问端口
               Port:       config.HttpPort,                      // 集群内部访问端口
               TargetPort: intstr.FromInt(int(config.HttpPort)), // 容器对外端口
               NodePort:   config.HttpNodePort,                  // 外部访问端口
            },
         },
         SessionAffinity: apiv1.ServiceAffinityClientIP,
@@ -199,6 +169,38 @@
      if !errors.IsAlreadyExists(err) {
         return fmt.Errorf("failed to create Service: %v", err)
      }
      log.Printf("Service %s already exists in Namespace %s\n", httpServiceName, config.NameSpace)
   } else {
      log.Printf("Service %s created in Namespace %s\n", httpServiceName, config.NameSpace)
   }
   clusterIPService := &apiv1.Service{
      ObjectMeta: metav1.ObjectMeta{
         Name: config.ServiceName,
      },
      Spec: apiv1.ServiceSpec{
         Selector: map[string]string{
            "cid": c.GetCid(config),
         },
         Type: apiv1.ServiceTypeClusterIP,
         Ports: []apiv1.ServicePort{
            {
               Name:       "grpc",
               Protocol:   apiv1.ProtocolTCP,
               Port:       config.RpcPort,                      // 集群内部访问端口
               TargetPort: intstr.FromInt(int(config.RpcPort)), // 容器对外端口
            },
         },
         SessionAffinity: apiv1.ServiceAffinityClientIP,
      },
   }
   _, err = config.Client.CoreV1().Services(config.NameSpace).Create(context.TODO(), clusterIPService, metav1.CreateOptions{})
   if err != nil {
      if !errors.IsAlreadyExists(err) {
         return fmt.Errorf("failed to create clusterIP Service: %v", err)
      }
      log.Printf("Service %s already exists in Namespace %s\n", config.ServiceName, config.NameSpace)
   } else {
      log.Printf("Service %s created in Namespace %s\n", config.ServiceName, config.NameSpace)