@@ -130,45 +130,57 @@ spec:
130
130
const mainTmpl = `package main
131
131
132
132
import (
133
- "context"
134
- "runtime"
133
+ "context"
134
+ "runtime"
135
+ "net/http"
135
136
136
- stub "{{.StubImport}}"
137
- sdk "{{.OperatorSDKImport}}"
138
- k8sutil "{{.K8sutilImport}}"
137
+ stub "{{.StubImport}}"
138
+ sdk "{{.OperatorSDKImport}}"
139
+ k8sutil "{{.K8sutilImport}}"
139
140
sdkVersion "{{.SDKVersionImport}}"
140
-
141
+
141
142
"github.com/prometheus/client_golang/prometheus/promhttp"
142
- "github.com/sirupsen/logrus"
143
+ "github.com/sirupsen/logrus"
143
144
)
144
145
145
- // Prometheus metrics port
146
- const promPort = ":9090"
147
-
148
146
func printVersion() {
149
- logrus.Infof("Go Version: %s", runtime.Version())
150
- logrus.Infof("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)
147
+ logrus.Infof("Go Version: %s", runtime.Version())
148
+ logrus.Infof("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)
151
149
logrus.Infof("operator-sdk Version: %v", sdkVersion.Version)
152
- logrus.Infof("operator prometheus port :%s", promPort)
150
+ logrus.Infof("operator prometheus port %s", "{{.MetricsPort}}")
151
+ }
152
+
153
+ func initOperatorService() {
154
+ service, err := k8sutil.InitOperatorService()
155
+ if err != nil {
156
+ logrus.Fatalf("Failed to init operator service: %v", err)
157
+ }
158
+ err = sdk.Create(service)
159
+ if err != nil {
160
+ logrus.Infof("Failed to create operator service: %v", err)
161
+ return
162
+ }
163
+ logrus.Infof("Service %s have been created", service.Name)
153
164
}
154
165
155
166
func main() {
156
- printVersion()
167
+ printVersion()
168
+ initOperatorService()
157
169
158
170
http.Handle("/metrics", promhttp.Handler())
159
- logrus.Fatalf("%s", http.ListenAndServe(promPort , nil) )
160
-
161
- resource := "{{.APIVersion}}"
162
- kind := "{{.Kind}}"
163
- namespace, err := k8sutil.GetWatchNamespace()
164
- if err != nil {
165
- logrus.Fatalf("Failed to get watch namespace: %v", err)
166
- }
167
- resyncPeriod := 5
168
- logrus.Infof("Watching %s, %s, %s, %d", resource, kind, namespace, resyncPeriod)
169
- sdk.Watch(resource, kind, namespace, resyncPeriod)
170
- sdk.Handle(stub.NewHandler())
171
- sdk.Run(context.TODO())
171
+ go http.ListenAndServe("{{.MetricsPort}}" , nil)
172
+
173
+ resource := "{{.APIVersion}}"
174
+ kind := "{{.Kind}}"
175
+ namespace, err := k8sutil.GetWatchNamespace()
176
+ if err != nil {
177
+ logrus.Fatalf("Failed to get watch namespace: %v", err)
178
+ }
179
+ resyncPeriod := 5
180
+ logrus.Infof("Watching %s, %s, %s, %d", resource, kind, namespace, resyncPeriod)
181
+ sdk.Watch(resource, kind, namespace, resyncPeriod)
182
+ sdk.Handle(stub.NewHandler())
183
+ sdk.Run(context.TODO())
172
184
}
173
185
`
174
186
@@ -524,6 +536,8 @@ const operatorYamlTmpl = `apiVersion: apps/v1
524
536
kind: Deployment
525
537
metadata:
526
538
name: {{.ProjectName}}
539
+ labels:
540
+ name: {{.ProjectName}}
527
541
spec:
528
542
replicas: 1
529
543
selector:
@@ -537,14 +551,19 @@ spec:
537
551
containers:
538
552
- name: {{.ProjectName}}
539
553
image: {{.Image}}
554
+ ports:
555
+ - containerPort: {{.MetricsPort}}
556
+ name: metrics
540
557
command:
541
558
- {{.ProjectName}}
542
559
imagePullPolicy: Always
543
560
env:
544
- - name: WATCH_NAMESPACE
561
+ - name: {{.NamespaceEnv}}
545
562
valueFrom:
546
563
fieldRef:
547
564
fieldPath: metadata.namespace
565
+ - name: {{.NameEnv}}
566
+ value: "{{.ProjectName}}"
548
567
`
549
568
550
569
const rbacYamlTmpl = `kind: Role
0 commit comments