initial commit
This commit is contained in:
commit
7715fcf373
37 changed files with 2957 additions and 0 deletions
72
cmd/vipman/main.go
Normal file
72
cmd/vipman/main.go
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"git.giftfish.de/ston1th/vipman/pkg/cluster"
|
||||
"git.giftfish.de/ston1th/vipman/pkg/config"
|
||||
"git.giftfish.de/ston1th/vipman/pkg/controller"
|
||||
"git.giftfish.de/ston1th/vipman/pkg/etcd"
|
||||
"git.giftfish.de/ston1th/vipman/pkg/raft"
|
||||
"github.com/go-logr/logr"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/klog/v2/klogr"
|
||||
)
|
||||
|
||||
var (
|
||||
configFile string
|
||||
version string
|
||||
log logr.Logger
|
||||
)
|
||||
|
||||
func main() {
|
||||
klog.InitFlags(nil)
|
||||
flag.StringVar(&configFile, "config", "vipman.yaml", "vipman config file")
|
||||
flag.Parse()
|
||||
log = klogr.New().WithName("main")
|
||||
log.Info("starting vipman", "version", version)
|
||||
cfg, err := config.ParseFile(configFile)
|
||||
if err != nil {
|
||||
klog.Fatalf("init failed: %s", err)
|
||||
}
|
||||
|
||||
var c cluster.Cluster
|
||||
if cfg.Cluster.Raft != nil {
|
||||
log.Info("creating cluster", "mode", "raft")
|
||||
c = raft.NewCluster(klogr.New().WithName("raft"))
|
||||
} else if cfg.Cluster.Etcd != nil {
|
||||
log.Info("creating cluster", "mode", "etcd")
|
||||
c = etcd.NewCluster(klogr.New().WithName("etcd"))
|
||||
}
|
||||
callbacks, err := controller.NewVIPController(cfg)
|
||||
if err != nil {
|
||||
klog.Fatalf("init failed: %s", err)
|
||||
}
|
||||
err = c.SetCallbacks(callbacks)
|
||||
if err != nil {
|
||||
klog.Fatalf("init failed: %s", err)
|
||||
}
|
||||
go func() {
|
||||
err = c.Start(cfg)
|
||||
if err != nil {
|
||||
klog.Fatalf("init failed: %s", err)
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
sig := make(chan os.Signal)
|
||||
signal.Notify(sig, syscall.SIGHUP)
|
||||
for {
|
||||
<-sig
|
||||
c.Stepdown()
|
||||
}
|
||||
}()
|
||||
sigs := make(chan os.Signal)
|
||||
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-sigs
|
||||
log.Info("vipman shutdown")
|
||||
c.Stop()
|
||||
log.Info("vipman stopped")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue