Browse Source

add the serviceAccount of deployment (#1543)

Co-authored-by: 977231903@qq.com <>
Mikael 3 years ago
parent
commit
a078f5d764
4 changed files with 41 additions and 33 deletions
  1. 4 0
      tools/goctl/goctl.go
  2. 2 1
      tools/goctl/kube/deployment.go
  3. 3 2
      tools/goctl/kube/job.go
  4. 32 30
      tools/goctl/kube/kube.go

+ 4 - 0
tools/goctl/goctl.go

@@ -408,6 +408,10 @@ var commands = []cli.Command{
 							"if they are, --remote has higher priority\n\tThe git repo directory must be consistent with the " +
 							"https://github.com/zeromicro/go-zero-template directory structure",
 					},
+					cli.StringFlag{
+						Name:     "serviceAccount",
+						Usage:    "the serviceAccount of deployment",
+					},
 				},
 				Action: kube.DeploymentCommand,
 			},

+ 2 - 1
tools/goctl/kube/deployment.go

@@ -17,7 +17,8 @@ spec:
     metadata:
       labels:
         app: {{.Name}}
-    spec:
+    spec:{{if .ServiceAccount}}
+      serviceAccountName: {{.ServiceAccount}}{{end}}
       containers:
       - name: {{.Name}}
         image: {{.Image}}

+ 3 - 2
tools/goctl/kube/job.go

@@ -11,8 +11,9 @@ spec:
   jobTemplate:
     spec:
       template:
-        spec:
-          containers:
+        spec:{{if .ServiceAccount}}
+          serviceAccountName: {{.ServiceAccount}}{{end}}
+	      {{end}}containers:
           - name: {{.Name}}
             image: # todo image url
             resources:

+ 32 - 30
tools/goctl/kube/kube.go

@@ -21,21 +21,22 @@ const (
 
 // Deployment describes the k8s deployment yaml
 type Deployment struct {
-	Name        string
-	Namespace   string
-	Image       string
-	Secret      string
-	Replicas    int
-	Revisions   int
-	Port        int
-	NodePort    int
-	UseNodePort bool
-	RequestCpu  int
-	RequestMem  int
-	LimitCpu    int
-	LimitMem    int
-	MinReplicas int
-	MaxReplicas int
+	Name           string
+	Namespace      string
+	Image          string
+	Secret         string
+	Replicas       int
+	Revisions      int
+	Port           int
+	NodePort       int
+	UseNodePort    bool
+	RequestCpu     int
+	RequestMem     int
+	LimitCpu       int
+	LimitMem       int
+	MinReplicas    int
+	MaxReplicas    int
+	ServiceAccount string
 }
 
 // DeploymentCommand is used to generate the kubernetes deployment yaml files.
@@ -72,21 +73,22 @@ func DeploymentCommand(c *cli.Context) error {
 
 	t := template.Must(template.New("deploymentTemplate").Parse(text))
 	err = t.Execute(out, Deployment{
-		Name:        c.String("name"),
-		Namespace:   c.String("namespace"),
-		Image:       c.String("image"),
-		Secret:      c.String("secret"),
-		Replicas:    c.Int("replicas"),
-		Revisions:   c.Int("revisions"),
-		Port:        c.Int("port"),
-		NodePort:    nodePort,
-		UseNodePort: nodePort > 0,
-		RequestCpu:  c.Int("requestCpu"),
-		RequestMem:  c.Int("requestMem"),
-		LimitCpu:    c.Int("limitCpu"),
-		LimitMem:    c.Int("limitMem"),
-		MinReplicas: c.Int("minReplicas"),
-		MaxReplicas: c.Int("maxReplicas"),
+		Name:           c.String("name"),
+		Namespace:      c.String("namespace"),
+		Image:          c.String("image"),
+		Secret:         c.String("secret"),
+		Replicas:       c.Int("replicas"),
+		Revisions:      c.Int("revisions"),
+		Port:           c.Int("port"),
+		NodePort:       nodePort,
+		UseNodePort:    nodePort > 0,
+		RequestCpu:     c.Int("requestCpu"),
+		RequestMem:     c.Int("requestMem"),
+		LimitCpu:       c.Int("limitCpu"),
+		LimitMem:       c.Int("limitMem"),
+		MinReplicas:    c.Int("minReplicas"),
+		MaxReplicas:    c.Int("maxReplicas"),
+		ServiceAccount: c.String("serviceAccount"),
 	})
 	if err != nil {
 		return err