Skip to content
This repository was archived by the owner on Jan 22, 2021. It is now read-only.

Commit f2fab73

Browse files
committed
added ingress controller
1 parent a668f6c commit f2fab73

File tree

10 files changed

+469
-73
lines changed

10 files changed

+469
-73
lines changed

cmd/inject.go

-26
This file was deleted.

cmd/root.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package cmd
22

33
import (
44
"fmt"
5-
"github.com/golang/glog"
5+
"github.com/TykTechnologies/tyk-k8s/tyk"
66
"os"
77

88
"github.com/mitchellh/go-homedir"
@@ -63,8 +63,9 @@ func initConfig() {
6363

6464
// If a config file is found, read it in.
6565
if err := viper.ReadInConfig(); err != nil {
66-
glog.Fatal(err)
66+
log.Fatal(err)
6767
}
6868

69-
glog.Infof("Using config file: %v", viper.ConfigFileUsed())
69+
log.Infof("Using config file: %v", viper.ConfigFileUsed())
70+
tyk.Init()
7071
}

cmd/start.go

+47-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package cmd
22

33
import (
4+
"github.com/TykTechnologies/tyk-k8s/ingress"
45
"github.com/TykTechnologies/tyk-k8s/injector"
6+
"github.com/TykTechnologies/tyk-k8s/logger"
57
"github.com/TykTechnologies/tyk-k8s/webserver"
6-
"github.com/golang/glog"
78
"github.com/spf13/cobra"
89
"github.com/spf13/viper"
10+
"os"
11+
"os/signal"
12+
"sync"
913
)
1014

15+
var log = logger.GetLogger("main")
16+
1117
// startCmd represents the start command
1218
var startCmd = &cobra.Command{
1319
Use: "start",
@@ -21,39 +27,72 @@ the above example starts the sidecar injector and the tyk k8s ingress controller
2127
sConf := &webserver.Config{}
2228
err := viper.UnmarshalKey("Server", sConf)
2329
if err != nil {
24-
glog.Fatalf("no Server entry found in config file: %v", err)
30+
log.Fatalf("no Server entry found in config file: %v", err)
2531
}
2632

2733
// init config for the server
2834
webserver.Server().Config(sConf)
29-
35+
ingressStarted := false
3036
for _, a := range args {
3137
switch a {
3238
case "inject", "injector", "sidecar":
3339
whConf := &injector.Config{}
3440
err := viper.UnmarshalKey("Injector", whConf)
3541
if err != nil {
36-
glog.Fatalf("couldn't read injector config: %v", err)
42+
log.Fatalf("couldn't read injector config: %v", err)
3743
}
3844
whs := &injector.WebhookServer{
3945
SidecarConfig: whConf,
4046
}
4147

4248
webserver.Server().AddRoute("POST", "/inject", whs.Serve)
4349
case "ingress", "ing":
44-
glog.Fatal("not implemented")
45-
//TODO: add ingress controller
50+
ingressStarted = true
51+
ingress.NewController()
52+
err := ingress.Controller().Start()
53+
if err != nil {
54+
log.Fatal(err)
55+
}
56+
log.Info("ingress controller started")
4657
default:
47-
glog.Error("use arguments like 'inject' or 'ingress' to start services")
58+
log.Error("use arguments like 'inject' or 'ingress' to start services")
4859
return
4960

5061
}
5162
}
5263

53-
webserver.Server().Start()
64+
go webserver.Server().Start()
65+
log.Info("web server started")
66+
67+
WaitForCtrlC()
68+
69+
err = webserver.Server().Stop()
70+
if err != nil {
71+
log.Error(err)
72+
}
73+
74+
if ingressStarted {
75+
err = ingress.Controller().Stop()
76+
if err != nil {
77+
log.Error(err)
78+
}
79+
}
5480
},
5581
}
5682

5783
func init() {
5884
rootCmd.AddCommand(startCmd)
5985
}
86+
87+
func WaitForCtrlC() {
88+
var end_waiter sync.WaitGroup
89+
end_waiter.Add(1)
90+
var signal_channel chan os.Signal
91+
signal_channel = make(chan os.Signal, 1)
92+
signal.Notify(signal_channel, os.Interrupt)
93+
go func() {
94+
<-signal_channel
95+
end_waiter.Done()
96+
}()
97+
end_waiter.Wait()
98+
}

docker/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ COPY files/build/tyk-k8s /opt/tyk-k8s/tyk-k8s
55

66
WORKDIR /opt/tyk-k8s
77

8-
CMD ["/opt/goproxy/tyk-k8s", "start", "injector"]
8+
CMD ["/opt/goproxy/tyk-k8s", "start", "injector", "ingress"]

0 commit comments

Comments
 (0)