new logger and etcd fixes

This commit is contained in:
ston1th 2021-10-09 16:52:06 +02:00
commit cbd4f38cca
11 changed files with 248 additions and 161 deletions

View file

@ -15,14 +15,15 @@ import (
"git.giftfish.de/ston1th/haproxy-lb/pkg/etcd"
"git.giftfish.de/ston1th/haproxy-lb/pkg/raft"
"github.com/go-logr/logr"
"k8s.io/klog/v2"
"k8s.io/klog/v2/klogr"
"github.com/iand/logfmtr"
)
var (
configFile string
version string
log logr.Logger
verbosity int
log logr.Logger
)
func fatal(err error, msg string) {
@ -31,10 +32,19 @@ func fatal(err error, msg string) {
}
func main() {
klog.InitFlags(nil)
logopts := logfmtr.DefaultOptions()
logopts.TimestampFormat = "2006-01-02T15:04:05.000Z-0700"
logopts.AddCaller = true
logopts.CallerSkip = 1
logfmtr.UseOptions(logopts)
flag.IntVar(&verbosity, "v", verbosity, "number for the log level verbosity")
flag.StringVar(&configFile, "config", "haproxy-lb.yaml", "haproxy-lb config file")
flag.Parse()
log = klogr.New().WithName("main")
logfmtr.SetVerbosity(verbosity)
log = logfmtr.New().WithName("main")
log.Info("starting haproxy-lb", "version", version)
cfg, err := config.ParseFile(configFile)
if err != nil {
@ -44,19 +54,19 @@ func main() {
var c cluster.Cluster
if cfg.Cluster.Raft != nil {
log.Info("creating cluster", "mode", "raft")
c = raft.NewCluster(klogr.New().WithName("raft"))
c = raft.NewCluster(logfmtr.New().WithName("raft"))
} else if cfg.Cluster.Etcd != nil {
log.Info("creating cluster", "mode", "etcd")
c = etcd.NewCluster(klogr.New().WithName("etcd"))
c = etcd.NewCluster(logfmtr.New().WithName("etcd"))
}
log.Info("starting api server", "address", cfg.Server.Listen, "tls", cfg.Server.TLS != nil)
srv, err := api.NewServer(cfg, klogr.New().WithName("api"))
srv, err := api.NewServer(cfg, logfmtr.New().WithName("api"))
if err != nil {
fatal(err, "init failed")
}
log.Info("starting vip-controller")
callbacks, err := controller.NewLBController(cfg, srv, klogr.New().WithName("vip-controller"))
callbacks, err := controller.NewLBController(cfg, srv, logfmtr.New().WithName("vip-controller"))
if err != nil {
fatal(err, "init failed")
}
@ -65,9 +75,17 @@ func main() {
fatal(err, "init failed")
}
go func() {
err = c.Start(cfg)
if err != nil {
fatal(err, "init failed")
for {
err = c.Start(cfg)
if err == cluster.ErrRestart {
log.Error(err, "recieved restart signal. restarting cluster controller.")
c.Reset()
time.Sleep(time.Second)
continue
}
if err != nil {
fatal(err, "init failed")
}
}
}()
go func() {