forked from cisco-app-networking/networkservicemesh
/
main.go
74 lines (58 loc) · 1.99 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"context"
"net"
"os"
"strings"
"github.com/sirupsen/logrus"
"cisco-app-networking.github.io/networkservicemesh/k8s/pkg/registryserver"
k8s_utils "cisco-app-networking.github.io/networkservicemesh/k8s/pkg/utils"
"cisco-app-networking.github.io/networkservicemesh/pkg/tools"
"cisco-app-networking.github.io/networkservicemesh/pkg/tools/jaeger"
"cisco-app-networking.github.io/networkservicemesh/pkg/tools/spanhelper"
"cisco-app-networking.github.io/networkservicemesh/utils"
)
var version string
func main() {
logrus.Info("Starting nsmd-k8s...")
logrus.Infof("Version: %v", version)
utils.PrintAllEnv(logrus.StandardLogger())
// Capture signals to cleanup before exiting
c := tools.NewOSSignalChannel()
closer := jaeger.InitJaeger("nsmd-k8s")
defer func() { _ = closer.Close() }()
address := os.Getenv("NSMD_K8S_ADDRESS")
if strings.TrimSpace(address) == "" {
address = "0.0.0.0:5000"
}
span := spanhelper.FromContext(context.Background(), "Start-NSMD-k8s")
defer span.Finish()
nsmName, ok := os.LookupEnv("NODE_NAME")
span.LogObject("address", address)
span.LogObject("nsmName", nsmName)
if !ok {
span.Logger().Fatalf("You must set env variable NODE_NAME to match the name of your Node. See https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/")
}
span.LogValue("NODE_NAME", nsmName)
span.Logger().Println("Starting NSMD Kubernetes on " + address + " with NsmName " + nsmName)
nsmClientSet, _, err := k8s_utils.NewClientSet()
if err != nil {
span.LogError(err)
span.Logger().Fatalln("Fail to start NSMD Kubernetes service", err)
}
server := registryserver.New(span.Context(), nsmClientSet, nsmName)
listener, err := net.Listen("tcp", address)
if err != nil {
span.Logger().Fatalln(err)
}
span.Logger().Print("nsmd-k8s initialized and waiting for connection")
go func() {
err = server.Serve(listener)
if err != nil {
span.LogError(err)
span.Logger().Fatalln(err)
}
}()
span.Finish()
<-c
}