Repository navigation
Expand file tree
/
Copy pathmain.go
More file actions
62 lines (51 loc) · 1.78 KB
/
Copy pathmain.go
File metadata and controls
62 lines (51 loc) · 1.78 KB
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
package main
import (
"flag"
"fmt"
"log/slog"
"os"
"os/signal"
"syscall"
"github.com/kubestellar/console/pkg/agent"
"github.com/kubestellar/console/pkg/safego"
// Blank-import federation providers so their init() funcs register them.
_ "github.com/kubestellar/console/pkg/agent/federation/providers"
)
func main() {
// Set up structured logging — JSON for production, human-readable text for dev.
logHandler := buildLogHandler(os.Stderr, os.Getenv("DEV_MODE") == "true")
slog.SetDefault(slog.New(logHandler))
port := flag.Int("port", 8585, "Port to listen on")
kubeconfig := flag.String("kubeconfig", "", "Path to kubeconfig file")
allowedOrigins := flag.String("allowed-origins", "", "Comma-separated list of additional allowed WebSocket origins")
version := flag.Bool("version", false, "Print version and exit")
flag.Parse()
if *version {
fmt.Printf("kc-agent version %s (commit: %s, built: %s)\n", agent.Version, agent.CommitSHA, agent.BuildTime)
os.Exit(0)
}
slog.Info("KubeStellar Console - Local Agent starting", "version", agent.Version, "commit", agent.CommitSHA, "built", agent.BuildTime)
// Parse comma-separated allowed origins from flag
origins := parseAllowedOrigins(*allowedOrigins)
server, err := agent.NewServer(agent.Config{
Port: *port,
Kubeconfig: *kubeconfig,
AllowedOrigins: origins,
})
if err != nil {
slog.Error("failed to create server", "error", err)
os.Exit(1)
}
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
safego.GoWith("signal-handler", func() {
<-sigChan
slog.Info("Shutting down — waiting for in-flight cluster operations")
server.GracefulShutdown()
os.Exit(0)
})
if err := server.Start(); err != nil {
slog.Error("server error", "error", err)
os.Exit(1)
}
}